{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Reviews Scraper — Product Reviews & Ratings",
    "description": "Scrape Amazon product reviews, ratings, and Q&A data. Extract reviewer name, rating, review text, date, verified purchase status, and helpfulness votes. Supports all Amazon domains (US, UK, DE, FR, ES, IT, etc.). Ideal for product research, sentiment analysis, and competitive intelligence.",
    "version": "0.2",
    "x-build-id": "r21hJ7zgWbeHjwOPA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rastriq~amazon-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rastriq-amazon-reviews-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/rastriq~amazon-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rastriq-amazon-reviews-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/rastriq~amazon-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rastriq-amazon-reviews-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",
        "required": [
          "asins"
        ],
        "properties": {
          "asins": {
            "title": "ASINs or product URLs",
            "minItems": 1,
            "type": "array",
            "description": "Add the products you want to scrape or monitor — one per line.<br><br>Accepted formats:<br>• Bare ASIN: <code>B0D1XD1ZV3</code><br>• Product URL: <code>https://www.amazon.es/dp/B0D1XD1ZV3</code><br>• Reviews URL: <code>https://www.amazon.es/product-reviews/B0D1XD1ZV3</code><br><br>You can mix ASINs from different marketplaces — the domain in the URL takes priority over the <b>Marketplace</b> setting below.",
            "items": {
              "type": "string"
            }
          },
          "marketplace": {
            "title": "Marketplace",
            "enum": [
              "amazon.es",
              "amazon.com",
              "amazon.de",
              "amazon.fr",
              "amazon.co.uk",
              "amazon.it",
              "amazon.com.br",
              "amazon.com.mx",
              "amazon.ca",
              "amazon.com.au",
              "amazon.co.jp",
              "amazon.nl",
              "amazon.pl",
              "amazon.se"
            ],
            "type": "string",
            "description": "Amazon domain to use when only a bare ASIN is provided. Ignored when the input contains a full URL with a domain.",
            "default": "amazon.es"
          },
          "mode": {
            "title": "What to scrape",
            "enum": [
              "reviews",
              "products",
              "both",
              "monitor"
            ],
            "type": "string",
            "description": "Choose what the actor does with each product:<br><br>• <b>Reviews only</b> — Extracts customer reviews (ratings, text, author, date). No cookies needed for the first ~10 reviews per product.<br><br>• <b>Product data only</b> — Extracts product info (title, price, brand, specs, images, availability). Fast, no cookies needed.<br><br>• <b>Product data + reviews</b> — Both of the above in a single run.<br><br>• <b>Price monitor</b> — Tracks <b>price and availability changes</b> over time. Run it on a schedule (daily or weekly) with your list of ASINs. On each run, the actor compares the current price with the last recorded price and flags any changes. No cookies needed. <a href='https://apify.com/rastriq/amazon-reviews-scraper' target='_blank'>📖 How to set up a schedule</a>",
            "default": "reviews"
          },
          "max_reviews": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "<b>Only applies to Reviews and Product + reviews modes.</b> Ignored in Price monitor and Product data modes.<br><br><b>Without cookies:</b> returns the ~5–10 reviews embedded in the product page.<br><b>With cookies:</b> paginates through the full review history up to this number.<br><br>Use a low value (5–10) for your first run.",
            "default": 100
          },
          "price_alert_threshold": {
            "title": "Price change alert threshold",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Minimum price change (in %) to include a product in the output.<br><br>• Set to <b>0</b> to report <b>every product</b> on every run (even if nothing changed).<br>• Set to <b>5</b> to only report products whose price moved by 5% or more.<br><br>Availability changes (in stock → out of stock, or vice versa) are <b>always</b> reported regardless of this threshold.",
            "default": 0
          },
          "monitor_output": {
            "title": "Monitor output filter",
            "enum": [
              "all",
              "changes_only"
            ],
            "type": "string",
            "description": "Controls which products appear in the dataset after a monitor run:<br><br>• <b>All products</b> — Every ASIN is included in the output, with change flags (<code>price_changed</code>, <code>availability_changed</code>) so you can filter in Excel or your pipeline. Best if you want a full snapshot on every run.<br><br>• <b>Only changes</b> — Only products with a price or availability change are included. Best if you want lean alerts (e.g. via webhook or email integration).",
            "default": "all"
          },
          "proxy_type": {
            "title": "Proxy",
            "enum": [
              "residential",
              "datacenter",
              "none"
            ],
            "type": "string",
            "description": "<b>Residential</b> — most reliable, higher cost (~10–20x bandwidth). Best for production.<br><b>Datacenter</b> — fast and cheap, but Amazon blocks it more often. Try it first.<br><b>None</b> — no proxy. Only for local debugging.",
            "default": "residential"
          },
          "cookies": {
            "title": "Amazon session cookies",
            "type": "array",
            "description": "<b>Optional.</b> Only needed to paginate beyond the ~5–10 embedded reviews. Not needed for Price monitor or Product data modes.<br><br>Export from your browser with <a href='https://cookie-editor.com' target='_blank'>Cookie-Editor</a>: log into Amazon → open extension → Export as JSON → paste here.<br><br>Cookies are saved automatically for future runs."
          },
          "delay_between_clicks": {
            "title": "Wait between pages",
            "minimum": 0.5,
            "maximum": 10,
            "type": "number",
            "description": "Seconds to wait between paginated review pages. Increase if you see CAPTCHAs or empty pages.",
            "default": 1.5
          },
          "delay_page_load": {
            "title": "Page render wait",
            "minimum": 1,
            "maximum": 15,
            "type": "number",
            "description": "Seconds to wait after a page loads before extracting data. Increase on slow connections or heavy pages.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}