# Amazon Seller Scraper — Seller Data, Feedback & Products (`zapticx/amazon-seller-data-scraper`) Actor

Find Amazon sellers by keyword, ASIN or seller ID. Extract seller profiles, 30-day to lifetime ratings, feedback, storefront products and public business details from Amazon US, Canada, UK, Germany and France.

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

## Pricing

from $4.00 / 1,000 seller profile delivereds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Amazon Seller Scraper — Seller Data, Feedback & Products

Find Amazon sellers (merchants) and extract their public seller data: **seller profiles, 30-day to lifetime feedback ratings, individual
feedback, storefront products with prices, and public business details**. Look sellers up by seller ID or URL, or discover them
from ASINs and search keywords. Then keep only the sellers that match your rating, feedback-count or business-country filters.

**Supports Amazon US, Canada, UK, Germany and France.** Available seller, business and product fields vary by marketplace and
seller profile.

Use it to:

- **Research competitors:** who sells in your category, how they are rated, and what else they sell.
- **Vet suppliers and marketplace sellers** by reputation before you buy from or partner with them.
- **Build B2B prospect lists** of Amazon businesses from the public business information Amazon displays.
- **Monitor seller reputation** over 30 days, 90 days, 12 months and lifetime.

### What you get

| Output | What it contains | Billing |
|---|---|---|
| **Sellers** (default dataset) | One row per seller: name, Amazon seller ID, marketplace, reputation for 4 periods, public business details, links, how the seller was found | 1 `seller` event per seller row with status OK |
| **Feedback** (optional) | One row per individual feedback record: rating, text, date, buyer name, suppression flag, seller response | 1 `feedback` event per row |
| **Products** (optional) | One row per unique storefront product: ASIN, title, price and currency, reference price, discount, rating, rating count | 1 `product` event per row |
| `RUN_SUMMARY`, `PRODUCT_DISCOVERY`, `SEARCH_DISCOVERY` records | What the run did, which products and search results led to which sellers, and why sellers were filtered out | free |

### Supported marketplaces

| Marketplace | Seller profiles and reputation | Feedback | Storefront products | Discovery from ASINs and keywords | Prices |
|---|---|---|---|---|---|
| amazon.com — United States | ✓ | ✓ | ✓ | ✓ | USD |
| amazon.ca — Canada | ✓ | ✓ | ✓ | ✓ | CAD |
| amazon.co.uk — United Kingdom | ✓ | ✓ | ✓ | ✓ | GBP |
| amazon.de — Germany | ✓ | ✓ | ✓ | ✓ | EUR |
| amazon.fr — France | ✓ | ✓ | ✓ | ✓ | EUR |

Other Amazon marketplaces are not supported yet. Their links are reported as invalid input and not fetched.

### Three ways to find sellers

1. **Seller IDs or seller URLs.** Paste seller IDs (e.g. `A294P4X9EWVXLJ`), seller profile links, storefront links or "Sold by"
   links. A URL selects its own marketplace from its domain.
2. **Products (ASINs or product URLs).** Get the seller of the featured offer (the Buy Box seller) or every seller offering the
   product.
3. **Search keywords.** Search Amazon, then find the sellers behind the products in the results.

You can combine all three in one run. A seller found several ways is looked up once and appears once, with a `discoverySource`
showing how it was found (`SELLER_INPUT`, `PRODUCT_INPUT`, `KEYWORD_SEARCH`).

### Seller data

- **Identity:** seller ID, seller name, marketplace, profile, storefront and "Ask a question" links.
- **Reputation for 30 days, 90 days, 12 months and lifetime:** average rating, rating count, positive / neutral / negative share.
- **About:** the seller's own About text, returned as written.
- **Public business information** such as business name, address, VAT/tax identifiers, phone, trade register number, customer
  services address and email. It is returned **only when Amazon displays it on the seller profile**, and availability varies by
  marketplace and seller:
  - **Amazon US:** seller profiles usually display a business name and address.
  - **Amazon UK:** profiles can also display a VAT number, phone number, trade register number and customer services address.
  - **Amazon Germany and France:** profiles can display business name, address, VAT number, phone number, trade register number,
    customer services address and a public email address. Other labelled details (for example share capital) are kept in
    `additionalBusinessDetails`.
  - **Amazon Canada:** in our testing, Amazon.ca seller profiles displayed no business-details block, so these fields are empty
    there.
