# Amazon Scraper — Product & Price Search (US, UK, DE, SG, more) (`herus13/amazon-scraper`) Actor

Search Amazon and scrape products — title, price, original price, rating, reviews, Prime, image, and URL (ASIN). Output shares a schema with our Shopee & Lazada scrapers for cross-marketplace price comparison. CSV/JSON/Excel export.

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

## Pricing

from $5.00 / 1,000 products

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/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

**Amazon Scraper** is an Apify actor that searches [Amazon](https://www.amazon.com) by keyword and returns structured product + price data — ASIN, title, price, original price, currency, rating, review count, Prime, image, and product URL. Output shares a schema with our **Shopee** and **Lazada** scrapers, so you can normalize all three marketplaces into one dataset for **price comparison and affiliate**. Export to JSON, CSV, or Excel.

Supported marketplaces: US, UK, Germany, Singapore, Australia, India, Japan.

### Table of contents

- [What it does](#what-it-does)
- [Use cases](#use-cases)
- [How to scrape Amazon](#how-to-scrape-amazon)
- [Input](#input)
- [Output](#output)
- [Pricing](#pricing)
- [Recommended proxies](#recommended-proxies)
- [Why this scraper](#why-this-scraper)
- [FAQ](#faq)
- [Rate this actor](#rate-this-actor)
- [Related actors](#related-actors)

### What it does

- 🔎 **Keyword search → products** on any supported Amazon marketplace.
- 💲 **Price + original price** with the marketplace's currency.
- ⭐ **Signals** — rating, review count, Prime, image, ASIN.
- 🧩 **Shopee/Lazada-aligned schema** — same field names for cross-marketplace price comparison.
- 🛡️ **Anti-bot handled** — real stealth browser + proxy rotation clears Amazon's reputation gating and price-strip soft-block; blocks degrade gracefully, never crash the run.

### Use cases

**Cross-marketplace price comparison** — Output shares a schema with the Shopee and Lazada scrapers, so the same keyword can be run across all three and normalised into one table without a mapping layer. `price`, `original_price`, and `currency` line up field-for-field, which is what makes a genuine multi-marketplace comparison possible rather than three separate datasets.

**Competitive pricing and discount monitoring** — Run a keyword set on a schedule and track how `price` moves against `original_price` over time. Because `rating` and `review_count` come in the same row, you can weight a competitor's price move by how much traction the listing actually has.

**Affiliate catalogue building** — Every row carries a product URL and ASIN, the two things an affiliate link generator needs. Seven marketplaces (US, UK, DE, SG, AU, IN, JP) are supported from the same input, so a regional catalogue is a `region` change rather than a new integration.

**Product and market research** — Search a category's head terms and get the price distribution, rating spread, and Prime availability across the top results — enough to size a niche before committing to it.

### How to scrape Amazon

1. Enter one or more **Search terms**.
2. Pick a **Marketplace**.
3. Set **Max results**.
4. **Enable a residential proxy in that country** (required — see Recommended proxies).
5. Run. Each product is one dataset row.

**Example input:**

```json
{
  "search_terms": ["laptop stand"],
  "region": "com",
  "max_results": 100,
  "proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }
}
```

### Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `search_terms` | array | ✅ | Keywords to search. |
| `region` | string | — | `com`, `co.uk`, `de`, `sg`, `com.au`, `in`, `co.jp` (default `com`). |
| `max_results` | integer | — | Max products across all terms (default 48). |
| `proxy` | object | — | Proxy config. A **residential proxy in the marketplace's country is required** — Amazon blocks datacenter IPs and serves price-stripped pages. |

### Output

One row per product. Field names overlap the Shopee & Lazada scrapers (`product_id`, `title`, `price`, `currency`, `rating`, `review_count`, `product_url`, `region`) so all three merge into one comparison table. `product_id` is the ASIN.

```json
{
  "product_id": "B004YAVF8I",
  "title": "Logitech M185 Wireless Mouse, 2.4GHz with USB Mini Receiver, 12-Month Battery Life, 1000 DPI Optical Tracking, Ambidextrous, Compatible with PC, Mac, Laptop - Swift Grey",
  "price": 13.95,
  "price_original": 17.99,
  "currency": "USD",
  "rating": 4.5,
  "review_count": 43,
  "is_prime": false,
  "thumbnail_url": "https://m.media-amazon.com/images/I/51WN5aXZWIL._AC_UY218_.jpg",
  "product_url": "https://www.amazon.com/dp/B004YAVF8I",
  "region": "com",
  "scraped_at": "2026-07-19T15:36:27+00:00",
  "error": null
}
```

| Field | Type | Description |
| --- | --- | --- |
| `product_id` | string | ASIN. |
| `title` | string | Product name. |
| `price` / `price_original` | number / null | Current / struck-out original price. |
| `currency` | string | Marketplace currency. |
| `rating` | number / null | 0–5. |
| `review_count` | integer / null | Number of ratings. |
| `is_prime` | boolean / null | Prime badge present. |
| `thumbnail_url` / `product_url` | string | Image and product page. |
| `region` / `scraped_at` | string | Marketplace code and UTC timestamp. |

### Pricing

Pay-per-event:

| Event | Price |
| --- | --- |
| Actor start | $0.05 per run |
| Product | $0.005 per product scraped |

> Provisional until finalized in the Apify Console. You supply your own proxy; proxy traffic is billed by your proxy provider (or Apify Proxy usage).

### Recommended proxies

Amazon **blocks datacenter IPs** (intermittent blocks + price-stripped pages), so a residential proxy in the marketplace's country is required. Apify Residential Proxy works; for a low-cost residential pool we recommend [DataImpulse](https://dataimpulse.com/?aff=404588\&utm_source=apify) (referral link).

### Why this scraper

- **Comparison-ready.** Shares a normalized schema with our Shopee & Lazada scrapers — merge marketplaces into one price table without remapping fields.
- **Anti-bot handled.** A real stealth browser clears reputation gating; the price-strip soft-block is detected and retried on a fresh IP rather than shipping price-less rows.
- **Multi-marketplace.** Seven Amazon sites with correct currency each.

### FAQ

**Do I need a proxy?** Yes — Amazon blocks datacenter IPs. Use a residential proxy in the marketplace's country.

**Which marketplaces are supported?** US, UK, Germany, Singapore, Australia, India, Japan.

**Can I compare prices with Shopee and Lazada?** Yes — output field names match those scrapers, so all three feed one comparison dataset.

**Is scraping Amazon legal?** Scraping publicly available product data is generally permissible, but you are responsible for complying with Amazon's terms and applicable law, and for how you use the data. This actor scrapes only public search results — no login or paywall bypass.

### Rate this actor

Using Amazon Scraper? Please leave a ⭐ rating and a short review — it helps others find it and guides what we improve.

### Related actors

- [Shopee Shop Scraper](https://apify.com/herus13/shopee-shop-scraper) · [Lazada Scraper](https://apify.com/herus13/lazada-scraper) — the SEA companions for price comparison.
- More scrapers by this author: [apify.com/herus13](https://apify.com/herus13)

# Actor input Schema

## `search_terms` (type: `array`):

Keywords to search on Amazon, e.g. <code>laptop stand</code>. Each term is paginated until Max results.

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

Which Amazon marketplace to search.

## `max_results` (type: `integer`):

Maximum number of products to return across all search terms.

## `proxy` (type: `object`):

<b>Required for reliable runs.</b> Amazon blocks datacenter IPs (intermittent blocks + price-stripped pages). Use a <b>residential proxy in the marketplace's country</b>. Without one an Apify datacenter IP is likely to return 0 results or missing prices.

## Actor input object example

```json
{
  "search_terms": [
    "laptop stand"
  ],
  "region": "com",
  "max_results": 48
}
```

# Actor output Schema

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

Products from search — ASIN, title, price, original price, currency, rating, review count, Prime, image, product URL, region, scraped\_at.

# 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 = {
    "search_terms": [
        "laptop stand"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("herus13/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 = { "search_terms": ["laptop stand"] }

# Run the Actor and wait for it to finish
run = client.actor("herus13/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 '{
  "search_terms": [
    "laptop stand"
  ]
}' |
apify call herus13/amazon-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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