{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Product Scraper & Price Tracker",
    "description": "Scrape Amazon products in 21 countries: price, stock, Buy Box seller, rating and Best Sellers Rank by ASIN. Local postcode prices and price-drop alerts.",
    "version": "0.1",
    "x-build-id": "YfGNlHB5eJRhETOPL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rastriq~amazon-product-price-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rastriq-amazon-product-price-tracker",
        "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/rastriq~amazon-product-price-tracker/runs": {
      "post": {
        "operationId": "runs-sync-rastriq-amazon-product-price-tracker",
        "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/rastriq~amazon-product-price-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-rastriq-amazon-product-price-tracker",
        "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": {
          "productUrls": {
            "title": "🔗 Product URLs",
            "type": "array",
            "description": "Amazon product page URLs from <b>any supported marketplace</b>. The marketplace is detected from the URL, so you can mix countries.<br><br>Accepted formats:<br>• <code>https://www.amazon.com/dp/B08KTZ8249</code><br>• <code>https://www.amazon.de/Some-Product-Name/dp/B074D1MBKB/ref=...</code><br>• <code>https://www.amazon.co.uk/gp/product/B0BDFS2W5D</code>",
            "items": {
              "type": "string"
            }
          },
          "asins": {
            "title": "🏷️ ASINs",
            "type": "array",
            "description": "10-character Amazon product IDs. They are scraped on the <b>Marketplace</b> selected below.<br><br>💡 To mix countries in one list, prefix the ASIN: <code>DE:B074D1MBKB</code>, <code>FR:B095CLQ1PT</code>.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "🌍 Marketplace",
            "enum": [
              "US",
              "UK",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "SE",
              "PL",
              "IE",
              "CA",
              "MX",
              "BR",
              "JP",
              "IN",
              "AU",
              "AE",
              "SA",
              "SG",
              "TR"
            ],
            "type": "string",
            "description": "Amazon site used for the <b>ASINs</b> list (product URLs keep their own site). Prices are returned in the marketplace's local currency.",
            "default": "US"
          },
          "maxItems": {
            "title": "💯 Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to <b>save</b> in this run (variants included). Not-found, failed and unchanged products don't count. Use <b>0</b> for no limit.",
            "default": 100
          },
          "trackPriceChanges": {
            "title": "📈 Track price changes",
            "type": "boolean",
            "description": "Compare every product with the <b>previous run</b> and add <code>previousPrice</code>, <code>priceChange</code>, <code>priceChangePercent</code>, <code>lowestPriceSeen</code>, <code>highestPriceSeen</code> and a <code>changes</code> list (<code>price_down</code>, <code>price_up</code>, <code>out_of_stock</code>, <code>back_in_stock</code>, <code>seller_changed</code>, <code>coupon_added</code>…).<br><br>History is kept in a named key-value store in your account, so <b>schedule this Actor</b> (e.g. daily) with the same input to build a price tracker.",
            "default": false
          },
          "onlyChangedItems": {
            "title": "🔔 Output only changed products",
            "type": "boolean",
            "description": "With price tracking on, save only products that are new or changed since the last run. Unchanged products are <b>not saved and not charged</b> — ideal for alerts via webhooks or integrations. Requires <b>Track price changes</b>.",
            "default": false
          },
          "priceChangeThreshold": {
            "title": "🎚️ Min. price change (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Ignore price moves smaller than this percentage when detecting <code>price_down</code> / <code>price_up</code>. <b>0</b> = any change.",
            "default": 0
          },
          "monitorStoreName": {
            "title": "🗂️ History store name",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]$",
            "type": "string",
            "description": "Name of the key-value store that keeps the price history. Use a <b>different name per watchlist</b> if you run several independent trackers.",
            "default": "amazon-price-tracker-state"
          },
          "scrapeVariants": {
            "title": "🎨 Scrape all variants",
            "type": "boolean",
            "description": "Also scrape every variant (colour, size, style…) of each product as a full product with its own price and stock.<br><br>⚠️ Each variant is a separate saved product (and counts toward <b>Max products</b>). Variant ASINs and attributes are always listed in the <code>variants</code> field, even with this off.",
            "default": false
          },
          "maxVariantsPerProduct": {
            "title": "🔢 Max variants per product",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Upper limit of variants scraped per product when <b>Scrape all variants</b> is on.",
            "default": 20
          },
          "includeRatingBreakdown": {
            "title": "⭐ Rating breakdown",
            "type": "boolean",
            "description": "Return the % of 5★…1★ ratings. When the product page doesn't include it, one tiny extra request fetches it.",
            "default": true
          },
          "outputFailedItems": {
            "title": "🧾 Report not-found & failed products",
            "type": "boolean",
            "description": "Add a row with <code>status: \"not_found\"</code> or <code>\"failed\"</code> for every product that couldn't be scraped, so you always know what happened to each input. These rows are <b>free</b>.",
            "default": true
          },
          "deliveryZipCode": {
            "title": "📍 Delivery ZIP / postcode",
            "type": "string",
            "description": "Amazon prices, buybox and stock depend on the <b>Deliver to</b> location. By default the Actor uses a central postcode of each marketplace (e.g. <code>10001</code> New York, <code>10115</code> Berlin, <code>28001</code> Madrid) so you get <b>local, VAT-inclusive prices</b>.<br><br>Set a postcode here to override it for the <b>Marketplace</b> selected above (e.g. <code>90210</code> for amazon.com)."
          },
          "proxyConfiguration": {
            "title": "🔒 Proxy configuration",
            "type": "object",
            "description": "Apify Proxy is required. The default (datacenter) works for most marketplaces and keeps costs low; the Actor switches to residential IPs in the product's country automatically if Amazon starts blocking.",
            "default": {
              "useApifyProxy": true
            }
          },
          "residentialFallback": {
            "title": "🛡️ Automatic residential fallback",
            "type": "boolean",
            "description": "Escalate to residential proxies in the marketplace's country when the block rate goes above 50%. Recommended.",
            "default": true
          },
          "maxConcurrency": {
            "title": "⚡ Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum parallel product requests. Higher is faster but increases the chance of blocks.<br><br>Recommended: <b>5–15</b>.",
            "default": 10
          },
          "sessionMode": {
            "title": "🧪 Session warm-up",
            "enum": [
              "http",
              "browser"
            ],
            "type": "string",
            "description": "<b>HTTP</b> sends browser-identical requests and is enough for Amazon in almost all cases.<br><br><b>Browser</b> opens each session once in a real Chromium before switching to HTTP. Slower; keep the default <b>4 GB memory</b>; the Actor switches to it automatically if blocks persist on residential proxies.",
            "default": "http"
          },
          "debugSaveHtml": {
            "title": "🐞 Save blocked pages for debugging",
            "type": "boolean",
            "description": "Store the HTML of blocked responses in the run's key-value store.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}