- **`email`:** the public seller email that Amazon displays in the seller's structured business information. It is currently filled
  on Amazon Germany and France only. It is never taken from About text, websites or any other source, and it is empty wherever
  Amazon does not display it.
- **Nothing is inferred.** A seller's business country comes only from the business address Amazon displays, never from the
  marketplace where the seller was found.
- **`isAmazon`** marks Amazon's own seller accounts. Offers sold by Amazon itself without a seller profile never become rows, for
  example:
  - Amazon.com, Amazon.ca, or plain "Amazon" on amazon.co.uk, amazon.de and amazon.fr;
  - Amazon Resale, Amazon Retourenkauf, Amazon Seconde main, Warehouse Deals.

### Feedback data (optional)

Turn on **Include individual seller feedback** to collect the feedback records Amazon lists on each seller's profile, newest first,
up to your per-seller limit (default 25). Each row has:

- rating, text and author;
- the date (as shown, and as an ISO date when it parses unambiguously);
- whether Amazon suppressed the rating, and why;
- the seller's response and its date, if any.

Feedback is returned in the language it was written in (English, French, German or another language) and is not translated.

### Product data (optional)

Turn on **Include seller products** to collect the products in each seller's Amazon storefront, up to your per-seller limit
(default 16, one storefront page). Each row has:

- ASIN, title, product link and image;
- current price in the marketplace currency, with the raw price text;
- `listPrice`, the reference price Amazon displays, with `priceReferenceType` naming its label: `LIST` on Amazon US and Canada,
  `RRP` on Amazon UK, Germany and France. "Was", "Typical", the EU "Lowest" price notice and per-unit prices are never used as a
  reference price;
- discount against that reference price;
- rating and exact rating count.

### Filters

Keep only the sellers you want. Filters apply to every seller, including sellers you list directly. Sellers removed by a filter
**get no row and are not billed**; they are counted in `RUN_SUMMARY`.

- **Minimum seller rating, minimum / maximum rating count, minimum positive-feedback %**, for the period you choose: 30 days,
  90 days, 12 months (default) or lifetime.
- **Business countries**, matched against the displayed business address. A seller without a displayed address does not pass, so
  this filter removes every seller on Amazon Canada.
- **Exclude Amazon's own seller accounts.**

### Limits that keep runs predictable

- **Maximum results** (default 100; 0 = no limit): the most sellers delivered and billed. When it is reached, the run stops
  searching, checking products and looking up sellers.
- **Maximum sellers found through products** (default 100): the most new sellers looked up from products and search results,
  including sellers the filters remove.
- **Per-seller limits** for feedback (default 25) and products (default 16), and **products per search term** (default 20).

With Maximum results set, each row is written as soon as its seller passes, so `discoverySource`, `sourceAsins` and
`sourceSearchTerms` show what had been found by then. `PRODUCT_DISCOVERY` and `SEARCH_DISCOVERY` keep the full detail.

### Pricing

Pay per result. The same prices apply on every supported marketplace:

| Event | Price | Per 1,000 |
|---|---|---|
| Seller row delivered (status OK) | $0.004 | $4.00 |
| Feedback row (optional) | $0.0005 | $0.50 |
| Product row (optional) | $0.001 | $1.00 |

Seller charges apply only to seller rows delivered with status OK. Feedback and product charges apply only to rows written
to those datasets, up to your per-seller limits.

**Not billed:**

- sellers removed by filters, and sellers not looked up because a limit was reached;
- seller rows with any status other than OK (for example NOT\_FOUND, NO\_PROFILE or BLOCKED), and invalid inputs;
- duplicates and retries;
- Amazon's own offers;
- search and product-discovery requests.

