{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Scraper: Pins, Boards, Profiles, Search | $0.50/1K",
    "description": "Scrape Pinterest pins, boards, board sections, profiles and searches without an account: full-size image, outbound link, title, description, date, saves, pinner and board. Duplicates removed before you pay, full boards despite Pinterest's false end of feed, new-pins-only monitoring and webhook.",
    "version": "0.1",
    "x-build-id": "iYLHbyrnwk5fNCOfP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alexmorain~pinterest-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alexmorain-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/alexmorain~pinterest-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alexmorain-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/alexmorain~pinterest-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alexmorain-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 queries",
            "type": "array",
            "description": "One query per line, as you would type it in Pinterest's search bar. Each query is a separate source: its pins come in Pinterest's order, numbered in <code>position</code>. Pinterest itself ends a search after several hundred distinct pins (840 to 933 on five queries measured in October 2026).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Pinterest URLs",
            "type": "array",
            "description": "One URL per line, from any Pinterest domain (<code>pinterest.com</code>, <code>fr.pinterest.com</code>, <code>pinterest.co.uk</code>...):<br>• a pin: <code>https://www.pinterest.com/pin/252834966578329961/</code><br>• a board: <code>https://www.pinterest.com/IKEAUSA/living-rooms/</code><br>• a board section: <code>https://www.pinterest.com/IKEAUSA/living-rooms/sofas-armchairs/</code><br>• a profile: <code>https://www.pinterest.com/IKEAUSA/</code><br>• a search: <code>https://www.pinterest.com/search/pins/?q=boho%20bedroom</code><br>• a short link: <code>https://pin.it/...</code><br><br>A URL that is not one of these is skipped with a warning in the log and is not charged.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search for",
            "enum": [
              "pins",
              "videos"
            ],
            "type": "string",
            "description": "Applies to <b>Search queries</b> only. <b>Pins</b> searches everything; <b>Videos</b> returns video pins only, with their video URL and duration.",
            "default": "pins"
          },
          "maxPinsPerSource": {
            "title": "Max pins per source",
            "minimum": 0,
            "type": "integer",
            "description": "Stops each search, board, section or profile after this many pins. The cap applies per source, so three queries with a cap of 100 can return up to 300 pins. A pin URL always counts as one.<br><br><b>Keep a cap on your first run</b>: a big board or profile holds thousands of pins, and you pay per pin. Set <code>0</code> for no limit.",
            "default": 100
          },
          "includeProfilePins": {
            "title": "Profiles: include their pins",
            "type": "boolean",
            "description": "For profile URLs, return the pins the profile created (up to <b>Max pins per source</b>), after the profile row. Turn off to get only the profile row: followers, monthly views, pin and board counts, website.",
            "default": true
          },
          "includeProfileBoards": {
            "title": "Profiles: include their boards",
            "type": "boolean",
            "description": "For profile URLs, also return one row per public board: name, URL, pin count, followers, sections. Boards are not capped by <b>Max pins per source</b>.",
            "default": false
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "all",
              "new-only"
            ],
            "type": "string",
            "description": "<b>All pins</b> returns every pin each source gives, on every run.<br><br><b>New pins only</b> keeps a registry of every pin earlier runs returned and charged, and returns only pins never seen before. Schedule it to watch a search, a board or a profile: a quiet day costs the start fee alone. The first run returns everything, since nothing has been seen yet. Each source is still read up to <b>Max pins per source</b>, because Pinterest does not sort feeds by date. Profile and board rows are always returned, as a fresh snapshot of their counts.<br><br>A pin stopped by your maximum charge before being billed is not recorded, so it comes back on the next run.",
            "default": "all"
          },
          "registryKey": {
            "title": "Registry key",
            "type": "string",
            "description": "Only used by <b>New pins only</b>. Leave empty and the registry is named after your sources (queries and URLs), so the same input always finds its own memory. Set it only to make several schedules share one memory."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "If set, the Actor POSTs a small JSON summary to this URL at the end of the run, <b>only when at least one item was returned</b>: <code>actor</code>, <code>runId</code>, <code>datasetId</code>, <code>mode</code>, <code>items</code>, <code>byType</code>, <code>sources</code>. With New pins only and a schedule, that is a notification when something new appears.<br><br>Use the final URL: a redirect is not followed, except a 307 or 308. An unreachable webhook is logged as a warning and never fails the run. Stored encrypted, since a webhook URL often carries its own token."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave as is. Pinterest answers Apify's datacenter proxies without blocks; each retry moves to a new IP. Residential proxies are not needed.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}