{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Seller Data Extractor: AI Sentiment & Feedback Analytics",
    "description": "The Amazon Seller Data Extractor Scraper efficiently collects key seller information from Amazon, including store name, ratings, feedback, and product listings. Ideal for market research, competitor analysis, and eCommerce intelligence, it delivers accurate, structured data ready for API or export.",
    "version": "0.1",
    "x-build-id": "9GsEhVHucyxaPo5ou"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~amazon-seller-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-amazon-seller-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/scraper-engine~amazon-seller-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-amazon-seller-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/scraper-engine~amazon-seller-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-amazon-seller-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": {
          "productAsins": {
            "title": "📦 Product ASINs",
            "type": "array",
            "description": "One ASIN per row (example: B00P8XQPY4). We open each product page and pull the seller behind the offer. Base-compatible fallback key: asinInputs.",
            "items": {
              "type": "string"
            }
          },
          "sellerIds": {
            "title": "🆔 Seller IDs / merchant IDs",
            "type": "array",
            "description": "Amazon seller IDs like A33W53J5GVPZ8K — perfect when you already know exactly who you're analyzing. Base-compatible fallback key: usernameInputs.",
            "items": {
              "type": "string"
            }
          },
          "sellerProfileUrls": {
            "title": "🔗 Direct seller storefront URLs",
            "type": "array",
            "description": "Full Amazon seller profile links (e.g. https://www.amazon.com/sp?seller=…). Base-compatible fallback key: startUrls.",
            "items": {
              "type": "string"
            }
          },
          "keywordInputs": {
            "title": "🔎 Keywords (discover sellers)",
            "type": "array",
            "description": "Search-style phrases (e.g. \"handmade ceramics UK\"). We run the search, open matching products, and resolve each one's seller — de-duplicated by seller ID — then run the SAME reputation analytics (and optional AI sentiment/theme analysis) on every discovered seller. Great for prospecting new storefronts to analyze.",
            "items": {
              "type": "string"
            }
          },
          "marketplaceDomain": {
            "title": "🌐 Amazon marketplace domain",
            "type": "string",
            "description": "Examples: amazon.com, amazon.co.uk, amazon.de, amazon.co.jp. Base-compatible fallback key: amazonDomain."
          },
          "language": {
            "title": "🗣️ Page language (locale)",
            "type": "string",
            "description": "Optional locale string (en-US, en-GB, de-DE…) — sets the Accept-Language request header so Amazon serves that locale's page copy when it has one. Leave blank to let Amazon decide."
          },
          "aiSentimentEnabled": {
            "title": "🤖 Enable AI feedback sentiment/theme analysis",
            "type": "boolean",
            "description": "When ON, each feedback comment's text is classified for sentiment (positive/neutral/negative) and recurring themes (e.g. shipping, packaging, service) via your chosen AI provider.",
            "default": false
          },
          "aiModel": {
            "title": "🧠 AI Model / Provider",
            "enum": [
              "claude-haiku-4-5",
              "claude-sonnet-5",
              "claude-opus-4-8",
              "claude-fable-5",
              "gpt-4o-mini",
              "gpt-4o",
              "gpt-4.1-mini",
              "gpt-4.1",
              "o3-mini",
              "o1",
              "gemini-2.0-flash-lite",
              "gemini-2.0-flash",
              "gemini-1.5-pro",
              "gemini-2.5-flash",
              "gemini-2.5-pro",
              "grok-2-latest",
              "grok-3-mini",
              "grok-3",
              "grok-beta",
              "deepseek-chat",
              "deepseek-reasoner",
              "sonar",
              "sonar-pro",
              "sonar-reasoning",
              "mistral-small-latest",
              "mistral-large-latest"
            ],
            "type": "string",
            "description": "Provider auto-detected from the name: claude-*=Anthropic, gpt-*/o1/o3=OpenAI, gemini-*=Google, grok-*=xAI, deepseek-*=DeepSeek, sonar*=Perplexity, mistral-*=Mistral. Cheaper mini/flash/haiku models are recommended."
          },
          "aiApiKey": {
            "title": "🔑 AI provider API key",
            "type": "string",
            "description": "Your own API key for the selected provider (Anthropic/OpenAI/Google/xAI/DeepSeek/Perplexity/Mistral). Required only when AI sentiment analysis is enabled. Falls back to the matching provider env var if left blank."
          },
          "maxFeedbacksForAi": {
            "title": "💬 Max feedback comments to analyze per seller (AI)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Caps how many of each seller's feedback comments get AI sentiment/theme analysis (cost control). Default 20.",
            "default": 20
          },
          "maxFeedbackPerSeller": {
            "title": "💬 Max feedback comments per seller",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap feedback rows per seller (0 = grab everything the page allows). Base-compatible fallback key: maxComments."
          },
          "maxParallelSellers": {
            "title": "⚡ Max parallel seller fetches",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Higher = faster but hotter on Amazon's radar. Lower (1-5) = gentler. Base-compatible fallback key: maxConcurrency."
          },
          "proxyCountryCode": {
            "title": "🌎 Proxy country hint",
            "type": "string",
            "description": "ISO-style country for routing (or AUTO). Base-compatible fallback key: proxyCountry."
          },
          "useCaptchaSolver": {
            "title": "🤖 Retry harder on soft blocks",
            "type": "boolean",
            "description": "No third-party CAPTCHA-image solving service runs here — flipping this ON instead doubles the anti-bot retry ladder (4 → 8 attempts) with longer backoff, which genuinely rescues more runs against soft blocks/verification interstitials. Leave OFF for typical runs; ON is slower.",
            "default": false
          },
          "sortOrder": {
            "title": "⭐ Review sort order",
            "enum": [
              "recent",
              "helpful",
              "rating"
            ],
            "type": "string",
            "description": "How feedbacks[] is actually ordered before maxFeedbackPerSeller truncates it: freshest first, most 'found helpful' votes first, or highest star rating first.",
            "default": "recent"
          },
          "proxyConfiguration": {
            "title": "🧩 Proxy configuration (optional)",
            "type": "object",
            "description": "Residential routing is enforced for this actor."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}