**Example:** 100 sellers with 25 feedback rows and 16 products each costs $0.40 + $1.25 + $1.60 = **$3.25**, plus Apify's
standard run-start charge of $0.00005.

### Input examples

Look up sellers directly:

```json
{ "sellers": ["A294P4X9EWVXLJ", "https://www.amazon.com/sp?seller=A2A9MTHG33B8AH"] }
```

Find well-rated sellers for a keyword on Amazon Canada:

```json
{ "marketplace": "CA", "searchTerms": ["standing desk"], "minFeedbackCount": 100, "minPositiveFeedbackPct": 95, "maxResults": 50 }
```

UK sellers with their storefront products (GBP) and latest feedback:

```json
{ "marketplace": "UK", "searchTerms": ["garden hose"], "businessCountries": ["GB"], "includeFeedback": true,
  "maxFeedbackPerSeller": 25, "includeProducts": true, "maxProductsPerSeller": 32, "maxResults": 25 }
```

German sellers based in Germany, rated on the last 90 days:

```json
{ "marketplace": "DE", "searchTerms": ["gartenschlauch"], "businessCountries": ["DE"], "filterPeriod": "90_days",
  "minFeedbackCount": 20, "maxResults": 25 }
```

Established sellers on Amazon France with their storefront products (EUR):

```json
{ "marketplace": "FR", "searchTerms": ["lampe de bureau"], "productSellerMode": "all_offers", "minFeedbackCount": 100,
  "includeProducts": true, "maxProductsPerSeller": 16, "maxResults": 25 }
```

Every seller offering some products, with their latest feedback:

```json
{ "products": ["B0CG1LGWR6", "https://www.amazon.ca/dp/B07DC5PPFV"], "productSellerMode": "all_offers",
  "includeFeedback": true, "maxFeedbackPerSeller": 25 }
```

### API and integrations

Run the Actor from the Apify Console, on a schedule, or through the Apify API with the same JSON input. The Apify API clients for
Python and JavaScript, webhooks, and Apify's integrations with tools such as Make, Zapier and n8n all work with it. Download each
dataset as JSON, CSV, Excel or XML. Every feedback and product row carries the seller ID, seller name and marketplace, so each
dataset stands on its own.

### Good to know

- **Results are a snapshot** of what Amazon shows at the time of the run. Search order, featured sellers, prices and ratings change
  over time.
- **Search depth:** Amazon shows at most about 7 search result pages per term.
- **Filters and missing ratings:** a seller with no ratings in the selected period does not pass rating, count or percentage filters.
- **Keep the default proxy settings.** Amazon UK, Germany and France show some pages differently depending on the visitor's
  country, and the default settings route each request to fit. When the Actor can tell that the proxy location does not
  match a marketplace that needs local access, products whose offers are hidden are reported as `NOT_AVAILABLE_TO_LOCATION`
  instead of as having no offers. Custom proxy settings can still change which offers and products Amazon shows.
- **Unreadable sellers** are reported with a clear status (for example NOT\_FOUND, NO\_PROFILE or BLOCKED) and are never billed.
- **Out of scope:** this Actor does not estimate sales or revenue, track Buy Box or price history, calculate FBA fees or profit, or
  enrich sellers with data from outside Amazon.

### Responsible use

This Actor collects data that Amazon publishes openly on seller profiles and storefronts. Contact and business details appear only
when Amazon displays them. You are responsible for using the data lawfully, including data-protection and marketing rules (for
example GDPR in the UK and EU) when you contact businesses.

### Support

