{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Reviews Scraper - Thousands, Not Hundreds",
    "description": "Most Amazon review scrapers stop at 100 to 500 reviews per product and never tell you. This one works past that limit and reports exactly what percent of Amazon's written reviews you received, broken down by star rating.",
    "version": "0.1",
    "x-build-id": "gNKV3DoNRDmeZQHCh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/heroic_wagon~amazon-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-heroic_wagon-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/heroic_wagon~amazon-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-heroic_wagon-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/heroic_wagon~amazon-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-heroic_wagon-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,
            "maxItems": 100,
            "type": "array",
            "description": "Amazon products to cover, up to 100 per run. Each entry is a bare ASIN (B06XVZ6Y4T) or any Amazon product or reviews URL. The source budget is shared across all of them.",
            "items": {
              "type": "string"
            }
          },
          "marketplace": {
            "title": "Marketplace",
            "enum": [
              "com",
              "co.uk",
              "de",
              "fr",
              "it",
              "es",
              "ca",
              "com.mx",
              "com.au",
              "co.jp",
              "in",
              "nl",
              "com.br",
              "sg",
              "ae",
              "se",
              "pl"
            ],
            "type": "string",
            "description": "Amazon domain to read. Reviews differ per marketplace; each one is a separate job.",
            "default": "com"
          },
          "targetCoveragePercent": {
            "title": "Target coverage",
            "minimum": 50,
            "maximum": 100,
            "type": "integer",
            "description": "Stop a star rating once this percent of its written reviews is held. Very high targets cost disproportionately more than moderate ones, because the last reviews of any product are the hardest to reach.",
            "default": 85
          },
          "maxSpendUsd": {
            "title": "Source budget (USD)",
            "minimum": 0.1,
            "maximum": 10000,
            "type": "number",
            "description": "Hard cap on what this run spends buying review rows from the underlying scraper, enforced in code before every call. The row source requires a paid Apify plan; on a free plan the run stops immediately and charges nothing. It does not cover this Actor's own per-review price, which you cap with the run's maximum cost. Start with the prefilled value on one product, then read your actual usage and scale from there.",
            "default": 5
          },
          "stars": {
            "title": "Star ratings to collect",
            "type": "array",
            "description": "Leave empty for all five. Restricting to one or two ratings makes a cheap run that covers only those.",
            "items": {
              "type": "string",
              "enum": [
                "five_star",
                "four_star",
                "three_star",
                "two_star",
                "one_star"
              ],
              "enumTitles": [
                "5 stars",
                "4 stars",
                "3 stars",
                "2 stars",
                "1 star"
              ]
            },
            "default": []
          },
          "collectionHints": {
            "title": "Collection hints",
            "maxItems": 200,
            "type": "array",
            "description": "Optional words or short phrases you already know appear in this product's reviews, up to 200. They help the run reach more of the reviews on products with distinctive vocabulary. They do not filter your results: everything the run collects is delivered either way. A multi-word entry is matched as a group, and punctuation and apostrophes may not match exactly as typed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeReviewIds": {
            "title": "Review IDs to skip",
            "maxItems": 250000,
            "type": "array",
            "description": "Amazon review IDs you already hold. They are suppressed before anything is written, so you are not charged for them.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "useSavedState": {
            "title": "Suppress reviews from earlier runs",
            "type": "boolean",
            "description": "Remember which reviews this account has already been given for each ASIN and marketplace, and deliver only new ones next time. Reviews you already hold are never charged again, and they still count toward your coverage percent, so a repeat run on the same product costs a fraction of the first. Leave this on for monitoring; turn it off to re-collect a product from scratch.",
            "default": true
          },
          "maxRequestsPerAsin": {
            "title": "Maximum requests per ASIN",
            "minimum": 20,
            "maximum": 20000,
            "type": "integer",
            "description": "Safety limit on how many requests a single ASIN may make to the row source. Your source budget normally stops a run long before this does.",
            "default": 5000
          },
          "maxCollectionRounds": {
            "title": "Maximum collection rounds",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How many additional collection passes the run may make. Set to 0 for a faster, cheaper run that collects less.",
            "default": 40
          },
          "rowSourceActorId": {
            "title": "Row source Actor",
            "type": "string",
            "description": "Advanced. Overrides which Store Actor fetches the review rows. Leave this alone unless support has told you to change it."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}