{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Product Feedback Analyzer",
    "description": "Analyze Amazon product feedback from what Amazon shows logged-out visitors: up to 13 top reviews per product per store, the star histogram, Amazon's 'Customers say' aspects when Amazon shows them, and themes from the collected English reviews with their sample size. 23 marketplaces.",
    "version": "0.1",
    "x-build-id": "5HNYORpGGR4t5PBuq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zapticx~amazon-product-feedback-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zapticx-amazon-product-feedback-analyzer",
        "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/zapticx~amazon-product-feedback-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-zapticx-amazon-product-feedback-analyzer",
        "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/zapticx~amazon-product-feedback-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-zapticx-amazon-product-feedback-analyzer",
        "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": "Products (URLs or ASINs)",
            "type": "array",
            "description": "Amazon product page URLs (e.g. https://www.amazon.com/dp/B08KT2Z93D) or bare 10-character ASINs. A URL's own domain decides its marketplace; bare ASINs use the Marketplace field. Up to 200 product pages per run (products x marketplaces checked); with every store checked that is 8 products.",
            "items": {
              "type": "string"
            }
          },
          "marketplace": {
            "title": "Marketplace for bare ASINs",
            "enum": [
              "US",
              "UK",
              "DE",
              "CA",
              "IN",
              "AU",
              "JP",
              "FR",
              "IT",
              "ES",
              "MX",
              "BR",
              "NL",
              "SE",
              "PL",
              "TR",
              "AE",
              "SA",
              "SG",
              "BE",
              "EG",
              "IE",
              "ZA"
            ],
            "type": "string",
            "description": "Which Amazon store to use for inputs given as bare ASINs.",
            "default": "US"
          },
          "additionalMarketplaces": {
            "title": "Also check these marketplaces (opt-in)",
            "type": "array",
            "description": "Fetch the same ASIN's product page on more Amazon stores to see more distinct reviews. Each store shows its own top reviews; duplicates are removed by review ID and every record keeps its marketplace. Each additional store whose page shows the product is charged as a store page ($0.003), even when it adds no new reviews (a sign-in prompt, no written reviews, or only reviews already collected from another store). Stores not checked because 'Max reviews per product' was reached are not charged. Different products are never merged. Counts towards the page limit per run. Ignored when 'Check every supported Amazon store' is on.",
            "items": {
              "type": "string",
              "enum": [
                "US",
                "UK",
                "DE",
                "CA",
                "IN",
                "AU",
                "JP",
                "FR",
                "IT",
                "ES",
                "MX",
                "BR",
                "NL",
                "SE",
                "PL",
                "TR",
                "AE",
                "SA",
                "SG",
                "BE",
                "EG",
                "IE",
                "ZA"
              ],
              "enumTitles": [
                "United States (amazon.com)",
                "United Kingdom (amazon.co.uk)",
                "Germany (amazon.de)",
                "Canada (amazon.ca)",
                "India (amazon.in)",
                "Australia (amazon.com.au)",
                "Japan (amazon.co.jp)",
                "France (amazon.fr)",
                "Italy (amazon.it)",
                "Spain (amazon.es)",
                "Mexico (amazon.com.mx)",
                "Brazil (amazon.com.br)",
                "Netherlands (amazon.nl)",
                "Sweden (amazon.se)",
                "Poland (amazon.pl)",
                "Turkey (amazon.com.tr)",
                "United Arab Emirates (amazon.ae)",
                "Saudi Arabia (amazon.sa)",
                "Singapore (amazon.sg)",
                "Belgium (amazon.com.be)",
                "Egypt (amazon.eg)",
                "Ireland (amazon.ie)",
                "South Africa (amazon.co.za)"
              ]
            },
            "default": []
          },
          "allMarketplaces": {
            "title": "Check every supported Amazon store (more reviews)",
            "type": "boolean",
            "description": "Fetch the product page on all 23 supported Amazon stores. Each store shows its own top reviews (up to 13), so products sold in many countries return many more distinct reviews; products sold in few stores gain little. Duplicates are removed and every review keeps its marketplace. The primary store is checked first and the others are skipped if it shows no ratings; if 'Max reviews per product' is reached, the remaining stores are skipped too. Skipped stores are listed as NOT_CHECKED and not charged. Each additional store whose page shows the product is charged as a store page ($0.003), even when it adds no new reviews (a sign-in prompt, no written reviews, or only reviews already collected from another store); stores that don't sell it are free. Uses up to 23 page requests per product.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Maximum reviews per product",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Upper limit on review records per product across all marketplaces checked. The default (300) is above the most that 23 stores can show (23 x 13 = 299), so nothing is cut. Amazon shows logged-out visitors at most 13 reviews per store, so one store never returns more than 13. With several stores, a lower limit also stops the run checking further stores once it is reached: those stores are listed as NOT_CHECKED ('review limit reached') and not charged. Set 0 for product-level data only (every requested store is still checked and charged as a store page).",
            "default": 300
          },
          "includeFeedbackAnalysis": {
            "title": "Include feedback analysis",
            "type": "boolean",
            "description": "Add recurring positives, complaints and requested improvements, computed with transparent keyword rules from the collected English-language reviews only. Each theme shows how many of those reviews mention it. Themes describe this small sample, not all of the product's ratings. No AI is used and there is no extra charge.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxies matched to each marketplace's country are the tested default. Amazon's bot defences change over time, so some products can still end as BLOCKED (not charged). Other proxy settings were not tested enough to recommend.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "maxConcurrency": {
            "title": "Max parallel page requests",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many product pages are fetched at once (1-5).",
            "default": 5
          },
          "failRunIfUnhealthyPercentAbove": {
            "title": "Fail the run if more than this % of products can't be read",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Optional. Marks the run as FAILED when more than this percentage of products end BLOCKED, INCOMPLETE_PAGE or NETWORK_ERROR, or show 100+ ratings but return no written reviews. Use it with scheduled runs and Apify's run-status alerts to learn when Amazon's pages change. Records delivered before the check are kept and charged. Leave empty to turn off."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}