# Amazon Scraper — Products, Prices, Reviews & Search (`trakk/amazon-scraper`) Actor

Scrape Amazon products with prices, ratings, reviews, images and specs — plus keyword search and price/rating monitoring. Request-only, no login.

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

## Pricing

from $3.00 / 1,000 product / search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Scraper — Products, Prices, Reviews & Search

**Pull any Amazon product into clean, structured data in seconds — prices, ratings, full reviews, images, specs, ASINs and Best Sellers Rank.** No login. No browser. No code. Just paste a link, an ASIN, or a keyword and hit start.

> ⚡ **Fast** · 🔓 **Login-free** · 💸 **Pay only for results** · 📄 **CSV / Excel / JSON / API** · 🌍 **12 marketplaces**

`🛍️ Products` · `🔎 Keyword search` · `⭐ Reviews in their own tab` · `📊 Specs & BSR` · `🎯 Price/rating filters` · `📈 Change tracking`

***

### 🤔 Why this scraper?

You want Amazon data — pricing, competitor research, review mining, dropshipping picks — but Amazon fights back with bot walls and login gates. Most tools break, need a browser, or drown you in messy HTML.

**This one just works.** It rotates fresh IPs until it gets a clean page, returns flat rows ready for a spreadsheet, and **never charges you for blocked or skipped pages** — you pay per result, not per attempt.

| ❌ Doing it by hand | ✅ With this Actor |
|---|---|
| Copy-paste, screenshots, guesswork | One click → structured rows |
| Blocked after a few pages | Auto IP rotation, keeps going |
| Reviews locked behind login | Reviews in a dedicated tab |
| Messy HTML to clean up | Flat CSV/Excel/JSON, ready to use |
| Pay for every failed request | **Pay only for results you keep** |

***

### 🔥 What you get

| Capability | What it does |
|---|---|
| 🛍️ **Any product** | Paste a URL or ASIN → full detail row (price, brand, specs, images, BSR) |
| 🔎 **Keyword search** | Search a term → every matching product card |
| 🧬 **Deep search** | Turn each search hit into a full product page |
| ⭐ **Reviews tab** | Every review: title, stars, text, author, photo, country, verified, helpful votes |
| 🎯 **Filters** | Price range, min rating, min review count — get only what matters |
| 🔀 **Sorting** | Price ↑/↓, best-rated, newest arrivals |
| 📈 **Price & rating monitor** | Track price, rating, review-count and BSR changes between runs |
| ⚡ **Fast & parallel** | Dozens of products per run, in seconds |

Mix products, ASINs and searches in **one run** — it all lands in one dataset.

***

### 🚀 Try it in 10 seconds

Paste this, hit **Start**:

```json
{
  "asins": ["B09B8V1LZ3", "B07FZ8S74R"],
  "includeReviews": true
}
```

You get two full product rows + their reviews. That's it.

**Search instead:**

```json
{
  "searchQueries": ["mechanical keyboard"],
  "sortBy": "rating",
  "minReviews": 100,
  "maxSearchResults": 48
}
```

**Full product pages for every search hit:**

```json
{
  "searchQueries": ["standing desk"],
  "searchDeep": true,
  "maxSearchResults": 20
}
```

> 💡 `maxItems` caps the whole run. Filters (`minPrice`, `maxPrice`, `minRating`, `minReviews`) + `sortBy` shape your search results.

***

### 💼 What people use it for

- 🏷️ **Price monitoring** — watch competitors and repricing opportunities daily
- 🔬 **Product research** — find winning products by rating, reviews and BSR
- ⭐ **Review mining** — pull hundreds of reviews for sentiment & feature analysis
- 📦 **Dropshipping / arbitrage** — scout niches and margins fast
- 📊 **Market intelligence** — feed clean Amazon data straight into your dashboards
- 🤖 **AI & ML** — build datasets for models from real product & review text

***

### 📤 What the data looks like

Every product is one flat row (trimmed):

