{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinterest Shopping & Product Scraper with Prices",
    "description": "Turn Pinterest shop-the-look pins into a product feed. One row per product with its real price, currency, sale price, discount, stock status, merchant, buy link and image — plus the pin it came from. Search by shopping keyword or paste specific pins. No Pinterest account needed.",
    "version": "0.0",
    "x-build-id": "vMF0M7yzFSBzUNC11"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~pinterest-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-pinterest-product-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/apt_marble~pinterest-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-pinterest-product-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/apt_marble~pinterest-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-pinterest-product-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": {
          "queries": {
            "title": "Shopping keywords",
            "type": "array",
            "description": "What to look for on Pinterest, worded the way a shopper would type it — \"arched cabinet\", \"linen sofa\", \"gold pendant light\". Each term is searched and the pins that contain product entries are opened to collect the products inside them. You can also paste a Pinterest search address and the words are taken from it. Up to 50 terms per run.",
            "default": [
              "arched cabinet"
            ],
            "items": {
              "type": "string"
            }
          },
          "pins": {
            "title": "Specific pins (optional)",
            "type": "array",
            "description": "Addresses of individual Pinterest pins you already know you want the products from, for example https://www.pinterest.com/pin/165859198772351221/. Plain pin numbers work too. Shortened pin.it links cannot be used — open one in a browser and paste the full address it lands on. Up to 1000 pins per run.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxProducts": {
            "title": "Maximum products",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "How many product rows to collect before the run stops. One shop-the-look pin usually contains between one and twenty products.",
            "default": 100
          },
          "maxPinsPerQuery": {
            "title": "Maximum pins scanned per keyword",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How deep to go through each keyword's public results before moving on to the next keyword. Only the pins that actually contain product entries are opened, so a higher number widens the search without multiplying the work.",
            "default": 60
          },
          "onlyWithPrice": {
            "title": "Only products with a published price",
            "type": "boolean",
            "description": "Some entries inside a shop-the-look pin are published without a price. Leave this on to keep only the priced ones. Turn it off to also get the unpriced entries, which still carry the product name, merchant, link and image.",
            "default": true
          },
          "onlyInStock": {
            "title": "Only products marked in stock",
            "type": "boolean",
            "description": "Keep only products the merchant currently marks as available. Products whose availability is not published are treated as unknown and excluded when this is on.",
            "default": false
          },
          "includePromoted": {
            "title": "Include promoted pins",
            "type": "boolean",
            "description": "Pinterest mixes its own promoted pins into results. Leave this off for organic results only. When on, they are kept and flagged with parentIsPromoted so you can split them out later.",
            "default": false
          },
          "country": {
            "title": "Browse from",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "pt",
              "ie",
              "ch",
              "at",
              "be",
              "cz",
              "ro",
              "gr",
              "tr",
              "in",
              "sg",
              "jp",
              "kr",
              "hk",
              "br",
              "mx",
              "ar",
              "cl",
              "co",
              "za",
              "ae",
              "sa",
              "nz",
              "il",
              "ua",
              "id",
              "ph",
              "th",
              "vn",
              "my"
            ],
            "type": "string",
            "description": "Pinterest personalises shopping results by location, and prices are shown in that market's currency. Pick the market you care about and it is kept the same for the whole run. Pinterest does not always serve the market it is asked for, so every row records the one it actually served.",
            "default": "us"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}