{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Trends & Pin Scraper - Keywords, Saves & Boards",
    "description": "[💵 $3 / 1K · no start fee] Pinterest keyword research plus full pin, board and profile extraction. Related keywords scored with real engagement, accurate save counts, outbound destination links, full-resolution images and direct video URLs. No login, no API key.",
    "version": "0.1",
    "x-build-id": "NLz2d1qhAVbOqtGcF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/webdata_labs~pinterest-trends-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-webdata_labs-pinterest-trends-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/webdata_labs~pinterest-trends-scraper/runs": {
      "post": {
        "operationId": "runs-sync-webdata_labs-pinterest-trends-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/webdata_labs~pinterest-trends-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-webdata_labs-pinterest-trends-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": "Pinterest keyword searches. Each query is paged until the per-source cap or the total result cap is reached. Example: \"minimalist kitchen\". Paste a pinterest.com/search/pins/?q=... URL here and the keyword is read out of it.",
            "items": {
              "type": "string"
            }
          },
          "trendKeywords": {
            "title": "Keyword research seeds",
            "type": "array",
            "description": "Seed keywords for keyword research. For each seed the Actor pulls the related keywords Pinterest itself ranks for it, then measures the top pins behind every one of them - median and peak saves, share of pins carrying an outbound link, share of video, and the domains that already rank. Returns keyword rows, not pin rows.",
            "items": {
              "type": "string"
            }
          },
          "boardUrls": {
            "title": "Board URLs",
            "type": "array",
            "description": "Full Pinterest board URLs such as https://www.pinterest.com/homedit/kitchen-decor-remodel/. Returns one board row with pin count, follower count and section count, followed by the board's pins.",
            "items": {
              "type": "string"
            }
          },
          "profiles": {
            "title": "Profiles",
            "type": "array",
            "description": "Pinterest usernames or profile URLs - \"homedit\", \"@homedit\" and https://www.pinterest.com/homedit/ all work. Returns the profile row, its boards, then the pins the creator published.",
            "items": {
              "type": "string"
            }
          },
          "pinUrls": {
            "title": "Pin URLs or pin IDs",
            "type": "array",
            "description": "Individual pins as full URLs (https://www.pinterest.com/pin/53972895529306045/) or bare numeric IDs. This mode always fetches the full pin detail, which is the only place Pinterest exposes the accurate aggregated save count. pin.it short links are not supported - open one and paste the URL it lands on.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Mixed Pinterest URLs",
            "type": "array",
            "description": "A catch-all for any mix of pin, board, profile and search URLs - each one is routed to the right mode automatically. Use this when you have a list of links and do not want to sort them by type first.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Total rows for the whole run, across every source. The default keeps a first run cheap; set 0 for unlimited - there is no hard ceiling.",
            "default": 100
          },
          "maxPinsPerSource": {
            "title": "Max pins per source",
            "minimum": 0,
            "type": "integer",
            "description": "Cap pins taken from each individual query, board or profile, so one huge board cannot consume the whole run. 0 means no per-source cap.",
            "default": 0
          },
          "pinType": {
            "title": "Media type",
            "enum": [
              "all",
              "image",
              "video"
            ],
            "type": "string",
            "description": "Keep only image pins, only video pins, or everything. Choosing \"video\" makes search runs fetch full pin detail, because Pinterest omits video URLs from search results.",
            "default": "all"
          },
          "minSaves": {
            "title": "Minimum saves",
            "minimum": 0,
            "type": "integer",
            "description": "Drop pins saved fewer times than this - the simplest way to get only pins that already proved they work. Search runs fetch full pin detail when this is set, because Pinterest omits save counts from search results.",
            "default": 0
          },
          "onlyWithOutboundLink": {
            "title": "Only pins linking off Pinterest",
            "type": "boolean",
            "description": "Keep only pins that carry a destination URL to another site, dropping user-uploaded pins that link nowhere. This is the filter for affiliate and SEO research, where a pin without a destination is worthless.",
            "default": false
          },
          "relatedKeywordDepth": {
            "title": "Keyword expansion depth",
            "minimum": 1,
            "maximum": 2,
            "type": "integer",
            "description": "Only used by keyword research seeds. 1 measures the seed plus the related keywords Pinterest ranks for it. 2 expands the strongest of those one level further, for a much wider keyword map and a proportionally longer run.",
            "default": 1
          },
          "country": {
            "title": "Country",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "PT",
              "BR",
              "MX",
              "PL",
              "SE",
              "JP",
              "IN"
            ],
            "type": "string",
            "description": "Which country's Pinterest results to collect. Pinterest ranks pins and related keywords differently per market, so this changes what comes back, not just the labels.",
            "default": "US"
          },
          "includeBoards": {
            "title": "Include a profile's boards",
            "type": "boolean",
            "description": "When scraping a profile, also return one row per board the creator owns, before their pins. Turn this off to get pins only.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}