```json
{
  "asin": "B09B8V1LZ3",
  "title": "Sony WH-1000XM4 Wireless Noise Canceling Headphones",
  "brand": "Sony",
  "price": 248.00,
  "listPrice": 349.99,
  "currency": "$",
  "rating": 4.7,
  "reviewCount": 41582,
  "availability": "In Stock",
  "features": ["Industry-leading noise cancellation", "30-hour battery life"],
  "category": ["Electronics", "Headphones", "Over-Ear Headphones"],
  "bestSellersRank": 12,
  "images": ["https://.../71o8Q5XJS5L.jpg"],
  "mainImage": "https://.../71o8Q5XJS5L.jpg",
  "reviewsFetchedCount": 8,
  "reviewRatingBreakdown": { "1": 0, "2": 0, "3": 1, "4": 1, "5": 6 },
  "reviews": [ /* full review objects — see below */ ],
  "scrapedAt": "2026-08-04T18:30:02Z"
}
```

#### 🧾 Product fields

`asin` · `title` · `url` · `brand` · `price` · `listPrice` · `currency` · `rating` · `reviewCount` · `availability` · `features` · `description` · `category` · `bestSellersRank` · `images` · `mainImage`

#### ⭐ Reviews — attached **and** in their own tab

Reviews are attached to each product *and* unwound into a dedicated **Reviews** tab — one row per review, ready to export on their own.

```json
{
  "reviewId": "R3GNQAQSHB4JEJ",
  "rating": 5,
  "reviewStars": "5 ★",
  "reviewTitle": "Excellent headphones",
  "text": "The sound is incredible and they are very comfortable...",
  "createdAt": "2026-07-25T00:00:00Z",
  "reviewerName": "John",
  "reviewerAvatarUrl": "https://.../avatar.jpg",
  "reviewCountry": "United States",
  "verifiedPurchase": true,
  "helpfulVotes": 4
}
```

Plus per-product review stats: `reviewsFetchedCount`, `reviewsAvailableCount`, `reviewRatingBreakdown`, `reviewTexts`, and more.

#### 📈 Change tracking (`growthMonitor: true`)

From the **second run onward**, each product carries `changes` — `priceDelta`, `ratingDelta`, `reviewCountDelta`, `bestSellersRankDelta`. Schedule it and watch the market move.

***

### 🗂️ Three ready-made tabs

| Tab | What you see |
|---|---|
| **Overview** | Image, title, brand, price, rating — the quick scan |
| **Products** | Full product rows with specs and category |
| **Reviews** | One row per review — product, stars, text, reviewer, verified, country, date |

***

### 📥 Input cheatsheet

| Field | What it does |
|---|---|
| `productUrls` | Product URLs (`/dp/…`) or ASINs |
| `asins` | Bare 10-char ASINs |
| `searchQueries` | Keywords to search |
| `searchDeep` | Full product page for each search hit |
| `maxSearchResults` · `maxPagesPerSearch` | How deep search goes |
| `sortBy` | `relevance` · `price_low` · `price_high` · `rating` · `newest` |
| `minPrice` · `maxPrice` · `minRating` · `minReviews` | Filter search results |
| `includeReviews` | Attach reviews (default on) |
| `growthMonitor` · `monitorKey` | Track changes across runs |
| `country` | Marketplace (12 supported) |
| `maxItems` | Global cap on saved items |
| `maxConcurrency` · `maxRetries` | Speed vs. thoroughness |
| `proxyConfiguration` | Residential (required for Amazon) |

Provide at least one of `productUrls`, `asins`, or `searchQueries`.

***

### 🌍 Marketplaces

🇺🇸 US · 🇬🇧 UK · 🇩🇪 Germany · 🇫🇷 France · 🇪🇸 Spain · 🇮🇹 Italy · 🇨🇦 Canada · 🇮🇳 India · 🇲🇽 Mexico · 🇧🇷 Brazil · 🇳🇱 Netherlands · 🇯🇵 Japan

***

### ❓ FAQ

**Do I need an Amazon login or cookies?**
No. Fully request-only — no account, no browser, no cookies.

**Do I pay for blocked pages?**
No. You're charged **per result saved**, never per request. Skipped ASINs go to a separate `errors` list — free.

