{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Scraper - Pins, Boards, Profiles & Leads",
    "description": "Scrape Pinterest by keyword, pin, board or profile URL: pins with images, videos, outbound links, saves and prices, full boards, creator profiles, and contact-ready creator leads. Monitor for new pins. No login. Export to JSON, CSV or Excel. Independent tool, not affiliated with Pinterest.",
    "version": "0.1",
    "x-build-id": "dQgwpLeBm5QZVjjch"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~pinterest-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-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/scrapesage~pinterest-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-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/scrapesage~pinterest-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-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": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "One or more keywords to search Pinterest for. Use the 'Search type' below to pick whether each keyword returns pins, boards or profiles. Several keywords share 'Max results' fairly. A keyword Pinterest has no real pins for (gibberish, a dead product code) is skipped and nothing is billed for it.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search type",
            "enum": [
              "pins",
              "boards",
              "users"
            ],
            "type": "string",
            "description": "What your keyword searches return: Pins (images/videos with links & prices), Boards, or Profiles (creators, opened in full with their public contact details).",
            "default": "pins"
          },
          "pinUrls": {
            "title": "Pin URLs",
            "type": "array",
            "description": "Specific pin URLs (e.g. `https://www.pinterest.com/pin/12345/`), pin.it short links or pin IDs. Each pin is opened in full (saves, comments, shares, product price and rating), so each one is billed as 'Pin scraped with full details'.",
            "items": {
              "type": "string"
            }
          },
          "boardUrls": {
            "title": "Board URLs",
            "type": "array",
            "description": "Board URLs (e.g. `https://www.pinterest.com/username/board-slug/`). Returns the board details and, by default, its pins.",
            "items": {
              "type": "string"
            }
          },
          "usernames": {
            "title": "Profiles / usernames",
            "type": "array",
            "description": "Pinterest usernames or profile URLs (e.g. `nike` or `https://www.pinterest.com/nike/`). Returns the full profile (followers, monthly views, website, public contact email/phone when the business shows them) and, by default, the creator's pins.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (any Pinterest URL)",
            "type": "array",
            "description": "Mixed list of Pinterest URLs - pins, boards, profiles, search pages, /ideas/ topic pages or pin.it short links. Each is auto-routed to the right scraper. Handy when you have a list and don't want to sort it.",
            "items": {
              "type": "string"
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of Pinterest URLs (pins, boards, profiles or search pages; one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Each URL is auto-routed like Start URLs. Google Sheet/Drive share links are handled automatically."
          },
          "includePinDetails": {
            "title": "Enrich pins with full details",
            "type": "boolean",
            "description": "Open each pin for its full detail: save, comment and share counts, product rating and price data, and Pinterest's topic tags. Adds one request per pin and bills the pin as 'Pin scraped with full details' instead of 'Pin scraped'. Off = the search/board/profile card (title, image or video, link, topics, reactions; pins from boards and profiles already include save counts). Pinterest opens pins in full only from profiles and pin URLs: pins found by a keyword search or on a board keep their card and are billed as 'Pin scraped'.",
            "default": false
          },
          "includeBoardPins": {
            "title": "Include board pins",
            "type": "boolean",
            "description": "When scraping a board, also extract the pins inside it (not just the board summary).",
            "default": true
          },
          "maxPinsPerBoard": {
            "title": "Max pins per board",
            "minimum": 0,
            "type": "integer",
            "description": "Limit pins scraped per board (0 = no limit). In monitor mode this is how many of the board's latest pins are checked for new ones.",
            "default": 100
          },
          "includeUserPins": {
            "title": "Include profile pins",
            "type": "boolean",
            "description": "When scraping a profile, also extract the creator's own pins.",
            "default": true
          },
          "includeUserBoards": {
            "title": "Include profile boards",
            "type": "boolean",
            "description": "When scraping a profile, also extract the creator's boards.",
            "default": false
          },
          "maxPinsPerUser": {
            "title": "Max pins per profile",
            "minimum": 0,
            "type": "integer",
            "description": "Limit pins scraped per profile (0 = no limit). In monitor mode this is how many of the creator's latest pins are checked for new ones.",
            "default": 100
          },
          "outputCreatorLeads": {
            "title": "Output creator leads",
            "type": "boolean",
            "description": "For every unique creator behind the pins you scrape, output a contact-ready lead record: public contact email and phone (when the business shows them), website, Instagram, follower count, monthly views, last activity and a 0-100 lead score. Great for influencer/affiliate outreach and merchant prospecting. Billed per lead as 'Creator lead'.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Overall cap on the number of pins + boards + profiles in the dataset (creator leads are not counted against this). Several keywords, boards or profiles share it fairly, and any share one of them cannot use goes to the others. Use a small number for quick test runs.",
            "default": 200
          },
          "monitorMode": {
            "title": "Monitor mode (only new pins)",
            "type": "boolean",
            "description": "Deliver ONLY pins published since the previous run with the same 'Monitor key': each keyword, board and profile remembers the newest pin it saw (the first run delivers the current results as a baseline), and nothing is ever delivered twice. Boards, profiles and creator leads are delivered once per key. Each run checks the top results of each keyword (up to its share of Max results) and the latest pins of each board/profile. Pair with Apify Schedules for a 'new pins for this keyword/board/profile' feed. A run with nothing new bills nothing.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "Names the memory bucket for monitor mode. Use a different key per saved search/board so their 'seen' histories don't mix.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Maximum parallel requests.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Pinterest is light on anti-bot, so the default Apify datacenter proxy is plenty; switch the group to RESIDENTIAL if you ever see blocks at high volume.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}