{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Reviews Scraper with Coverage Report",
    "description": "Scrapes Amazon product reviews and tells you exactly how many you got, how many exist, and why it stopped. Charged per review delivered, so a run that returns nothing costs nothing.",
    "version": "0.1",
    "x-build-id": "WVm96jW4qGyBqGAkO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/muhzuhaib~amazon-reviews-coverage-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-muhzuhaib-amazon-reviews-coverage-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/muhzuhaib~amazon-reviews-coverage-scraper/runs": {
      "post": {
        "operationId": "runs-sync-muhzuhaib-amazon-reviews-coverage-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/muhzuhaib~amazon-reviews-coverage-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-muhzuhaib-amazon-reviews-coverage-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": {
          "productUrls": {
            "title": "Product URLs",
            "type": "array",
            "description": "Amazon product or reviews URLs. Any marketplace, any of the /dp/, /gp/product/ or /product-reviews/ forms. The marketplace is read from each URL, so you can mix amazon.com and amazon.co.uk in one run.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "asins": {
            "title": "ASINs",
            "uniqueItems": true,
            "type": "array",
            "description": "Ten-character Amazon codes such as B08N5WRWNW, if you would rather not paste full URLs. These use the marketplace set below.",
            "items": {
              "type": "string"
            }
          },
          "domain": {
            "title": "Marketplace",
            "enum": [
              "amazon.com",
              "amazon.co.uk",
              "amazon.de",
              "amazon.fr",
              "amazon.it",
              "amazon.es",
              "amazon.ca",
              "amazon.com.mx",
              "amazon.com.br",
              "amazon.co.jp",
              "amazon.in",
              "amazon.com.au",
              "amazon.nl",
              "amazon.se",
              "amazon.pl",
              "amazon.sg",
              "amazon.ae",
              "amazon.sa",
              "amazon.com.tr",
              "amazon.eg",
              "amazon.be"
            ],
            "type": "string",
            "description": "Which Amazon marketplace the ASINs above belong to. URLs carry their own marketplace and ignore this.",
            "default": "amazon.com"
          },
          "maxReviewsPerProduct": {
            "title": "Maximum reviews per product",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "A budget per product, not for the whole run, so one product cannot eat another's allowance. Amazon's own reviews listing stops after 10 pages of 10, so 100 is the realistic ceiling per filter combination. Ask for more and the coverage record will tell you where it stopped.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recent",
              "helpful"
            ],
            "type": "string",
            "description": "Most recent gives you a time series. Most helpful gives you the reviews Amazon promotes.",
            "default": "recent"
          },
          "filterByStar": {
            "title": "Star rating",
            "enum": [
              "all_stars",
              "five_star",
              "four_star",
              "three_star",
              "two_star",
              "one_star",
              "positive",
              "critical"
            ],
            "type": "string",
            "description": "Amazon applies the 10-page limit to each filter separately, so running the five star filters one at a time returns more reviews in total than running with no filter at all. The coverage record makes that visible.",
            "default": "all_stars"
          },
          "reviewerType": {
            "title": "Reviewer type",
            "enum": [
              "all_reviews",
              "avp_only_reviews"
            ],
            "type": "string",
            "description": "Whether to include every reviewer, or only those Amazon marks as verified purchases.",
            "default": "all_reviews"
          },
          "mediaType": {
            "title": "Media",
            "enum": [
              "all_contents",
              "media_reviews_only"
            ],
            "type": "string",
            "description": "Whether to include every review, or only those with a photo or video attached.",
            "default": "all_contents"
          },
          "formatType": {
            "title": "Format",
            "enum": [
              "all_formats",
              "current_format"
            ],
            "type": "string",
            "description": "Whether to include reviews written for other variants of the same product, such as a different size or colour.",
            "default": "all_formats"
          },
          "language": {
            "title": "Review language",
            "type": "string",
            "description": "An Amazon locale code such as en_US or de_DE. Leave empty for the marketplace default."
          },
          "maxConcurrency": {
            "title": "Maximum concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many pages to fetch at once. Higher is faster and more likely to be blocked. Values outside 1 to 50 are clamped rather than rejected.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxy is the default and is strongly recommended. Amazon answers unproxied and datacentre requests for its reviews listing with a sign-in page.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "debugSnapshots": {
            "title": "Save snapshots of empty pages",
            "type": "boolean",
            "description": "When a page returns no reviews, save its raw HTML to the key-value store so the cause can be diagnosed. Off by default; turn it on only when reporting a problem.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}