# Amazon Scraper Agent (`kernvex/amazon-scraper-agent`) Actor

Scrape real-time Amazon product data, ASINs, reviews, bestsellers & deals across 20 global regions. Bypass captchas with real-browser rendering and sub-50ms caching. Get structured JSON & built-in price history. The ultimate Amazon scraper for e-commerce, dropshipping, and retail analytics.

- **URL**: https://apify.com/kernvex/amazon-scraper-agent.md
- **Developed by:** [Kern](https://apify.com/kernvex) (community)
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $50.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Product Data API & Scraper

Extract structured Amazon product and marketplace data through a single API-powered Apify Actor. Query products by ASIN, search Amazon by keyword, retrieve reviews, offers, variations, price history, deals, bestsellers, categories, storefronts, brands, recommendations, Q\&A, delivery estimates, and more across **20 Amazon marketplaces**.

This Actor is powered by the KernVex Amazon data API. Apify handles the Actor interface, execution, storage, automation, and distribution while the backend performs the Amazon data collection.

### What you can do

- **Amazon Product API** — product details, pricing, availability, ratings, images, features, ranks, and variations.
- **Amazon Search API** — keyword search with ASIN, title, price, rating, reviews, Prime, sponsored, coupon, and delivery data.
- **Amazon Product Reviews API** — paginated reviews with ratings, authors, verification, helpful counts, dates, and variants.
- **Amazon Offers API** — buy-box and third-party seller offers, fulfillment, shipping, condition, and Prime status.
- **Amazon Price History API** — persistent price and availability history for price monitoring and drop alerts.
- **Amazon Best Sellers API** — ranked best-selling products by marketplace.
- **Amazon Deals API** — today's deals, savings, deal type, expiration, category, and images.
- **Amazon Category API** — category tree and products within a category.
- **Amazon Brand API** — brand metadata and top products.
- **Amazon Storefront API** — storefront metadata, ratings, followers, product counts, and top products.
- **Amazon Recommendation API** — "more like this" product recommendations.
- **Amazon Q\&A API** — customer questions and top-voted answers.
- **Amazon Delivery API** — region-aware delivery estimates using a postal code.
- **Amazon Autosuggest API** — type-ahead keyword suggestions.
- **20 Amazon marketplaces** through one `region` parameter.

### How the Actor works

```text
Apify input
    ↓
Amazon Product Data API & Scraper Actor
    ↓
KernVex Amazon API
    ↓
JSON response
    ↓
Apify dataset / Actor output
```

The backend API is keyless. Users do not need to provide an API key to this Actor.

### Quick start

Product lookup:

```json
{"endpoint":"products/{asin}","asin":"B0BSHF7WHW","region":"us"}
```

Amazon search:

```json
{"endpoint":"search","q":"air fryer","region":"us","page":1}
```

Bestsellers:

```json
{"endpoint":"bestsellers","region":"us"}
```

Today's deals:

```json
{"endpoint":"deals","region":"us"}
```

Price history:

```json
{"endpoint":"products/{asin}/price-history","asin":"B0BSHF7WHW","region":"us","limit":200}
```

### Supported endpoints

#### Product data

| Actor endpoint | Backend route | Main parameters |
|---|---|---|
| `products/{asin}` | `/api/v1/products/{asin}` | `asin`, `region`, `nocache` |
| `products/{asin}/full` | `/api/v1/products/{asin}/full` | `asin`, `region` |
| `products/{asin}/reviews` | `/api/v1/products/{asin}/reviews` | `asin`, `region`, `page`, `sort`, `nocache` |
| `products/{asin}/offers` | `/api/v1/products/{asin}/offers` | `asin`, `region`, `nocache` |
| `products/{asin}/variations` | `/api/v1/products/{asin}/variations` | `asin`, `region`, `nocache` |
| `products/{asin}/price-history` | `/api/v1/products/{asin}/price-history` | `asin`, `region`, `since`, `limit` |
| `products/{asin}/aplus` | `/api/v1/products/{asin}/aplus` | `asin`, `region` |
| `products/{asin}/recommendations` | `/api/v1/products/{asin}/recommendations` | `asin`, `region`, `nocache` |
| `products/{asin}/qna` | `/api/v1/products/{asin}/qna` | `asin`, `region`, `nocache` |
| `products/{asin}/fbt` | `/api/v1/products/{asin}/fbt` | `asin`, `region`, `nocache` |
| `products/{asin}/videos` | `/api/v1/products/{asin}/videos` | `asin`, `region`, `nocache` |
| `products/{asin}/badges` | `/api/v1/products/{asin}/badges` | `asin`, `region` |
| `products/{asin}/promotions` | `/api/v1/products/{asin}/promotions` | `asin`, `region` |
| `products/{asin}/delivery` | `/api/v1/products/{asin}/delivery` | `asin`, `region`, `postal`, `nocache` |

#### Catalog and marketplace data

| Actor endpoint | Backend route | Main parameters |
|---|---|---|
| `search` | `/api/v1/search` | `q`, `region`, `page`, `nocache` |
| `deals` | `/api/v1/deals` | `region`, `nocache` |
| `deals/{node}` | `/api/v1/deals/{node}` | `node`, `region`, `nocache` |
| `bestsellers` | `/api/v1/bestsellers` | `region`, `nocache` |
| `categories` | `/api/v1/categories` | `region`, `nocache` |
| `categories/{node}` | `/api/v1/categories/{node}` | `node`, `region`, `nocache` |
| `stores/{store}` | `/api/v1/stores/{store}` | `store`, `region`, `nocache` |
| `brands/{slug}` | `/api/v1/brands/{slug}` | `slug`, `region`, `nocache` |
| `autosuggest` | `/api/v1/autosuggest` | `q`, `region` |
| `regions` | `/api/v1/regions` | none |

### Amazon marketplaces

20 marketplaces are supported:

`us`, `uk`, `de`, `fr`, `it`, `es`, `nl`, `jp`, `in`, `ca`, `mx`, `br`, `au`, `sg`, `ae`, `sa`, `eg`, `pl`, `se`, `tr`.

The default is `us`.

### Input parameters

- **`endpoint`** — required operation selector.
- **`asin`** — 10-character Amazon product identifier.
- **`q`** — keyword for search/autosuggest.
- **`region`** — marketplace code; defaults to `us`.
- **`node`** — category node ID.
- **`store`** — storefront ID.
- **`slug`** — brand slug.
- **`page`** — search/review page, 1–50.
- **`sort`** — reviews: `recent` or `helpful`.
- **`limit`** — price-history rows, 1–2000; default 200.
- **`since`** — RFC 3339 price-history cutoff.
- **`postal`** — postal code for delivery estimates.
- **`nocache`** — request a fresh fetch where supported.

### Response format

Most core product and catalog endpoints return:

```json
{
  "meta": {
    "request_id": "prod-9f1c...",
    "region": "us",
    "cached": false,
    "latency_ms": 1834,
    "retries_used": 0
  },
  "data": {}
}
```

Some lightweight endpoints return their payload directly, including A+ content, recommendations, Q\&A, frequently-bought-together, videos, badges, promotions, delivery, autosuggest, and regions.

### Performance and caching

Documented backend behavior:

- Product details, offers, and variations: about 3–8 seconds cold, under 50 ms warm.
- Reviews and Q\&A: about 3–8 seconds cold, under 50 ms warm.
- Search, deals, bestsellers, and categories: about 2–5 seconds cold, under 50 ms warm.
- Price history: generally under 10 ms.

Typical cache TTLs are 6 hours for products, 2 hours for reviews/Q\&A, and 30 minutes for search/deals/bestsellers/categories.

Set `nocache` to `true` when a fresh fetch is required.

### Error handling

Structured errors include:

| Code | HTTP | Meaning |
|---|---:|---|
| `VALIDATION_ERROR` | 400 | Invalid input |
| `NOT_FOUND` | 404 | Resource not found |
| `REGION_NOT_SUPPORTED` | 404 | Unsupported marketplace |
| `RATE_LIMITED` | 429 | Caller request budget exceeded |
| `INTERNAL_RATE_LIMITED` | 429 | Marketplace-side throttling |
| `CIRCUIT_OPEN` | 503 | Marketplace circuit breaker open |
| `CAPTCHA_DETECTED` | 403 | Amazon returned a CAPTCHA challenge |
| `SCRAPER_ERROR` | 502 | Underlying Amazon fetch failed |
| `CACHE_ERROR` | 500 | Cache subsystem failure |
| `INTERNAL_ERROR` | 500 | Unexpected backend failure |

When `retry_after` is returned, wait before retrying.

### Use cases

#### Amazon price monitoring and price-drop alerts

Combine product details with price history to monitor pricing and availability.

#### Amazon product research

Search by keyword and retrieve rich product data for selected ASINs.

#### Amazon competitor monitoring

Track pricing, offers, ratings, reviews, availability, and category rank.

#### Amazon deal aggregation

Use deals and category-deals endpoints to build deal feeds.

#### Amazon bestseller and trend analysis

Combine bestsellers, categories, product data, and price history.

#### Amazon catalog enrichment

Use product details, variations, offers, recommendations, Q\&A, videos, badges, promotions, and A+ content.

#### International Amazon marketplace research

Use `region` to query the same API across 20 marketplaces.

### FAQ

#### How many marketplaces are supported?

20 Amazon marketplaces.

#### What is an ASIN?

Amazon's 10-character product identifier, for example `B0BSHF7WHW`.

#### Can I request fresh Amazon data?

Yes. Set `nocache` to `true` on endpoints that support it.

#### Does every endpoint return `{ meta, data }`?

No. Several lightweight endpoints return their payload directly.

### Important notes

This Actor is an independent Amazon data service and is not affiliated with, endorsed by, or sponsored by Amazon.

Data is provided as-is. Users are responsible for complying with Amazon's Terms of Service, applicable laws, and other rules relevant to their use of collected data.

# Actor input Schema

## `action` (type: `string`):

The type of data to fetch from Amazon.

## `asin` (type: `string`):

Amazon Standard Identification Number (10 chars). Required for product, reviews, offers, price-history, and full.

## `query` (type: `string`):

Keyword to search for. Required if action is 'search'.

## `region` (type: `string`):

Amazon marketplace region code.

## `nocache` (type: `boolean`):

Force a fresh fetch instead of using the sub-50ms cache.

## `page` (type: `integer`):

Page number for search or reviews (1-50).

## `postal_code` (type: `string`):

Postal code for delivery estimates (region-aware).

## Actor input object example

```json
{
  "action": "product",
  "asin": "B0BSHF7WHW",
  "query": "air fryer",
  "region": "us",
  "nocache": false,
  "page": 1
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "asin": "B0BSHF7WHW",
    "query": "air fryer"
};

// Run the Actor and wait for it to finish
const run = await client.actor("kernvex/amazon-scraper-agent").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 = {
    "asin": "B0BSHF7WHW",
    "query": "air fryer",
}

# Run the Actor and wait for it to finish
run = client.actor("kernvex/amazon-scraper-agent").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 '{
  "asin": "B0BSHF7WHW",
  "query": "air fryer"
}' |
apify call kernvex/amazon-scraper-agent --silent --output-dataset

```

## MCP server setup

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

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/SRw6leDmXj3v7U4hh/builds/D6icti4wxBwHbhgUY/openapi.json
