{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Scraper: Pins by Keyword, Board or Profile",
    "description": "Scrape public Pinterest pins from keyword searches, board URLs, profile URLs or pin URLs into JSON or CSV. Each pin row has title, description, image URL, saves, repin count, pinner, board and outbound link. $2.00 per 1,000 pins. No login needed.",
    "version": "0.1",
    "x-build-id": "Om63qs0Z9NAfx2AbU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/redfoxscout~pinterest-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-redfoxscout-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/redfoxscout~pinterest-scraper/runs": {
      "post": {
        "operationId": "runs-sync-redfoxscout-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/redfoxscout~pinterest-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-redfoxscout-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": {
          "searchTerms": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords to search Pinterest pins for, one per line, e.g. wedding decor ideas. Paused: since October 2026 Pinterest hides the pins behind search results from signed-out visitors, so a search returns a free error row. Use the URL boxes.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Board, profile or pin URLs",
            "type": "array",
            "description": "Public Pinterest board, profile or pin URLs, one per line, in any mix, e.g. https://www.pinterest.com/pinterest/official-news/. The boxes below take one kind each.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (same as the URL box)",
            "type": "array",
            "description": "The same as the URL box above, for tools that send startUrls. Board, profile and pin URLs can be mixed.",
            "items": {
              "type": "string"
            }
          },
          "boardUrls": {
            "title": "Board URLs",
            "type": "array",
            "description": "Public board URLs, one per line, e.g. https://www.pinterest.com/pinterest/official-news/. Returns the pins on each board.",
            "items": {
              "type": "string"
            }
          },
          "profileUrls": {
            "title": "Profile URLs (pins of a user)",
            "type": "array",
            "description": "Public profile URLs, one per line, e.g. https://www.pinterest.com/nike/. Returns the pins that user created.",
            "items": {
              "type": "string"
            }
          },
          "pinUrls": {
            "title": "Pin URLs (details)",
            "type": "array",
            "description": "Single pin URLs, one per line, e.g. https://www.pinterest.com/pin/1094726622065399703/. Returns one row with that pin's details.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max pins per keyword or URL",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many pins to return for each keyword or URL, from 1 to 1,000. Default 50.",
            "default": 50
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "saves"
            ],
            "type": "string",
            "description": "Pinterest order keeps the order Pinterest returns. Most saves first reads a pool of pins, ranks them by saves and returns the top Max pins per keyword or URL.",
            "default": "relevance"
          },
          "scanPins": {
            "title": "Pins to read before ranking by saves",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Only used with Most saves first. How many pins to read (one Pinterest request each) before picking the most saved. Default 100, maximum 500.",
            "default": 100
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Off by default. When on, each pin row gets its public comments (text, date, likes, commenter name and username) as the pin page shows them to logged-out visitors. A few more requests per pin that has comments; no extra charge.",
            "default": false
          },
          "maxCommentsPerPin": {
            "title": "Max comments per pin",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only used with Include comments. How many comments to keep for each pin, from 1 to 100. Default 20.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default. Turn it on only if Pinterest blocks runs without a proxy. Proxy traffic is billed by Apify on top of this Actor's price.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxConcurrency": {
            "title": "Searches in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many searches run at once.",
            "default": 3
          },
          "datasetId": {
            "title": "Websites from another Actor (not used)",
            "type": "string",
            "description": "Not used by this Actor. Kept so that older inputs still load."
          },
          "datasetUrlField": {
            "title": "Field with the website (not used)",
            "type": "string",
            "description": "Not used by this Actor. Kept so that older inputs still load.",
            "default": "website"
          },
          "maxDatasetItems": {
            "title": "Max dataset rows (not used)",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Not used by this Actor. Kept so that older inputs still load.",
            "default": 10000
          },
          "monitorName": {
            "title": "Change alert name (not used)",
            "type": "string",
            "description": "Not used by this Actor. Kept so that older inputs still load."
          },
          "onlyChanges": {
            "title": "Only new and changed sites (not used)",
            "type": "boolean",
            "description": "Not used by this Actor. Kept so that older inputs still load.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}