{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Reviews Scraper — No-Login Depth + AI Summary",
    "description": "Extract Amazon product reviews with the deepest no-login coverage available: reviews aggregated across 18 marketplaces, ratings histogram, and Amazon's 'Customers say' AI summary with aspect sentiment. Optional cookie mode unlocks full pagination (100s of reviews per product). JSON/CSV",
    "version": "0.0",
    "x-build-id": "dSoaayIfXRA7wlqP9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~amazon-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-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/memo23~amazon-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-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/memo23~amazon-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-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": [
          "products"
        ],
        "properties": {
          "products": {
            "title": "⭐ ASINs or product URLs",
            "type": "array",
            "description": "Amazon ASINs (e.g. \"B07PXGQC1Q\") or full product URLs (/dp/…, /gp/product/…), mixed freely. A URL pins its marketplace; bare ASINs use the Marketplaces field below.",
            "items": {
              "type": "string"
            }
          },
          "marketplaces": {
            "title": "🌍 Marketplaces",
            "type": "array",
            "description": "Marketplaces to harvest. Each additional marketplace where the product is listed typically adds ~8–14 more unique, locally-written reviews per product (reviews are deduplicated). Bare ASINs are fetched on all of these; product URLs add their own marketplace automatically.",
            "items": {
              "type": "string",
              "enum": [
                "com",
                "co.uk",
                "de",
                "fr",
                "it",
                "es",
                "ca",
                "com.au",
                "co.jp",
                "in",
                "nl",
                "se",
                "pl",
                "com.be",
                "ae",
                "com.mx",
                "com.tr",
                "sg"
              ],
              "enumTitles": [
                "amazon.com (US)",
                "amazon.co.uk (UK)",
                "amazon.de (Germany)",
                "amazon.fr (France)",
                "amazon.it (Italy)",
                "amazon.es (Spain)",
                "amazon.ca (Canada)",
                "amazon.com.au (Australia)",
                "amazon.co.jp (Japan)",
                "amazon.in (India)",
                "amazon.nl (Netherlands)",
                "amazon.se (Sweden)",
                "amazon.pl (Poland)",
                "amazon.com.be (Belgium)",
                "amazon.ae (UAE)",
                "amazon.com.mx (Mexico)",
                "amazon.com.tr (Turkey)",
                "amazon.sg (Singapore)"
              ]
            },
            "default": [
              "com"
            ]
          },
          "aggregateMarketplaces": {
            "title": "Aggregate reviews across marketplaces",
            "type": "boolean",
            "description": "Harvest every product on ALL selected marketplaces and merge the deduplicated reviews — the main no-login depth multiplier. Turn off to fetch each product on a single marketplace only.",
            "default": true
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "type": "integer",
            "description": "Ceiling of review rows per product (after dedup and filters). Without cookies, expect roughly 8–14 reviews per marketplace the product is listed on. With cookie mode, up to ~100 per star filter per product.",
            "default": 100
          },
          "maxItems": {
            "title": "Max reviews (whole run)",
            "minimum": 1,
            "type": "integer",
            "description": "Hard ceiling of review rows across the whole run. Also capped by your plan and charge limit."
          },
          "filterByStars": {
            "title": "⭐ Filter by star rating",
            "type": "array",
            "description": "Keep only reviews with the selected star ratings — pick 1★ + 2★ for critical, 5★ for glowing. Leave empty for all ratings. Applied honestly: rows that don't match are never returned or charged. In cookie mode the filter is also sent to Amazon so pagination digs directly into those ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "★☆☆☆☆  1 star (critical)",
                "★★☆☆☆  2 stars",
                "★★★☆☆  3 stars",
                "★★★★☆  4 stars",
                "★★★★★  5 stars (glowing)"
              ]
            },
            "default": []
          },
          "verifiedOnly": {
            "title": "✅ Verified Purchase only",
            "type": "boolean",
            "description": "Keep only reviews with the Verified Purchase badge.",
            "default": false
          },
          "filterByKeyword": {
            "title": "🔍 Keyword filter",
            "type": "string",
            "description": "Keep only reviews whose title or text contains this text (case-insensitive). In cookie mode it is also passed to Amazon's own review search."
          },
          "dateFrom": {
            "title": "📅 Date from",
            "pattern": "^$|^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Keep only reviews dated on/after this date. Reviews whose localized date can't be parsed are kept and carry the raw date string."
          },
          "dateTo": {
            "title": "📅 Date to",
            "pattern": "^$|^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Keep only reviews dated on/before this date."
          },
          "sort": {
            "title": "🔀 Sort output by",
            "enum": [
              "recent",
              "helpful"
            ],
            "type": "string",
            "description": "Order of the review rows: most recent first, or most helpful votes first. In cookie mode this also drives Amazon-side pagination order.",
            "default": "recent"
          },
          "includeVariantReviews": {
            "title": "Include variant reviews",
            "type": "boolean",
            "description": "Amazon mixes reviews from all variants (colors, sizes) of a product family. Keep on for maximum depth; turn OFF to drop reviews attributed to a different variant ASIN than the one you asked for (each row carries `reviewedAsin` and `variantAttributes` either way).",
            "default": true
          },
          "includeProductSummary": {
            "title": "📊 Product summary row",
            "type": "boolean",
            "description": "Emit one extra row per product with the average rating, total ratings count, 5→1 star histogram percentages, and Amazon's AI-generated 'Customers say' summary with per-aspect sentiment (data no other scraper structures). Charged as its own cheap event.",
            "default": true
          },
          "amazonCookies": {
            "title": "🔐 Amazon session cookie (optional — deep pagination)",
            "type": "string",
            "description": "OPTIONAL. Your own Amazon session cookie string (the full `cookie` request-header value from a logged-in browser tab). Unlocks the paginated reviews route: up to ~100 reviews per star filter per product instead of the no-login page depth. Validated up-front — an expired cookie fails the run immediately with clear instructions instead of silently returning nothing, and nothing is charged. ⚠️ Use a throwaway account you can afford to lose; automated access can lead Amazon to log the account out or restrict it. Never share a cookie from an account with payment methods you care about."
          },
          "cookieMarketplace": {
            "title": "Cookie marketplace",
            "enum": [
              "com",
              "co.uk",
              "de",
              "fr",
              "it",
              "es",
              "ca",
              "com.au",
              "co.jp",
              "in",
              "nl",
              "se",
              "pl",
              "com.be",
              "ae",
              "com.mx",
              "com.tr",
              "sg"
            ],
            "type": "string",
            "description": "Which Amazon site the cookie session belongs to (the one you logged into). Deep pagination runs on this marketplace.",
            "default": "com"
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages to fetch in parallel. Automatically clamped to what the run's memory can safely hold (Amazon product pages are large, ~1.5–3MB each) — raise the run's memory to go faster. Default 8.",
            "default": 8
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}