# Amazon Product Scraper (`deanko/amazon-product-scraper`) Actor

Scrape Amazon products by keyword or ASIN: price, rating, review count, stock, images and features. 11 marketplaces with local prices via auto country-matched proxy. Export JSON, CSV, Excel.

- **URL**: https://apify.com/deanko/amazon-product-scraper.md
- **Developed by:** [dean ko](https://apify.com/deanko) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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 Product Scraper — prices, reviews, Best Sellers Top 100

Scrape Amazon search results and product pages in seconds. Enter **keywords** or **ASINs / product URLs** and get clean, structured product data: title, brand, price, currency, rating, review count, availability, images, bullet-point features, sponsored flag and search position.

Works on **11 Amazon marketplaces**: amazon.com, .ca, .co.uk, .de, .fr, .it, .es, .co.jp, .com.au, .in, .com.mx. The proxy country is matched to the marketplace automatically, so you get real local prices instead of "doesn't ship to your country" pages.

### What you can scrape

| Mode | Input | Output |
|---|---|---|
| **Search** | `keywords` | Products from search results with price, rating, reviews, sponsored flag and position |
| **Product details** | `asins` | Full product page: brand, price, stock, bullet features |
| **Reviews** | `reviewAsins` | Top reviews shown on the product page (~8-10 per product): rating, title, text, date, country, variant, verified purchase, helpful votes |
| **Best Sellers Top 100** | `bestsellerUrls` | Ranks 1-100 of any Best Sellers category. Ranks rendered by Amazon (about 60) include title, price, rating and review count; the rest include ASIN, rank and URL (pass them to `asins` for full details) |

Every item has a `type` field: `search`, `product`, `review` or `bestseller`.

### Use cases

- **Price monitoring** — track competitor prices and stock daily with Apify Schedules
- **Product research** — find best sellers, ratings and review counts for any niche
- **Affiliate & comparison sites** — keep product catalogs up to date
- **Best Sellers tracking** — monitor the Top 100 of any category daily
- **Review analysis** — sentiment and quality signals from top reviews
- **Market analysis** — see which products are sponsored vs. organic for a keyword

### Input

| Field | Description |
|---|---|
| `keywords` | Search terms, e.g. `vitamin d3`, `wireless earbuds` |
| `asins` | ASINs (`B0764MS2Q2`) or full product URLs |
| `reviewAsins` | ASINs or URLs to collect top reviews for |
| `bestsellerUrls` | Best Sellers category URLs, e.g. `https://www.amazon.com/gp/bestsellers/hpc/3773931` |
| `marketplace` | Amazon domain, default `com` |
| `maxItemsPerKeyword` | Max products per keyword (follows pagination) |
| `proxyConfiguration` | Residential proxy recommended (default) |

```json
{
  "keywords": ["vitamin d3"],
  "asins": ["B0764MS2Q2"],
  "marketplace": "com",
  "maxItemsPerKeyword": 50
}
```

### Output

Search result item:

```json
{
  "asin": "B0764MS2Q2",
  "url": "https://www.amazon.com/dp/B0764MS2Q2",
  "title": "Nutricost Vitamin D3 5,000 IU (125mcg), 240 Softgels",
  "price": 12.95,
  "currency": "$",
  "rating": 4.8,
  "reviewsCount": 5100,
  "image": "https://m.media-amazon.com/images/I/61Xq5zUAqoL._AC_UL320_.jpg",
  "sponsored": false,
  "keyword": "vitamin d3",
  "page": 1,
  "position": 2,
  "marketplace": "com",
  "scrapedAt": "2026-10-17T06:45:15.000Z"
}
```

Product items additionally include `brand`, `availability` and `features` (bullet points). Export as JSON, CSV, Excel or via API.

### Tips

- Amazon only shows the full review list to logged-in users, so this Actor returns the top reviews visible on the product page. Reviewer names are not collected.
- Search pages show rounded review counts (e.g. `5.1K` → `5100`); use ASIN lookup for exact counts.
- Combine with **Schedules** and **Webhooks** for automatic price alerts.

### Legal

This Actor only collects publicly available product information and no personal data. You are responsible for using the data in compliance with Amazon's terms and the laws that apply to you.

# Actor input Schema

## `keywords` (type: `array`):

e.g. vitamin d3

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

e.g. B00GB85JR4

## `reviewAsins` (type: `array`):

Get the top reviews (~8-10) shown on each product page: rating, title, text, date, verified purchase, helpful votes. Reviewer names are not collected.

## `bestsellerUrls` (type: `array`):

Amazon Best Sellers category URLs, e.g. https://www.amazon.com/gp/bestsellers/hpc/3773931. Returns the Top 100 (ranks 1-100).

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

Amazon domain to scrape, e.g. com (US), ca, co.uk, de, co.jp

## `maxItemsPerKeyword` (type: `integer`):

Stop after this many products per keyword.

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

Residential proxy recommended; Amazon blocks datacenter IPs quickly.

## Actor input object example

```json
{
  "keywords": [
    "vitamin d3"
  ],
  "bestsellerUrls": [],
  "marketplace": "com",
  "maxItemsPerKeyword": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "keywords": [
        "vitamin d3"
    ],
    "bestsellerUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("deanko/amazon-product-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 = {
    "keywords": ["vitamin d3"],
    "bestsellerUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("deanko/amazon-product-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 '{
  "keywords": [
    "vitamin d3"
  ],
  "bestsellerUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call deanko/amazon-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deanko/amazon-product-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/Esypi8AI2gDQvfYGp/builds/nd1TgjkJ54rfgWgDX/openapi.json
