{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Scraper - Pins, Boards, Profiles & Saves, No Login",
    "description": "Scrape Pinterest without login: keyword search for pins, videos, boards or profiles, plus board, profile, pin, pin.it and search links. Saves, outbound link, MP4 video, profile followers. Hard caps per input and per run. US$ 1.20 per 1,000 rows, errors free.",
    "version": "0.1",
    "x-build-id": "N4VUKpME8vZIR5fs7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~pinterest-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-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/scrapewise~pinterest-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-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/scrapewise~pinterest-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-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": "Keywords as you would type them in the Pinterest search box, one per line (for example kitchen ideas or fall outfits). Each keyword returns the pins Pinterest shows for it, page after page, up to 'Max pins per keyword, board or profile', and every row keeps its keyword. Leave every list empty to run the example 'kitchen ideas'. Also accepts 'keywords', 'queries' or 'search'.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search for",
            "enum": [
              "pins",
              "videos",
              "boards",
              "profiles"
            ],
            "type": "string",
            "description": "What the keyword search returns: Pins (default, all pins), Videos (only video pins), Boards (board rows with name, owner and pin count) or Profiles (creator profile rows). With Profiles, the profile links below also return only the profile row, no pins. Also accepts 'type' with the same values.",
            "default": "pins"
          },
          "boardUrls": {
            "title": "Board links",
            "type": "array",
            "description": "Pinterest board links, one per line (for example https://www.pinterest.com/username/board-name/). Returns the board's pins in board order, with saves, comment counts and video links already included. Also accepts 'boards'.",
            "items": {
              "type": "string"
            }
          },
          "profiles": {
            "title": "Profiles",
            "type": "array",
            "description": "Pinterest usernames or profile links, one per line (for example nytcooking or https://www.pinterest.com/nytcooking/). Returns the pins the profile saved, newest first. Turn on the profile row options below to also get followers, website and counts. Also accepts 'usernames' or 'profileUrls'.",
            "items": {
              "type": "string"
            }
          },
          "includeProfileDetails": {
            "title": "Add a profile row (followers, pins, boards, website)",
            "type": "boolean",
            "description": "For each profile, also delivers one row with the profile itself: display name, about, website and domain, verified badge, followers, following, pin and board counts, profile and cover image. Useful to qualify creators or brands. Billed as one pin per profile. Off by default.",
            "default": false
          },
          "profileDetailsOnly": {
            "title": "Profile row only, no pins",
            "type": "boolean",
            "description": "Delivers only the profile row for each profile, with no pins, for a fast and cheap list of follower counts and websites. Billed as one pin per profile. Off by default. Also accepts 'includeUserInfoOnly'.",
            "default": false
          },
          "pinUrls": {
            "title": "Links (pin, pin.it, board, profile or search)",
            "type": "array",
            "description": "Any Pinterest link, one per line: pin pages (pinterest.com/pin/1234567890), pin.it short links, board links, profile links, search pages (/search/pins/?q=...) and idea pages. Each link is recognized and read the right way automatically; a pin link returns that single pin with full details. Also accepts 'urls' or 'startUrls'.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max pins per keyword, board or profile",
            "minimum": 1,
            "type": "integer",
            "description": "Upper limit of pins for each keyword, board or profile (default 100 when empty). With 3 keywords and 100 here a run delivers up to 300 pins. You pay per pin delivered, so this is the main cost control. Also accepts 'maxPinsPerSource', 'limit', 'maxPins' or 'maxResults'."
          },
          "maxTotalItems": {
            "title": "Max rows in the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap across all keywords, boards, profiles and links together (for example 1000). 0 (default) means no run cap, so only the per-input limit applies. The run's own 'max items' setting in the API is respected too.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only new pins since the last run",
            "type": "boolean",
            "description": "For scheduled runs. Remembers which pins of each search, board or profile were already delivered (in a named key-value store in your account, 'pinterest-scraper-only-new') and skips them on later runs: not delivered, not charged and not counted toward the limit. Profiles stop at the first pin you already have; searches deliver pins created after the watch started; boards stop at the first page with nothing new. A run with nothing new ends successfully and charges nothing. Pin links are always delivered. Delete the store to start over. Also accepts 'onlyNewPins'.",
            "default": false
          },
          "includePinDetails": {
            "title": "Add saves, comment counts and MP4 video to search results",
            "type": "boolean",
            "description": "Pinterest search results do not include saves, comment counts or the MP4 video link. This option opens each pin from a keyword search to add them. Same price per pin, but the run is slower (one extra request per pin). Boards and profiles already include them. Off by default. Also accepts 'includeDetails'.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy, on by default with the datacenter group, which Pinterest accepts. Keep the default unless you have your own proxy.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}