**Can I get every review of a product?**
Amazon shows full review history only to logged-in users. This Actor returns the reviews Amazon embeds on the product page (usually ~8–12 recent ones) with **every field filled** — no login required.

**Will bad input break my run?**
No. Wrong input gets a clear message, never a failed run.

**Why is `changes` empty on my first run?**
It needs a previous run to compare against. Keep `growthMonitor` on and run on a schedule — changes appear from run #2.

**How do I keep exports clean?**
Output is already flat and spreadsheet-friendly. Turn off `includeReviews` for the leanest rows.

***

### 🏁 Ready?

Paste a link, an ASIN, or a keyword → **Start**. Clean Amazon data in seconds.

**🏷️ Tags:** `amazon` · `amazon scraper` · `product scraper` · `amazon reviews` · `price tracking` · `ecommerce` · `product research` · `asin` · `dropshipping`

# Actor input Schema

## `productUrls` (type: `array`):

Amazon product page URLs, e.g. https://www.amazon.com/dp/B09B8V1LZ3. Bare ASINs work here too.

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

Bare 10-character ASINs, e.g. B09B8V1LZ3. Handy when you already have a list.

## `searchQueries` (type: `array`):

Keywords to search on Amazon. Returns product cards; enable Deep search for full product pages.

## `searchDeep` (type: `boolean`):

Visit each search result's product page for complete data (specs, images, reviews). Slower and pulls more per result.

## `maxSearchResults` (type: `integer`):

Cap on products returned per search keyword.

## `maxPagesPerSearch` (type: `integer`):

How many result pages to page through per keyword.

## `sortBy` (type: `string`):

Ordering for search results.

## `minPrice` (type: `integer`):

Keep only search products at or above this price.

## `maxPrice` (type: `integer`):

Keep only search products at or below this price.

## `minRating` (type: `integer`):

Keep only products rated at least this many stars.

## `minReviews` (type: `integer`):

Keep only products with at least this many ratings.

## `includeReviews` (type: `boolean`):

Attach the reviews Amazon embeds on the product page (also shown in the Reviews tab). Turn off for the smallest rows.

## `growthMonitor` (type: `boolean`):

Compare price / rating / review count / Best Sellers Rank against the previous run and attach the changes. Schedule it to track over time.

## `monitorKey` (type: `string`):

Stable label that groups monitor snapshots across scheduled runs.

## `country` (type: `string`):

Which Amazon marketplace to scrape.

## `maxItems` (type: `integer`):

Global cap on saved items across the whole run. 0 = unlimited.

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

Amazon requires residential proxies. The default is tuned for reliable access — leave it as-is unless you know what you need.

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

How many pages to scrape in parallel.

## `maxRetries` (type: `integer`):

Fresh-IP rotations before giving up on a page (Amazon blocks a share of requests).

## `selfTest` (type: `boolean`):

Scrape a known product and verify Amazon still works — fails the run if the layout/anti-bot changed. For scheduled monitoring.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.amazon.com/dp/B09B8V1LZ3"
  ],
  "asins": [
    "B09B8V1LZ3",
    "B07FZ8S74R"
  ],
  "searchQueries": [
    "mechanical keyboard",
    "wireless earbuds"
  ],
  "searchDeep": false,
  "maxSearchResults": 48,
  "maxPagesPerSearch": 1,
  "sortBy": "relevance",
  "includeReviews": true,
  "growthMonitor": false,
  "monitorKey": "default",
  "country": "us",
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  },
  "maxConcurrency": 4,
  "maxRetries": 8,
  "selfTest": false
}
```

# 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 = {
    "productUrls": [
        "https://www.amazon.com/dp/B09B8V1LZ3"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("trakk/amazon-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 = { "productUrls": ["https://www.amazon.com/dp/B09B8V1LZ3"] }

# Run the Actor and wait for it to finish
run = client.actor("trakk/amazon-scraper").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 '{
  "productUrls": [
    "https://www.amazon.com/dp/B09B8V1LZ3"
  ]
}' |
apify call trakk/amazon-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/G3WW42VfUJe9QAEee/builds/rhg7bALqYcZCy1aoU/openapi.json