Built and maintained by [Zapticx](https://zapticx.com). Questions, bugs or a marketplace you need? Open an issue on the Actor's
Issues tab.

# Actor input Schema

## `searchTerms` (type: `array`):

Find sellers through Amazon search: each term's results (up to the limit below) go through the same seller discovery as Products. Extra spaces and duplicates are removed. Up to 20 terms. Provide search terms, products, sellers, or any combination.

## `maxSearchProductsPerTerm` (type: `integer`):

Distinct products taken from each term's results, in Amazon's order (48 per result page; Amazon shows at most 7 pages). Terms x this limit may not exceed 1000 per run.

## `sellers` (type: `array`):

Amazon seller IDs (e.g. A294P4X9EWVXLJ) or seller page links: seller profile (/sp?seller=…), storefront (/s?me=…, /shops/…) or the 'Sold by' link from a product page. Duplicates are removed; values that are not a seller ID or seller URL are reported as INVALID\_INPUT and not fetched. Up to 500 per run.

## `products` (type: `array`):

Find the sellers of these products: ASINs (e.g. B0CG1LGWR6) or Amazon product links (/dp/…, /gp/product/…). Tracking parameters are ignored and duplicates removed. Each seller found is looked up once, however many products list it. Up to 200 per run. Provide sellers, products, or both.

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

The Amazon store used for seller IDs, bare ASINs (e.g. B0CG1LGWR6) and search terms. Seller and product URLs carry their own store in their domain (amazon.com, amazon.ca, amazon.co.uk, amazon.de or amazon.fr) and are looked up there whatever this setting is.

## `maxResults` (type: `integer`):

The most sellers delivered (and billed): sellers that load and pass your filters. Once reached, the run stops searching, checking products and looking up sellers. Sellers removed by the filters do not count. Applies to sellers you list too: raise it if you list more sellers than this. 0 = no limit.

## `productSellerMode` (type: `string`):

Featured offer: the seller of the offer Amazon features on the product page (the Buy Box). All sellers: every seller in Amazon's 'Other sellers' list, up to the limit below. Amazon's own offers (Amazon.com, Amazon Resale, AmazonFresh) have no seller profile and are only reported in the PRODUCT\_DISCOVERY record.

## `maxSellersPerProduct` (type: `integer`):

All-sellers mode only: the most distinct sellers taken from one product, in Amazon's offer order.

## `maxDiscoveredSellers` (type: `integer`):

The most new sellers (not already requested directly) looked up from all products together, including sellers the filters then remove (this bounds the lookups, Maximum results bounds the delivered rows). Sellers beyond it are listed in PRODUCT\_DISCOVERY but not looked up or billed.

## `includeFeedback` (type: `boolean`):

Also collect the individual feedback records Amazon lists on each seller's profile (rating, text, date, buyer name, suppression flag and seller response) into the separate Feedback dataset. Each feedback row is billed separately; off by default.

## `maxFeedbackPerSeller` (type: `integer`):

Exact upper limit of feedback rows delivered (and billed) per seller, newest first. Fewer are delivered when Amazon lists fewer. Amazon lists 5 per page, so the limit also bounds the pages read.

## `includeProducts` (type: `boolean`):

Also collect the products listed in each seller's Amazon storefront (ASIN, title, price, list price, rating and exact rating count) into the separate Products dataset. Each product row is billed separately; off by default.

## `maxProductsPerSeller` (type: `integer`):

Exact upper limit of unique products delivered (and billed) per seller, in storefront order. Amazon shows 16 per storefront page, and each page takes a few seconds, so large limits across many sellers make long runs (the run log warns when the estimate exceeds 10 minutes).

## `filterPeriod` (type: `string`):

Which of Amazon's feedback periods the rating, feedback-count and positive-% filters use. Sellers that fail any filter are not output, not billed, and get no feedback or product lookups; they are counted in RUN\_SUMMARY. Filters apply to every seller, including sellers you list directly.

## `minSellerRating` (type: `string`):

1 to 5, e.g. 4.5 (inclusive, as Amazon displays it for the period). A seller with no rating in the period does not pass.

## `minPositiveFeedbackPct` (type: `integer`):

Share of 4-5 star ratings in the period (inclusive). A seller with no ratings in the period does not pass.

## `minFeedbackCount` (type: `integer`):

Seller ratings in the period (inclusive). Missing counts do not pass.

## `maxFeedbackCount` (type: `integer`):

Seller ratings in the period (inclusive), e.g. to find smaller sellers. Missing counts do not pass.

## `businessCountries` (type: `array`):

Only sellers whose business address country (two-letter code, e.g. US, CN, DE) is in this list. The country comes only from the business address the seller profile displays and is never assumed from the marketplace, so sellers without a displayed address do not pass. Amazon Canada shows no business address, so this filter removes every seller found on amazon.ca.

## `excludeAmazon` (type: `boolean`):

Skip Amazon's own selling entities that have a seller profile (e.g. 'Amazon Germany', 'Amazon US'). Amazon's own retail offers without a seller profile (e.g. Amazon.com, Amazon.ca, Amazon, Amazon Resale, Amazon Retourenkauf, Warehouse Deals) never become seller rows either way.

## `proxyConfiguration` (type: `object`):

Leave this at the default (Apify Proxy) unless you have a specific reason to change it. With the default, the Actor chooses the connection for each marketplace itself: standard Apify proxies for Amazon US and Canada, UK residential proxies for Amazon UK, and local residential proxies for the Amazon Germany and France pages whose results depend on the visitor's country. If you choose residential proxy yourself, its country defaults to the Marketplace setting. Other proxy settings can change which offers and products Amazon shows.

## `maxConcurrency` (type: `integer`):

How many sellers are fetched at the same time, each on its own proxy session with human-scale pacing.

## `failRunIfUnhealthyPercentAbove` (type: `integer`):

Optional. Seller rows already delivered are kept (and billed); the run status just turns FAILED so alerts and schedules can react. Sellers that do not exist (NOT\_FOUND) do not count as unhealthy.

## Actor input object example

```json
{
  "maxSearchProductsPerTerm": 20,
  "sellers": [
    "A294P4X9EWVXLJ",
    "https://www.amazon.com/sp?seller=A2A9MTHG33B8AH",
    "A3ISN3IGK0NJQ9"
  ],
  "marketplace": "US",
  "maxResults": 100,
  "productSellerMode": "featured_offer",
  "maxSellersPerProduct": 10,
  "maxDiscoveredSellers": 100,
  "includeFeedback": false,
  "maxFeedbackPerSeller": 25,
  "includeProducts": false,
  "maxProductsPerSeller": 16,
  "filterPeriod": "12_months",
  "excludeAmazon": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 5
}
```

# Actor output Schema

## `sellers` (type: `string`):

One row per delivered seller: status, seller name, reputation, and business fields when the seller profile displays them.

## `reputation` (type: `string`):

Rating, count and positive/neutral/negative share for the last 30 days, 90 days, 12 months and lifetime.

## `business` (type: `string`):

Public business and contact fields, only when the marketplace and seller profile display them (amazon.ca shows none).

## `feedback` (type: `string`):

Individual feedback records (only when 'Include individual seller feedback' is on).

## `products` (type: `string`):

Products from each seller's storefront (only when 'Include seller products' is on).

## `productDiscovery` (type: `string`):

Per product input: status, featured-offer seller, every seller found in offer order and Amazon's own offers (only when products were given).

## `searchDiscovery` (type: `string`):

Per search term: status, pages read, and the products taken with their result position and page (only when search terms were given).

## `runSummary` (type: `string`):

Input counts, seller and feedback statuses, requests, retries, challenges and charged events.

# 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 = {
    "sellers": [
        "A294P4X9EWVXLJ",
        "https://www.amazon.com/sp?seller=A2A9MTHG33B8AH",
        "A3ISN3IGK0NJQ9"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("zapticx/amazon-seller-data-scraper").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 = {
    "sellers": [
        "A294P4X9EWVXLJ",
        "https://www.amazon.com/sp?seller=A2A9MTHG33B8AH",
        "A3ISN3IGK0NJQ9",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "sellers": [
    "A294P4X9EWVXLJ",
    "https://www.amazon.com/sp?seller=A2A9MTHG33B8AH",
    "A3ISN3IGK0NJQ9"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call zapticx/amazon-seller-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zapticx/amazon-seller-data-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4SNk31O2u6TSypNw9/builds/QhciaivEUeWAQoRLv/openapi.json
