# Amazon Seller & Brand Intel - Sellers, Offers, Sales Estimates (`seibs.co/amazon-seller-intel`) Actor

Amazon seller and brand intelligence: seller storefront records, product offers, brand audits, and modeled sales estimates from public listing signals. For brand owners, agencies, and investors - the Jungle Scout/Helium 10 intel layer, priced per record.

- **URL**: https://apify.com/seibs.co/amazon-seller-intel.md
- **Developed by:** [Seibs.co](https://apify.com/seibs.co) (community)
- **Categories:** E-commerce, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 seller records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Amazon Seller & Brand Intel

<!-- TOP-SELL-START -->
> **TL;DR for brand owners, brand-protection teams, distributor vetting, and PL researchers:** the seller-intelligence layer of Amazon - who is actually behind a listing, who is selling your brand and at what share, who holds the Buy Box, and how fast a product sells - from public, logged-out pages. Jungle Scout and Helium 10 sell this on subscription; Amazon's own APIs are gated (PA-API needs an approved affiliate account with recent sales, SP-API is seller-only). This is deliberately NOT another review/price scraper - that layer is commoditized. One normalized dataset: seller records with published business identity, offer-by-offer Buy Box maps, brand audits, and BSR-based sales bands with stated confidence.

### Run it in 30 seconds

```python
## Via the Apify Python SDK
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("seibs.co/amazon-seller-intel").call(run_input={
    "mode": "brand_audit",
    "brands": ["Anker"],
    "marketplace": "com",
    "max_products_per_brand": 16
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
````

Or via curl:

```bash
curl -X POST "https://api.apify.com/v2/acts/seibs.co~amazon-seller-intel/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"mode": "asin_offers", "asins": ["B07ZPKBL9V"], "marketplace": "com"}'
```

Or click "Try for free" on this page if you prefer the no-code UI.

### What you get

Each run produces:

- A clean dataset, filterable in the Apify console and downloadable as CSV or JSON
- An OUTPUT.html dashboard preview of your top records
- A sample-output preview at [`.actor/sample-output.json`](./.actor/sample-output.json)

### Live example output

A `brand_audit_record` - one aggregate per brand:

```json
{
  "record_type": "brand_audit_record",
  "brand": "AcmeBasics",
  "n_products_sampled": 16,
  "distinct_seller_count": 5,
  "distinct_sellers": [
    {"seller_id": "A2R2RITDJNW1Q6", "seller_name": "AcmeBasics Official", "n_products": 11, "est_share_pct": 47.8},
    {"seller_id": null, "seller_name": "Amazon.com", "n_products": 6, "est_share_pct": 26.1}
  ],
  "price_dispersion": {"min": 12.49, "median": 22.99, "max": 39.99, "n": 16},
  "buy_box_brand_or_amz_pct": 68.8,
  "buy_box_third_party_pct": 31.2,
  "total_est_monthly_sales_band": {"low": 4120, "mid": 7480, "high": 12710, "period": "monthly"}
}
```

A `sales_estimate_enrichment` - one per ASIN in `asin_offers`:

```json
{
  "record_type": "sales_estimate_enrichment",
  "asin": "B0ACME1234",
  "bsr": 1450,
  "matched_category": "Home & Kitchen",
  "sales_band": {"low": 578, "mid": 1050, "high": 1785, "period": "monthly"},
  "est_monthly_revenue_band": {"low": 15600.22, "mid": 28339.5, "high": 48177.15, "period": "monthly"},
  "confidence": "medium",
  "methodology": "Modeled as a per-category power law est_daily_sales = A / BSR^B, monthlyized over 30.4 days. ..."
}
```

### What does Amazon Seller & Brand Intel do?

Four things the commodity scrapers skip:

1. **Seller profiles.** Feed seller ids (or `sp?seller=` / storefront URLs) and get the seller behind the listing: display name, the published business name and address Amazon shows on the profile, rating percentages across 30d/90d/12m/lifetime windows, ratings count, and a Just-Launched flag. This is the distributor-vetting record.
2. **Offer / Buy Box intel.** Feed ASINs and get every offer from the All Offers Display: seller name and id, price plus shipping, condition, FBA/FBM/Amazon fulfillment, and which offer holds the Buy Box right now.
3. **Brand audits.** Feed a brand name and get the seller map: every distinct seller found on a sample of the brand's products, each seller's share, price dispersion across listings (MAP-violation triage), what percent of Buy Boxes the brand or Amazon controls vs third parties, and the brand's estimated monthly sales band.
4. **Sales-velocity estimates.** Every ASIN with a readable Best Sellers Rank gets a modeled monthly sales and revenue band - the Jungle Scout / Helium 10 product - with confidence, methodology, and caveats stated on the record.

### Responsible use / data scope

Public, logged-out pages only. No accounts, no cookies, no login flows, no paywall bypass. The actor includes the published business firmographics Amazon itself displays on a seller profile (legal business name and address) because that is business data; it never harvests emails, phone numbers, or any personal contact data. Outputs describe public marketplace state at fetch time. You are responsible for using the data lawfully and in compliance with the terms that bind you.

### AI / RAG / Agent

Seller and brand intel shaped for agent pipelines: every record is flat, typed, and carries `record_type`, so an agent can route brand audits to a brand-protection workflow and seller records to a vetting workflow without parsing prose. Works with **LangChain**, **LlamaIndex**, and **MCP**-aware runtimes.

```python
from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("seibs.co/amazon-seller-intel").call(run_input={
    "mode": "brand_audit",
    "brands": ["YourBrand"],
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
audits = [r for r in items if r.get("record_type") == "brand_audit_record"]
unauthorized = [
    s for a in audits for s in a.get("distinct_sellers", [])
    if s.get("seller_name") not in ("YourBrand Official", "Amazon.com")
]
```

### Features

- Seller records with published business identity and rating windows (30d / 90d / 12m / lifetime).
- All-Offers-Display parsing with Buy Box winner, fulfillment channel (FBA/FBM/AMZ), and shipping cost per offer.
- Brand-to-seller mapping with estimated share per seller and price dispersion.
- BSR-based monthly sales and revenue bands, calibrated per category, with confidence and caveats on every record.
- Block-resilient: Amazon bot walls become labeled `fetch_error` records with a fix suggestion; the run always finishes.
- Monitor mode: put a seller watchlist on an Apify Schedule and get a change digest (rating and catalog deltas) plus optional Slack webhook.
- Cost-control budget guard: runs abort cleanly if compute outruns revenue; a run that returns nothing costs nothing.

### Use cases

- Brand protection - detect unauthorized sellers, watch Buy Box control, triage MAP violations by price dispersion.
- Distributor and supplier vetting - is this seller real, what business is behind it, how do buyers rate it across time windows.
- Private-label research - size a product or brand opportunity with sales bands instead of buying a Jungle Scout seat.
- Agencies - audit a client's (or competitor's) brand presence on a monthly cadence with monitor mode.
- M\&A / FBA-aggregator diligence - portfolio-level seller and velocity snapshots.

### Modes

| Mode | Input | Emits |
|---|---|---|
| `seller_profile` (default) | `seller_ids` | one `seller_record` per seller |
| `asin_offers` | `asins` | `product_summary` + `product_offer_record` per offer + `sales_estimate_enrichment` per ASIN |
| `brand_audit` | `brands` | sampled products + offers + one `brand_audit_record` per brand |
| `seller_monitor` | `seller_ids` (watchlist) | seller records + monitor digest (for Schedules) |

### Sales estimates - how, and how honest

Amazon never publishes unit sales. The estimator models them from the Best Sellers Rank using the same per-category power-law shape the paid tools describe: `est_daily_sales = A / BSR^B`, calibrated per top-level category against published anchor points, then converted to a monthly band. Three honesty rules:

1. Bands are wide on purpose (about -45% / +70% around the mid). Treat the band, not the midpoint, as the answer.
2. Confidence is capped at `medium` even on a clean category match - never `high` from rank alone. Unmatched categories fall back to a generic curve at `low`.
3. Every estimate carries its `methodology` sentence, the curve constants used, and `caveats`. See [SPEC.md](./SPEC.md) for the calibration table.

### Input

See the input schema for full reference. Example - brand audit:

```json
{
  "mode": "brand_audit",
  "brands": ["Anker"],
  "marketplace": "com",
  "max_products_per_brand": 16,
  "max_offers_per_asin": 10,
  "apify_proxy_groups": ["RESIDENTIAL"],
  "concurrency": 2
}
```

Hard caps: 25 seller ids, 100 ASINs, 10 brands, 48 products per brand, 20 offers per ASIN, concurrency 3. Marketplaces: `com`, `co.uk`, `de`, `ca`.

### Output

Every record carries `record_type`, `mode`, `available`, `reason`, and `scraped_at`. Blocked or missing pages come back as `record_type: "fetch_error"` with a human-readable reason and are never charged. See [`.actor/sample-output.json`](./.actor/sample-output.json) for one realistic record of each type.

### Pricing

Pay per event - you pay for what the run actually emits:

| Event | Price | When |
|---|---|---|
| `seller_record` | $0.012 | One parsed seller profile |
| `product_offer_record` | $0.005 | One offer from the All Offers Display |
| `brand_audit_record` | $0.015 | One aggregate brand roll-up |
| `sales_estimate_enrichment` | $0.010 | One BSR-based sales/revenue band per ASIN |
| `scheduled_delta_run` | $0.050 | One scheduled monitor-mode digest |

A run that returns nothing costs nothing. `fetch_error` records are free.

### FAQ

**Q: Why does it default to RESIDENTIAL proxies?**
A: Amazon is among the most bot-protected sites on the web and blocks datacenter IPs aggressively. RESIDENTIAL keeps the success rate high; the trade-off is that residential bandwidth is the actor's main cost driver. The client requests HTML only, compresses transfers, caches URLs per run, and keeps concurrency low (default 2) to spend as little of it as possible.

**Q: How accurate are the sales estimates?**
A: Order-of-magnitude. They are modeled from BSR with per-category calibrated curves, the same approach the subscription tools describe, and every record states its confidence and caveats. Use the band for sizing decisions; do not read the midpoint as a measurement.

**Q: Why no reviews or review sentiment?**
A: Review scraping is commoditized on the Apify Store at around $0.10 per thousand. This actor is the seller-intelligence layer instead: who sells, who controls the Buy Box, and how fast it moves.

**Q: What does "Buy Box winner" mean here?**
A: The featured offer Amazon was showing at fetch time. The Buy Box rotates, so treat it as a snapshot; run on a schedule to see control over time.

**Q: What happens when Amazon blocks a page?**
A: The client rotates its session and retries once; if still blocked you get a `fetch_error` record naming the page and suggesting `apify_proxy_groups=["RESIDENTIAL"]` with concurrency 1-2. The run continues with the remaining inputs and finishes SUCCEEDED.

**Q: Which marketplaces are supported?**
A: amazon.com, amazon.co.uk, amazon.de, and amazon.ca in v0.1. URLs and currency are built per marketplace.

### Save your input as an Apify Task

Click "Save as task" on the actor page, name it (e.g. `brand-audit-yourbrand-monthly`), and re-run the exact configuration in one click - or trigger it via API with the task id.

### Run this weekly with Apify Schedules

Schedules + `seller_monitor` is the intended production setup: [console.apify.com/schedules](https://console.apify.com/schedules) -> New schedule -> pick your saved Task -> cron `0 6 * * 1` (Mondays 06:00). Each scheduled run emits the change digest described below.

### Monitor mode (beta)

When the actor runs under a saved Task (Schedules included), it compares the current records against the previous scheduled run and emits a `monitor_digest` record: new / changed / removed sellers and rating deltas, plus a markdown digest. Set `monitor_webhook_url` to also receive the digest in Slack (or any Slack-compatible webhook). One `scheduled_delta_run` event ($0.050) is charged per digest.

### Related Actors

- [shopify-store-discovery](https://apify.com/seibs.co/shopify-store-discovery) - find and qualify Shopify merchants (many also sell on Amazon).
- [app-store-revenue-estimator](https://apify.com/seibs.co/app-store-revenue-estimator) - the same modeled-estimate discipline, pointed at iOS / Google Play apps.
- [b2b-sales-triggers](https://apify.com/seibs.co/b2b-sales-triggers) - convert seller and brand events into outbound sales triggers.

### Support

Issues tab on this actor, or the contact form on my Apify profile. Bug reports with a run URL get fixed fastest.

### Changelog

See [CHANGELOG.md](./CHANGELOG.md).

### Found this useful?

If this actor saved you time or money, please consider leaving a quick review on the Apify Store - it is the single biggest signal for which features get built next. Leave a review: https://apify.com/seibs.co/amazon-seller-intel#reviews

# Actor input Schema

## `mode` (type: `string`):

seller\_profile = seller ids / storefront URLs -> seller records (name, published business name + address, rating %, ratings count, Just-Launched flag). asin\_offers = ASINs -> product summary + one offer record per All-Offers-Display offer (seller, price+shipping, condition, FBA/FBM/AMZ, Buy Box winner) + a BSR-based sales estimate per ASIN. brand\_audit = brand names -> sampled products -> one aggregate brand record (distinct sellers + est share, price dispersion, Buy-Box control %, total est monthly sales band) - the brand-protection record. seller\_monitor = a seller-id watchlist for Apify Schedules (rating / catalog deltas).

## `seller_ids` (type: `array`):

Amazon seller ids (the 13-14 char alphanumeric token like A2R2RITDJNW1Q6) or full sp?seller= / storefront s?me= URLs. Used by seller\_profile and seller\_monitor. Find the id in any 'Sold by' link or a storefront URL. Hard cap of 25.

## `asins` (type: `array`):

Amazon ASINs (10-char product ids, e.g. B07ZPKBL9V) or /dp/<ASIN> URLs. Used by asin\_offers. Each ASIN returns a product summary, its All-Offers-Display offers, and a BSR-based sales estimate. Hard cap of 100.

## `brands` (type: `array`):

Brand names to audit, e.g. \['Anker', 'AcmeBasics']. Used by brand\_audit. Each brand is searched, up to max\_products\_per\_brand products are sampled, and one aggregate brand record is produced (distinct sellers, price dispersion, Buy-Box control, est monthly sales band). Hard cap of 10.

## `marketplace` (type: `string`):

Which Amazon marketplace to query. com = amazon.com (US), co.uk = amazon.co.uk, de = amazon.de, ca = amazon.ca. URLs and currency are built per marketplace.

## `max_products_per_brand` (type: `integer`):

brand\_audit: how many products to sample per brand from the search results. More products = a more representative seller map and sales band, but more residential bandwidth. Default 16, hard cap 48.

## `max_offers_per_asin` (type: `integer`):

asin\_offers / brand\_audit: how many offers to keep per product from the All Offers Display (the Buy Box winner is always first). Default 10, hard cap 20.

## `monitor_webhook_url` (type: `string`):

When this actor runs under an Apify Schedule (seller\_monitor), post the change digest (rating / catalog deltas) to this Slack-compatible webhook URL.

## `use_apify_proxy` (type: `boolean`):

Route requests through Apify Proxy. Strongly recommended - Amazon blocks datacenter and unproxied traffic aggressively. Leave on.

## `apify_proxy_groups` (type: `array`):

Apify Proxy groups. RESIDENTIAL is the default and the realistic choice - Amazon is among the most bot-protected sites and routinely blocks DATACENTER. Residential bandwidth is the main cost driver of this actor (see the README).

## `concurrency` (type: `integer`):

Parallel Amazon fetches. Kept low on purpose - high concurrency trips Amazon's bot protection and wastes bandwidth on blocks. Default 2, hard cap 3.

## Actor input object example

```json
{
  "mode": "seller_profile",
  "seller_ids": [
    "A2R2RITDJNW1Q6"
  ],
  "asins": [],
  "brands": [],
  "marketplace": "com",
  "max_products_per_brand": 16,
  "max_offers_per_asin": 10,
  "monitor_webhook_url": "",
  "use_apify_proxy": true,
  "apify_proxy_groups": [
    "RESIDENTIAL"
  ],
  "concurrency": 2
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Narrow, token-efficient slice of every record. Consumer: LLM agents (Claude, GPT, LangChain tools), MCP hosts, dashboards.

## `datasetItemsSellers` (type: `string`):

Seller records: name, published business name + address, ratings by window, Just-Launched, storefront. Consumer: brand protection, distributor vetting, KYB.

## `datasetItemsOffers` (type: `string`):

One row per offer: seller, price + shipping, condition, channel, Buy Box winner. Consumer: pricing / Buy-Box monitoring, reseller mapping.

## `datasetItemsBrandAudits` (type: `string`):

One row per brand: distinct sellers, price dispersion, Buy-Box control, total est monthly sales band. Consumer: brand owners, agencies, PL research.

## `datasetItemsMcp` (type: `string`):

First 50 overview records as a clean JSON array. Wrap on the agent side in an MCP tool-call envelope. Consumer: MCP servers, Claude Desktop, Cursor, OpenAI Assistants tool calls.

## `datasetItemsCsv` (type: `string`):

Spreadsheet-friendly export of the overview view. Consumer: analysts, Excel / Google Sheets users.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "seller_profile",
    "seller_ids": [
        "A2R2RITDJNW1Q6"
    ],
    "marketplace": "com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("seibs.co/amazon-seller-intel").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "seller_profile",
    "seller_ids": ["A2R2RITDJNW1Q6"],
    "marketplace": "com",
}

# Run the Actor and wait for it to finish
run = client.actor("seibs.co/amazon-seller-intel").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "seller_profile",
  "seller_ids": [
    "A2R2RITDJNW1Q6"
  ],
  "marketplace": "com"
}' |
apify call seibs.co/amazon-seller-intel --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=seibs.co/amazon-seller-intel",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Amazon Seller & Brand Intel - Sellers, Offers, Sales Estimates",
        "description": "Amazon seller and brand intelligence: seller storefront records, product offers, brand audits, and modeled sales estimates from public listing signals. For brand owners, agencies, and investors - the Jungle Scout/Helium 10 intel layer, priced per record.",
        "version": "0.1",
        "x-build-id": "WkR4k2xq92kC782FV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/seibs.co~amazon-seller-intel/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-seibs.co-amazon-seller-intel",
                "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/seibs.co~amazon-seller-intel/runs": {
            "post": {
                "operationId": "runs-sync-seibs.co-amazon-seller-intel",
                "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/seibs.co~amazon-seller-intel/run-sync": {
            "post": {
                "operationId": "run-sync-seibs.co-amazon-seller-intel",
                "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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "seller_profile",
                            "asin_offers",
                            "brand_audit",
                            "seller_monitor"
                        ],
                        "type": "string",
                        "description": "seller_profile = seller ids / storefront URLs -> seller records (name, published business name + address, rating %, ratings count, Just-Launched flag). asin_offers = ASINs -> product summary + one offer record per All-Offers-Display offer (seller, price+shipping, condition, FBA/FBM/AMZ, Buy Box winner) + a BSR-based sales estimate per ASIN. brand_audit = brand names -> sampled products -> one aggregate brand record (distinct sellers + est share, price dispersion, Buy-Box control %, total est monthly sales band) - the brand-protection record. seller_monitor = a seller-id watchlist for Apify Schedules (rating / catalog deltas).",
                        "default": "seller_profile"
                    },
                    "seller_ids": {
                        "title": "Seller ids or storefront / profile URLs",
                        "maxItems": 25,
                        "type": "array",
                        "description": "Amazon seller ids (the 13-14 char alphanumeric token like A2R2RITDJNW1Q6) or full sp?seller= / storefront s?me= URLs. Used by seller_profile and seller_monitor. Find the id in any 'Sold by' link or a storefront URL. Hard cap of 25.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "asins": {
                        "title": "ASINs",
                        "maxItems": 100,
                        "type": "array",
                        "description": "Amazon ASINs (10-char product ids, e.g. B07ZPKBL9V) or /dp/<ASIN> URLs. Used by asin_offers. Each ASIN returns a product summary, its All-Offers-Display offers, and a BSR-based sales estimate. Hard cap of 100.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "brands": {
                        "title": "Brand names",
                        "maxItems": 10,
                        "type": "array",
                        "description": "Brand names to audit, e.g. ['Anker', 'AcmeBasics']. Used by brand_audit. Each brand is searched, up to max_products_per_brand products are sampled, and one aggregate brand record is produced (distinct sellers, price dispersion, Buy-Box control, est monthly sales band). Hard cap of 10.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "marketplace": {
                        "title": "Marketplace",
                        "enum": [
                            "com",
                            "co.uk",
                            "de",
                            "ca"
                        ],
                        "type": "string",
                        "description": "Which Amazon marketplace to query. com = amazon.com (US), co.uk = amazon.co.uk, de = amazon.de, ca = amazon.ca. URLs and currency are built per marketplace.",
                        "default": "com"
                    },
                    "max_products_per_brand": {
                        "title": "Max products sampled per brand",
                        "minimum": 1,
                        "maximum": 48,
                        "type": "integer",
                        "description": "brand_audit: how many products to sample per brand from the search results. More products = a more representative seller map and sales band, but more residential bandwidth. Default 16, hard cap 48.",
                        "default": 16
                    },
                    "max_offers_per_asin": {
                        "title": "Max offers per ASIN",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "asin_offers / brand_audit: how many offers to keep per product from the All Offers Display (the Buy Box winner is always first). Default 10, hard cap 20.",
                        "default": 10
                    },
                    "monitor_webhook_url": {
                        "title": "Monitor webhook URL (Slack / email, optional)",
                        "type": "string",
                        "description": "When this actor runs under an Apify Schedule (seller_monitor), post the change digest (rating / catalog deltas) to this Slack-compatible webhook URL.",
                        "default": ""
                    },
                    "use_apify_proxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Route requests through Apify Proxy. Strongly recommended - Amazon blocks datacenter and unproxied traffic aggressively. Leave on.",
                        "default": true
                    },
                    "apify_proxy_groups": {
                        "title": "Proxy groups",
                        "type": "array",
                        "description": "Apify Proxy groups. RESIDENTIAL is the default and the realistic choice - Amazon is among the most bot-protected sites and routinely blocks DATACENTER. Residential bandwidth is the main cost driver of this actor (see the README).",
                        "default": [
                            "RESIDENTIAL"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "concurrency": {
                        "title": "Max concurrent requests",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Parallel Amazon fetches. Kept low on purpose - high concurrency trips Amazon's bot protection and wastes bandwidth on blocks. Default 2, hard cap 3.",
                        "default": 2
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
