{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Scraper - Product Data, Prices & Reviews by ASIN",
    "description": "Amazon scraper for products by ASIN or keyword on seven marketplaces. ASIN rows have the title, price, rating, review count, brand, availability, bullets, image gallery and on-page reviews; search rows the listing tile. Prices in the marketplace's own currency. $0.75 per 1,000 products.",
    "version": "0.1",
    "x-build-id": "SE9gP2L1ua9Gn6o3z"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~amazon-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-amazon-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/dami_studio~amazon-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-amazon-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/dami_studio~amazon-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-amazon-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": {
          "asins": {
            "title": "ASINs (product mode)",
            "type": "array",
            "description": "List of Amazon ASINs (10-character product IDs, e.g. B0BS1PRC4L) to scrape. Each ASIN returns full product details (including hi-res images) plus the on-page top customer reviews. Individual fields (price, rating, reviewCount, brand, availability, images, reviews) can be null/empty when Amazon does not render them on the page. Find the ASIN in a product URL: amazon.com/dp/{ASIN}. Leave empty if you only want search results.",
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Product links",
            "type": "array",
            "description": "Optional. Product links copied from Amazon (amazon.com/dp/{ASIN}, /gp/product/{ASIN} and the like). The store comes from each link, so one run can mix countries; every link is read like an ASIN and billed the same way. A link to a store this actor does not read gets a free row saying so.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search queries (search mode)",
            "type": "array",
            "description": "List of search terms (e.g. \"wireless earbuds\", \"4k monitor\") to scrape from Amazon search result pages. Each query returns products with asin, title, price, rating, reviewCount, url and an images array, paginated until maxItems is reached. Note: search-mode images contain only a small (~200px) thumbnail URL, product/ASIN mode returns hi-res images. Fields like price, rating and reviewCount can be null when Amazon omits them for a listing. Leave empty if you only want product details by ASIN.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Amazon results links",
            "type": "array",
            "description": "Optional. Paste a results page from Amazon with your filters already set (a search, a department, a filtered category), or a Best Sellers, New Releases, Movers & Shakers or Most Wished For page. Results links are paged like a search, up to Max items each. A Best Sellers style page gives up to 60 ranked products with their rank and category. Each row is billed like a search row.",
            "items": {
              "type": "string"
            }
          },
          "domain": {
            "title": "Amazon marketplace",
            "enum": [
              "com",
              "co.uk",
              "de",
              "fr",
              "it",
              "es",
              "ca",
              "com.mx",
              "com.br",
              "com.au",
              "co.jp",
              "in",
              "sg",
              "ae",
              "sa",
              "nl",
              "se",
              "pl",
              "com.tr",
              "eg",
              "ie"
            ],
            "type": "string",
            "description": "Which Amazon marketplace (TLD) to scrape. Prices come back in that marketplace's own currency and language.",
            "default": "com"
          },
          "language": {
            "title": "Page language",
            "enum": [
              "en_US",
              "en_GB",
              "de_DE",
              "fr_FR",
              "it_IT",
              "es_ES",
              "es_MX",
              "pt_BR",
              "ja_JP",
              "nl_NL",
              "sv_SE",
              "pl_PL",
              "tr_TR",
              "ar_AE",
              "zh_CN",
              "en_IN",
              "hi_IN",
              "cs_CZ",
              "ko_KR",
              "en_AU",
              "en_CA",
              "fr_CA",
              "en_AE"
            ],
            "type": "string",
            "description": "Optional. Ask Amazon for its pages in this language, where the store offers it (for example German on amazon.de, or English on a store that defaults to another language). Leave empty for the pages this actor normally reads. Titles, bullets and labels come back in the language Amazon serves."
          },
          "currency": {
            "title": "Show prices in",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "JPY",
              "INR",
              "MXN",
              "BRL",
              "SEK",
              "PLN",
              "TRY",
              "AED",
              "SAR",
              "EGP",
              "SGD"
            ],
            "type": "string",
            "description": "Optional. Ask Amazon to show prices in this currency, on stores that convert. Where a store does not convert, prices stay in its own currency and the currency column says so. Leave empty for the store's own currency."
          },
          "maxItems": {
            "title": "Max items (search mode)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of search result products to return per search query. The actor paginates through ?page=N until this many products are collected or the results run out. Ignored in ASIN-only mode.",
            "default": 50
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Optional. Stop each search or results link after this many result pages, even if Max items has not been reached. Amazon shows at most about 20.",
            "default": 20
          },
          "maxTotalItems": {
            "title": "Max items for the whole run",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. One cap across all searches, results links and list pages together. Leave empty for no run-wide cap (each search still stops at Max items). Product rows from ASINs and product links do not count against it."
          },
          "skipDuplicateAsins": {
            "title": "Skip repeated products",
            "type": "boolean",
            "description": "Optional. When the same product appears more than once in your ASINs and product links (same store), read and charge it once. Off by default, so every entry still gets its own row in order.",
            "default": false
          },
          "sort": {
            "title": "Sort results",
            "enum": [
              "relevance",
              "price-low-to-high",
              "price-high-to-low",
              "reviews",
              "newest",
              "best-selling"
            ],
            "type": "string",
            "description": "Optional. The order Amazon returns search results in. Relevance is Amazon's default order.",
            "default": "relevance"
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Only results at or above this price, in the store's currency (whole units, e.g. 20). Results with no price shown are left out when a price filter is set."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Only results at or below this price, in the store's currency."
          },
          "minRating": {
            "title": "Minimum star rating",
            "enum": [
              "4",
              "3",
              "2",
              "1"
            ],
            "type": "string",
            "description": "Optional. Only results rated at least this many stars. Results with no rating yet are left out when this is set."
          },
          "excludeSponsored": {
            "title": "Leave out sponsored results",
            "type": "boolean",
            "description": "Optional. Drop results Amazon marks as sponsored. They are not charged.",
            "default": false
          },
          "includeVariants": {
            "title": "Add the other colours and sizes",
            "type": "boolean",
            "description": "Optional. For each ASIN or product link, also read its other variants (colours, sizes) as their own product rows, up to Max variants per product. Each variant row is a product row like any other and is billed the same way. Rows carry variantOf, the ASIN they were found from.",
            "default": false
          },
          "variantPrices": {
            "title": "Variant prices",
            "type": "boolean",
            "description": "Optional add-on. Read each variant's own page and put its price and stock inside the parent row's variants list, up to Max variants per product.",
            "default": false
          },
          "maxVariantsPerProduct": {
            "title": "Max variants per product",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many variants of one product the two options above read at most.",
            "default": 10
          },
          "searchDetails": {
            "title": "Full product page for search results",
            "type": "boolean",
            "description": "Optional add-on. For every search or results-link row, also read the product page and add it to the row as detail: seller, specs, bullets, gallery, Best Sellers Rank, reviews on the page and the rest of an ASIN row.",
            "default": false
          },
          "includeOffers": {
            "title": "Other sellers' offers",
            "type": "boolean",
            "description": "Optional add-on. For each ASIN or product link, read the list of offers from other sellers: price, condition, seller and who ships it.",
            "default": false
          },
          "includeSellerDetails": {
            "title": "Seller details",
            "type": "boolean",
            "description": "Optional add-on. Read the buy-box seller's own page once per seller: rating, number of ratings, and the business details the page prints.",
            "default": false
          },
          "deliveryZip": {
            "title": "Delivery postcode",
            "type": "string",
            "description": "Optional add-on. Read the chosen store's pages for this postcode (for example 10001 on amazon.com), so price, delivery and stock are what a shopper there sees. It applies to ASINs, searches and links on the store picked above; links to other stores are read as usual. If Amazon does not take the postcode, the run returns a free row saying so and reads nothing for that store."
          },
          "deliveryCountry": {
            "title": "Delivery country",
            "type": "string",
            "description": "Optional add-on, instead of a postcode. Read the chosen store's pages as delivered to this country, where the store ships abroad. Two-letter code, for example CA or DE."
          },
          "notionConnector": {
            "title": "Notion connector (optional)",
            "type": "string",
            "description": "Optional. Write each product as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless."
          },
          "notionParentId": {
            "title": "Notion target data source ID",
            "type": "string",
            "description": "Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Leave this alone unless you need the run to go out through a particular network. Your own proxy servers are used exactly as given."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}