{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Scraper & API — Pins, Boards, Search | $1.99/1k",
    "description": "Scrape Pinterest pins and boards by keyword, the pins of any board, or single pins by URL. Titles, descriptions, outbound links and domains, image URLs, video URLs, alt text, engagement counts and dominant colour. No login and no pinner identity data. Export to CSV, JSON or Excel.",
    "version": "0.1",
    "x-build-id": "GAdfyh7vzM4G4yt5D"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glasswing~pinterest-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glasswing-pinterest-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/glasswing~pinterest-scraper/runs": {
      "post": {
        "operationId": "runs-sync-glasswing-pinterest-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/glasswing~pinterest-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-glasswing-pinterest-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Pinterest URLs (search, board or pin)",
            "uniqueItems": true,
            "type": "array",
            "description": "Pinterest pages to scrape, one per line. Three kinds are accepted. A search page, for example https://www.pinterest.com/search/pins/?q=coffee , returns the results of that search. A board, https://www.pinterest.com/<owner>/<board>/ , returns the pins saved on that board. A single pin, https://www.pinterest.com/pin/<id>/ , returns one detailed row with engagement counts and, for a video pin, the video URL. Country domains (pinterest.co.uk, pinterest.de, ...) work too, and a bare keyword such as `coffee` is accepted as a shortcut. Profile URLs and `/search/users/` are refused on purpose, each with one free explanatory row, because this Actor does not collect people.",
            "default": [
              "https://www.pinterest.com/search/pins/?q=coffee"
            ],
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Search keyword",
            "type": "string",
            "description": "One keyword to search for, exactly as you would type it into the Pinterest search box (for example `minimalist home office`). Searched at the Scope selected below. Can be combined with the URLs above: it simply adds one more search. To search several keywords in one run, use Keywords instead."
          },
          "queries": {
            "title": "Keywords",
            "uniqueItems": true,
            "type": "array",
            "description": "Several keywords in one run, one per line (for example `cold brew`, `matcha latte`, `espresso bar`). Each keyword is searched at the Scope selected below, and every row says which keyword found it in `searchQuery`. Maximum results is shared evenly between the searches unless you set Maximum results per search. When Keywords are given and the URL field still holds only the built-in coffee example, the example is skipped.",
            "items": {
              "type": "string"
            }
          },
          "scope": {
            "title": "Scope",
            "enum": [
              "pins",
              "boards"
            ],
            "type": "string",
            "description": "What a keyword search should return: individual pins, or the boards that match the keyword. Applies to the Search keyword, to Keywords, and to any search URL that does not name a scope itself. Board and pin URLs are not affected.",
            "default": "pins"
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many rows have been saved to the dataset, across all keywords and URLs (for example, 100 for a quick check or 5000 for a full pull). Each saved row with status `ok` is one billable result (or one trend keyword). One request to Pinterest returns 25-100 results, so small runs finish in seconds.",
            "default": 20
          },
          "maxItemsPerQuery": {
            "title": "Maximum results per search",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. The most rows any one keyword, search URL or board may add to the dataset (for example, 50 to cap every keyword at 50 rows even though Maximum results allows more). Leave empty to let a single search or board use everything up to Maximum results; with Keywords, leaving it empty shares Maximum results evenly between the searches."
          },
          "trendsRegions": {
            "title": "Trends regions (Pinterest Trends)",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick one or more regions to also get the trending Pinterest search keywords there, from the public Pinterest Trends site: one row per keyword with its rank, relative search volume (0-100) and weekly, monthly and yearly growth in percent. Leave empty for no trends. Each region (times each category below) is one list. Trend rows are billed as `Trend keyword`, not as `Result`. When regions are picked and the URL field still holds only the built-in coffee example, the example is skipped.",
            "items": {
              "type": "string",
              "enum": [
                "US",
                "CA",
                "GB",
                "GB+IE",
                "DE",
                "DE+AT+CH",
                "FR",
                "IT",
                "ES",
                "IT+ES+PT+GR+MT",
                "SE+DK+FI+NO",
                "NL+BE+LU",
                "PL+RO+HU+SK+CZ",
                "CY+CZ+GR+HU+MT+PL+RO+SK",
                "BR",
                "MX",
                "AR",
                "CO",
                "MX+AR+CO+CL",
                "CR+DO+EC+GT+PE",
                "AU+NZ",
                "IN",
                "ID",
                "MY",
                "PH",
                "TH",
                "KR",
                "TR",
                "SA",
                "EG"
              ],
              "enumTitles": [
                "United States (US)",
                "Canada (CA)",
                "United Kingdom (GB)",
                "United Kingdom and Ireland (GB+IE)",
                "Germany (DE)",
                "Germany, Austria and Switzerland (DE+AT+CH)",
                "France (FR)",
                "Italy (IT)",
                "Spain (ES)",
                "Southern Europe (IT+ES+PT+GR+MT)",
                "Nordics (SE+DK+FI+NO)",
                "Benelux (NL+BE+LU)",
                "Central and Eastern Europe (PL+RO+HU+SK+CZ)",
                "Other EU (CY+CZ+GR+HU+MT+PL+RO+SK)",
                "Brazil (BR)",
                "Mexico (MX)",
                "Argentina (AR)",
                "Colombia (CO)",
                "Hispanic Latin America (MX+AR+CO+CL)",
                "Central America and Andes (CR+DO+EC+GT+PE)",
                "Australia and New Zealand (AU+NZ)",
                "India (IN)",
                "Indonesia (ID)",
                "Malaysia (MY)",
                "Philippines (PH)",
                "Thailand (TH)",
                "South Korea (KR)",
                "Turkey (TR)",
                "Saudi Arabia (SA)",
                "Egypt (EG)"
              ]
            }
          },
          "trendsType": {
            "title": "Trends list",
            "enum": [
              "growing",
              "top_monthly",
              "top_yearly",
              "seasonal"
            ],
            "type": "string",
            "description": "Which Pinterest Trends list to read: `Growing` (the fastest-rising searches, default), `Top monthly` or `Top yearly` (the highest search volume), or `Seasonal` (terms that come back every year and are rising now).",
            "default": "growing"
          },
          "trendsCategories": {
            "title": "Trends categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Narrow the trends to one or more Pinterest categories (for example Beauty, Home Decor). Each category is read as its own list per region and every row names it in `trendCategory`. Leave empty for one list across all categories.",
            "items": {
              "type": "string",
              "enum": [
                "animals",
                "architecture",
                "art",
                "beauty",
                "childrens_fashion",
                "design",
                "diy_and_crafts",
                "education",
                "electronics",
                "entertainment",
                "event_planning",
                "finance",
                "food_and_drink",
                "health",
                "home_decor",
                "lawn_and_garden",
                "mens_fashion",
                "parenting",
                "quotes",
                "sports",
                "travel",
                "vehicles",
                "weddings",
                "womens_fashion"
              ],
              "enumTitles": [
                "Animals",
                "Architecture",
                "Art",
                "Beauty",
                "Children's Fashion",
                "Design",
                "DIY and Crafts",
                "Education",
                "Electronics",
                "Entertainment",
                "Event Planning",
                "Finance",
                "Food and Drink",
                "Health",
                "Home Decor",
                "Lawn and Garden",
                "Men's Fashion",
                "Parenting",
                "Quotes",
                "Sports",
                "Travel",
                "Vehicles",
                "Weddings",
                "Women's Fashion"
              ]
            }
          },
          "trendsKeywordFilter": {
            "title": "Trends must contain",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Keep only trending terms that contain one of these words, for example `nails` or `wedding`. A list where nothing matches gives one free `not_found` row.",
            "items": {
              "type": "string"
            }
          },
          "trendsLimit": {
            "title": "Keywords per trends list",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many trending keywords to return per region (and per category), 1-100. Maximum results above still caps the whole run.",
            "default": 50
          },
          "trendsDate": {
            "title": "Trends week ending (optional)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Optional. A date (YYYY-MM-DD) to read the lists as they were in the week ending then, for example `2026-06-30`. Leave empty for the newest week Pinterest has published (usually 1-2 weeks behind today). A date after the newest week is moved back to it; `dataEndDate` on every row says which week you got."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional and off by default. The Actor is HTTP-only and needs no proxy from a normal IP. If Pinterest starts answering 403 or 429, enable Apify Proxy (the datacenter group is the default); residential proxies are not required and not recommended for this Actor.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}