# Amazon Scraper \[Advance] (`scrapeio/amazon-scraper`) Actor

Scrape Amazon search results across 23 marketplaces (US, UK, India, Germany, Japan, UAE, and more) in one run. Extract ASINs, titles, prices, URLs, images, sponsored flags, and exact search ranking position. Up to 10,000 products per run. Export to CSV or JSON. No Amazon Associates or PA‑API account

- **URL**: https://apify.com/scrapeio/amazon-scraper.md
- **Developed by:** [Shop Intel](https://apify.com/scrapeio) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 26 total users, 11 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $10.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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 for Apify: ASIN, Price & Search Rank Data Across 23 Marketplaces

Scrape Amazon search results at scale with the **Amazon Scraper [Advance]** Apify Actor. Enter a keyword, choose an Amazon marketplace, and export structured product data: **ASIN**, title, price, product URL, image URL, sponsored flag, page number, and exact search ranking position.

Use this Amazon product scraper for Amazon SEO research, AI search data pipelines, competitor monitoring, affiliate product discovery, marketplace analysis, price tracking, share-of-shelf reporting, and no-code automations.

**Actor links**

- [Amazon Scraper](https://apify.com/scrapeio/amazon-scraper)
- Publisher: [ScrapeIO / Shop Intel on Apify](https://apify.com/scrapeio)

### What This Amazon Scraper Does

This Apify Amazon scraper reads public Amazon search result pages and converts product cards into clean rows for datasets, CSV exports, JSON exports, BI tools, AI agents, and LLM workflows. It supports 23 regional Amazon storefronts, including Amazon US, Amazon UK, Amazon India, Amazon Germany, Amazon France, Amazon Japan, Amazon Australia, Amazon UAE, and more.

The actor is built for teams that need Amazon product search data without the official Amazon Product Advertising API. It does not require an Associates account, PA-API credentials, OAuth setup, or a seller account.

### Key Features

- Scrape Amazon products by keyword, category phrase, brand phrase, or long-tail shopper query.
- Extract ASINs, product titles, prices, product URLs, image URLs, sponsored / organic flags, result page, and rank position.
- Choose from 23 Amazon marketplaces via country / region code.
- Collect up to 10,000 unique ASINs per run with automatic pagination.
- Export results from the Apify Dataset as CSV, JSON, Excel, XML, RSS, or HTML.
- Save complete `RESULTS_JSON`, `RESULTS_CSV`, and `OUTPUT` records to the key-value store.
- Use Apify API, CLI, webhooks, schedules, Make, Zapier, n8n, Google Sheets, BigQuery, Snowflake, or your own AI data pipeline.

### Supported Amazon Marketplaces

The marketplace dropdown supports these Amazon country / region codes:

`US`, `CA`, `MX`, `BR`, `UK`, `DE`, `FR`, `IT`, `ES`, `NL`, `BE`, `SE`, `PL`, `TR`, `AE`, `SA`, `EG`, `IN`, `JP`, `AU`, `SG`, `IE`, `ZA`.

Examples:

- `US`: `https://www.amazon.com`
- `UK`: `https://www.amazon.co.uk`
- `IN`: `https://www.amazon.in`
- `DE`: `https://www.amazon.de`
- `JP`: `https://www.amazon.co.jp`

### Input

| Field | Type | Description |
| --- | --- | --- |
| `keyword` | string | Amazon search phrase, e.g. `wireless earbuds`, `protein powder`, `running shoes for women`. |
| `marketplace` | string | Amazon country code: `US`, `UK`, `IN`, `DE`, `JP`, `AU`, `CA`, `FR`, `IT`, `ES`, `AE`, `SA`, and more. Defaults to `IN`. |
| `maxResults` | integer | Number of unique products / ASINs to collect, 1 to 10,000. |

**Proxy (not an input field)**

All Amazon HTTP requests go through **`PROXY_URL`** from environment, with the same built-in default as in code: `PROXY_URL = os.getenv("PROXY_URL", "http://…@ca.proxy-jet.io:1010")`. To use a different proxy or disable it (empty string), set **`PROXY_URL`** on the Actor under **Settings → Environment variables**.

### Input Example

```json
{
  "keyword": "wireless earbuds",
  "maxResults": 250,
  "marketplace": "US"
}
````

United Kingdom marketplace example:

```json
{
  "keyword": "running shoes",
  "maxResults": 500,
  "marketplace": "UK"
}
```

### Output Data

Every product row is pushed to the default Apify Dataset. Typical fields:

| Field | Description |
| --- | --- |
| `position` | Exact product rank in the scraped Amazon search results. |
| `asin` | Amazon Standard Identification Number. |
| `title` | Product title from the search result card. |
| `price` | Displayed price with local currency symbol when available. |
| `productUrl` | Clean Amazon product detail URL. |
| `imageUrl` | Product image URL. |
| `isSponsored` | `true` for sponsored placements, `false` for organic rows. |
| `page` | Amazon search results page where the item appeared. |
| `searchKeyword` | Keyword used for the run. |
| `marketplace` | Amazon storefront URL used for the run. |
| `marketplaceCode` | Country / region code such as `US`, `UK`, `IN`, or `DE`. |

Example row:

```json
{
  "position": 1,
  "asin": "B0EXAMPLE1",
  "title": "Wireless Earbuds with Charging Case",
  "price": "$29.99",
  "productUrl": "https://www.amazon.com/dp/B0EXAMPLE1",
  "imageUrl": "https://m.media-amazon.com/images/I/example.jpg",
  "isSponsored": false,
  "page": 1,
  "searchKeyword": "wireless earbuds",
  "marketplace": "https://www.amazon.com",
  "marketplaceCode": "US"
}
```

### How To Run

#### Apify Console

Open [Amazon Scraper](https://apify.com/scrapeio/amazon-scraper), click **Try for free**, enter `keyword`, set `maxResults`, choose a marketplace, and start the run. Download results from **Storage > Dataset > Export**.

#### Apify CLI

```bash
apify call scrapeio/amazon-scraper \
  --input='{"keyword":"laptop bag","marketplace":"US","maxResults":100}'
```

#### JavaScript API

```js
const { ApifyClient } = require('apify-client');

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('scrapeio/amazon-scraper').call({
  keyword: 'mechanical keyboard',
  marketplace: 'US',
  maxResults: 250,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python API

```python
from apify_client import ApifyClient

client = ApifyClient(token="YOUR_APIFY_TOKEN")

run = client.actor("scrapeio/amazon-scraper").call(
    run_input={
        "keyword": "mechanical keyboard",
        "marketplace": "US",
        "maxResults": 250,
    }
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(items)
```

### Amazon SEO, AIO & LLM Use Cases

- Amazon SEO rank tracking: monitor which ASINs rank for high-intent keywords.
- AI overview / AIO workflows: feed fresh Amazon product snippets into RAG, LLM, and agentic research systems.
- Price intelligence: compare competitor prices across Amazon US, UK, India, Germany, Japan, and other regions.
- Sponsored vs organic reporting: separate paid placements from organic search visibility.
- Affiliate content: build product lists and comparison pages from live Amazon search results.
- Marketplace expansion: compare product availability and pricing by region.
- Data enrichment: join ASIN search data with internal SKU, PIM, ERP, or BI records.

### Amazon Scraper vs Amazon Product Advertising API

| Capability | Amazon PA-API | This Apify Amazon Scraper |
| --- | --- | --- |
| Associates account | Required | Not required |
| Search rank position | Not designed for rank tracking | Included as `position` |
| Sponsored flag | Not available in search order | Included as `isSponsored` |
| Marketplace switching | Limited by setup | 23 storefront codes (`US`, `UK`, `IN`, …) |
| Output formats | API JSON | Apify Dataset, CSV, JSON, Excel |
| Automation | Custom integration | Apify API, schedules, webhooks, integrations |

### FAQ

**Is this an official Amazon API?**\
No. This is an Apify Actor that extracts public Amazon search result pages. It is not affiliated with Amazon and is not endorsed by Amazon.

**Can I scrape Amazon prices and ASINs from multiple countries?**\
Yes. Pick a supported `marketplace` code (`US`, `UK`, `IN`, `DE`, `JP`, and the rest listed above).

**Can I get CSV output?**\
Yes. Export the Dataset as CSV from Apify, or download the `RESULTS_CSV` key from the default key-value store.

**Why do some runs return fewer products than requested?**\
Amazon can return fewer listings, duplicate ASINs, empty pages, 503 responses, or region-specific layouts. The actor retries transient errors and records the stop reason in output metadata.

**Do I need to configure a proxy?**\
No. The Actor uses `PROXY_URL` with a residential default baked into `src/main.py`. Override or clear it via Actor **Environment variables** if needed.

### Related ScrapeIO Actors

- [Amazon Scraper](https://apify.com/scrapeio/amazon-scraper) - Amazon ASIN, price, and rank exports across 23 marketplaces.
- [Google Maps Scraper](https://apify.com/scrapeio/google-maps-scraper-advance) - local business leads, reviews, websites, phones, and contacts.
- [Google News Scraper](https://apify.com/scrapeio/google-news-scraper) - news monitoring by keyword.
- [Facebook Ad Library Scraper](https://apify.com/scrapeio/meta-facebook-ad-scrapper-using-ad-library-url-premium) - Meta ad intelligence.
- [Instagram Ads Scraper](https://apify.com/scrapeio/instagram-scraper-premium) - Instagram ad creatives and copy.
- [WhatsApp Ads Scraper](https://apify.com/scrapeio/whatsapp-scraper-premium) - click-to-WhatsApp ad research.
- [YouTube Video Downloader](https://apify.com/scrapeio/youtube-downloader) - video and audio downloads.

### Compliance

Use this actor responsibly and only for lawful research, analytics, and automation. Review [Apify Terms of Service](https://apify.com/terms-of-service), [Apify web scraping guidance](https://blog.apify.com/is-web-scraping-legal/), and the applicable Amazon terms for your region.

This actor is not affiliated with, endorsed by, or sponsored by Amazon.

***

Built by **[ScrapeIO](https://apify.com/scrapeio)** on Apify.

Powered by **[AdScrape](https://www.adscrape.in/)**.

# Actor input Schema

## `keyword` (type: `string`):

Product, brand, category, or long-tail Amazon search query, e.g. wireless earbuds, protein powder, running shoes for women.

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

Amazon country / region code, e.g. US, UK, IN, DE, JP, AU, CA, FR, IT, ES, AE, SA. Defaults to IN if omitted.

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

Number of unique Amazon product rows / ASINs to collect. Paginates automatically until this count is reached or listings end.

## Actor input object example

```json
{
  "keyword": "wireless earbuds",
  "marketplace": "IN",
  "maxResults": 25
}
```

# 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 = {
    "keyword": "wireless earbuds"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeio/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 = { "keyword": "wireless earbuds" }

# Run the Actor and wait for it to finish
run = client.actor("scrapeio/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 '{
  "keyword": "wireless earbuds"
}' |
apify call scrapeio/amazon-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Amazon Scraper [Advance]",
        "description": "Scrape Amazon search results across 23 marketplaces (US, UK, India, Germany, Japan, UAE, and more) in one run. Extract ASINs, titles, prices, URLs, images, sponsored flags, and exact search ranking position. Up to 10,000 products per run. Export to CSV or JSON. No Amazon Associates or PA‑API account",
        "version": "2.8",
        "x-build-id": "OpDpZ4vRknUx0goeQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapeio~amazon-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapeio-amazon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapeio~amazon-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapeio-amazon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapeio~amazon-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapeio-amazon-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keyword": {
                        "title": "Amazon search keyword",
                        "type": "string",
                        "description": "Product, brand, category, or long-tail Amazon search query, e.g. wireless earbuds, protein powder, running shoes for women."
                    },
                    "marketplace": {
                        "title": "Amazon marketplace (country code)",
                        "type": "string",
                        "description": "Amazon country / region code, e.g. US, UK, IN, DE, JP, AU, CA, FR, IT, ES, AE, SA. Defaults to IN if omitted.",
                        "default": "IN"
                    },
                    "maxResults": {
                        "title": "Max products to collect",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Number of unique Amazon product rows / ASINs to collect. Paginates automatically until this count is reached or listings end.",
                        "default": 25
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
