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

Input product name, location, price and sort search results then extract product titles, ASINs, prices, ratings, reviews, stock status, delivery estimates, features, specs, seller info, and bestseller ranks from any Amazon product.

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

## Pricing

from $2.00 / 1,000 scraped amazon 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/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 & Search Scraper — Ultimate E-commerce Intelligence Tool

**The fastest, most reliable Amazon scraper to extract products by search keywords (e.g. `toys`, `laptops`, `car accessories`, `battery`) with 20+ country marketplace location filters, sorting, and price ranges, or by direct product URLs and ASINs. Extracts real-time pricing, discounts, verified reviews, high-res image galleries, technical specifications, and seller intelligence.**

***

### 📋 Overview

Need to monitor competitors, discover best-selling products by niche, track localized pricing across international marketplaces, or enrich your catalog? This **Amazon Product & Search Scraper** delivers:

- 🔍 **Keyword Search Across Amazon** — Scrape complete product listings for any query (`"battery"`, `"toys"`, `"gaming laptop"`) with automatic pagination.
- 🌍 **Multi-Country Location Filtering** — Target 20+ Amazon regional marketplaces (`US`, `UK`, `DE`, `CA`, `IN`, `FR`, `IT`, `ES`, `JP`, `AU`, `AE`, `SA`, `MX`, `BR`, `NL`, `SG`, `TR`, `PL`, `SE`, `BE`, `EG`) with automatic localized domains and geo-targeted residential proxies.
- ⚡ **Dual Scraping Modes for Maximum Speed**:
  - **Fast Search Mode (`scrapeProductDetails: false`)** — Super-fast bulk extraction directly from search result cards (**scrapes 100 products in just 5–10 seconds!**).
  - **Deep Detail Mode (`scrapeProductDetails: true`)** — Scrapes full specifications, high-res image galleries, bullet features, seller info, and variant ASINs.
- 🖼️ **Genuine High-Resolution Product Images** — Clean image extraction engine that pulls primary photos and alternate gallery angles directly from `images/I/`, filtering out logos, banners, and placeholders.
- 💰 **Complete Pricing & Discount Intelligence** — Real-time price, list price / MSRP, discount percentage (`15% OFF`), unit price (`$0.35 / Count`), shipping fees, and native currency symbols.
- 🏷️ **Badges & Demand Signals** — Automatic detection of **#1 Best Seller**, **Amazon's Choice / Overall Pick**, and **Sponsored** ads.
- 📊 **Rich Specifications & Social Proof** — Clean titles, ASINs, brand recognition, star ratings, verified review counts, purchase velocity (*"10K+ bought in past month"*), and technical specification tables.
- 🛡️ **Anti-Bot & Stealth Engine** — Powered by `curl_cffi` (Chrome TLS fingerprint impersonation) and residential proxy rotation to bypass Akamai and CAPTCHAs.

***

### ⚙️ Input Configuration

#### Option 1: Search Amazon by Keywords with Filters (Recommended)

```json
{
  "keywords": [
    "battery",
    "rechargeable batteries"
  ],
  "country": "US",
  "maxItemsPerKeyword": 50,
  "sortBy": "review-rank",
  "minPrice": 10,
  "maxPrice": 50,
  "scrapeProductDetails": true,
  "maxConcurrency": 8
}
```

#### Option 2: Super-Fast Mode (100+ Products in Seconds)

Extract product listing cards without opening individual detail pages:

```json
{
  "keywords": ["wireless earbuds"],
  "country": "US",
  "maxItemsPerKeyword": 100,
  "scrapeProductDetails": false
}
```

#### Option 3: International Marketplaces (e.g. UK, Germany, Canada, India)

Filter products in the UK marketplace with local British Pound (`£`) pricing:

```json
{
  "keywords": ["gaming mouse"],
  "country": "UK",
  "maxItemsPerKeyword": 25,
  "scrapeProductDetails": true
}
```

#### Option 4: Direct Product URLs or ASINs

```json
{
  "productUrls": [
    "https://www.amazon.com/dp/B003CZX4A8",
    "B00CWNMV4G"
  ],
  "scrapeProductDetails": true
}
```

***

#### 📝 Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `keywords` | Array | ❌ Optional\* | `["toys", "car accessories"]` | List of search keywords to search on Amazon (e.g., `"battery"`, `"toys"`, `"laptops"`). |
| `country` | String (Select) | ❌ No | `"US"` | Amazon marketplace (`US` / Global, `UK`, `DE`, `CA`, `IN`, `FR`, `IT`, `ES`, `JP`, etc.). Defaults to Amazon.com (Global). |
| `maxItemsPerKeyword` | Integer | ❌ No | `20` | Maximum number of products to scrape per search keyword (1–500). |
| `scrapeProductDetails` | Boolean | ❌ No | `true` | `true`: Scrapes full specifications, high-res images, seller info. `false`: Super-fast mode directly from search cards. |
| `sortBy` | String (Select) | ❌ No | `"relevance"` | Sort order: `relevance`, `price-asc-rank` (Low-High), `price-desc-rank` (High-Low), `review-rank` (Best Reviews), `date-desc-rank` (Newest). |
| `minPrice` | Number | ❌ No | `null` | Minimum price filter in local currency. |
| `maxPrice` | Number | ❌ No | `null` | Maximum price filter in local currency. |
| `productUrls` | Array | ❌ Optional\* | `[]` | List of direct Amazon product URLs or 10-character ASINs (`B003CZX4A8`). |
| `maxConcurrency` | Integer | ❌ No | `8` | Parallel requests (1–20). Higher values scrape significantly faster. |
| `minDelayMs` | Integer | ❌ No | `400` | Minimum delay between requests in milliseconds. |
| `maxDelayMs` | Integer | ❌ No | `1200` | Maximum delay between requests in milliseconds. |
| `proxy` | Object | ❌ No | Residential | Apify Proxy configuration (Residential proxy is recommended). |

*\* Note: You must provide either `keywords` or `productUrls` (or both).*

***

### 🌍 Supported Amazon Country Marketplaces

| Code | Country / Marketplace | Amazon Domain | Currency |
|------|------------------------|---------------|----------|
| `US` | United States | `amazon.com` | `$` |
| `UK` | United Kingdom | `amazon.co.uk` | `£` |
| `DE` | Germany | `amazon.de` | `€` |
| `CA` | Canada | `amazon.ca` | `CDN$` |
| `IN` | India | `amazon.in` | `₹` |
| `FR` | France | `amazon.fr` | `€` |
| `IT` | Italy | `amazon.it` | `€` |
| `ES` | Spain | `amazon.es` | `€` |
| `JP` | Japan | `amazon.co.jp` | `￥` |
| `AU` | Australia | `amazon.com.au` | `A$` |
| `AE` | United Arab Emirates | `amazon.ae` | `AED` |
| `SA` | Saudi Arabia | `amazon.sa` | `SAR` |
| `MX` | Mexico | `amazon.com.mx` | `MX$` |
| `BR` | Brazil | `amazon.com.br` | `R$` |
| `NL` | Netherlands | `amazon.nl` | `€` |
| `SG` | Singapore | `amazon.sg` | `S$` |
| `TR` | Turkey | `amazon.com.tr` | `TL` |
| `PL` | Poland | `amazon.pl` | `zł` |
| `SE` | Sweden | `amazon.se` | `kr` |
| `BE` | Belgium | `amazon.com.be` | `€` |
| `EG` | Egypt | `amazon.eg` | `EGP` |

***

### 📤 Output Structure

The scraper outputs rich, clean, structured JSON into your Apify Dataset and Key-Value Store:

```json
[
  {
    "title": "Duracell Coppertop AA Batteries, 10 Count, 12-Year Shelf Life, Long-lasting",
    "url": "https://www.amazon.com/dp/B003CZX4A8",
    "asin": "B003CZX4A8",
    "searchKeyword": "battery",
    "searchCountry": "US",
    "marketplace": "www.amazon.com",
    "inStock": true,
    "inStockText": "In Stock",
    "brand": "DURACELL",
    "price": {
      "value": 10.49,
      "currency": "$"
    },
    "listPrice": {
      "value": 11.99,
      "currency": "$"
    },
    "discountPercent": 13,
    "unitPrice": "$1.05 / Count",
    "shippingPrice": "FREE",
    "stars": 4.8,
    "reviewsCount": 130815,
    "isBestSeller": true,
    "isAmazonChoice": false,
    "isSponsored": false,
    "breadCrumbs": "Health & Household › Household Supplies › Household Batteries › AA",
    "thumbnailImage": "https://m.media-amazon.com/images/I/71qcX+mH94L._AC_SL1500_.jpg",
    "highResImage": "https://m.media-amazon.com/images/I/71qcX+mH94L._AC_SL1500_.jpg",
    "images": [
      "https://m.media-amazon.com/images/I/71qcX+mH94L._AC_SL1500_.jpg",
      "https://m.media-amazon.com/images/I/71qcX+mH94L._AC_SY355_.jpg",
      "https://m.media-amazon.com/images/I/71qcX+mH94L._AC_SY450_.jpg"
    ],
    "description": "The AA battery powering the devices your family relies on every day...",
    "features": [
      "COMPATIBLE WITH HUNDREDS OF EVERYDAY DEVICES: Works with TV remotes, gaming controllers...",
      "12-YEAR STORAGE GUARANTEE: Every Duracell Coppertop AA battery is guaranteed..."
    ],
    "delivery": "Wednesday, November 4",
    "boughtLastMonth": "10K+ bought in past month",
    "bestSellerRank": [
      "#287 in Health & Household",
      "#8 in AA Batteries"
    ],
    "productDetails": {
      "Brand": "DURACELL",
      "Battery Cell Composition": "Alkaline",
      "Recommended Uses For Product": "TV Remote, Toys, Flashlights"
    },
    "colorsAvailable": [
      {
        "color": "40 Count (Pack of 1)",
        "asin": "B003VSCLMI"
      }
    ],
    "sellerInfo": {
      "merchant_info": "Ships from and sold by Amazon.com."
    },
    "scrapedAt": "2026-10-30T15:20:00.000Z"
  }
]
```

#### 📖 Output Field Documentation

| Field | Type | Description |
|-------|------|-------------|
| `title` | String | Full cleaned product title |
| `asin` | String | Unique 10-character Amazon Standard Identification Number |
| `url` | String | Canonical product URL on the target marketplace |
| `searchKeyword` | String | The keyword query that produced this result |
| `searchCountry` | String | Marketplace country code (`US`, `UK`, `DE`, etc.) |
| `marketplace` | String | Target Amazon store domain (`www.amazon.com`, `www.amazon.co.uk`) |
| `price` | Object | Current selling price with `value` (Float) and `currency` (String) |
| `listPrice` | Object | Original list price / MSRP with `value` and `currency` |
| `discountPercent` | Integer | Calculated discount percentage off MSRP (e.g., `15` for 15% off) |
| `unitPrice` | String | Price per unit if available (e.g. `"$0.35 / Count"`) |
| `isBestSeller` | Boolean | `true` if item holds the "#1 Best Seller" badge |
| `isAmazonChoice` | Boolean | `true` if item holds "Amazon's Choice" or "Overall Pick" badge |
| `isSponsored` | Boolean | `true` if the item is a sponsored ad, `false` for organic results |
| `inStock` | Boolean | `true` if available for purchase, `false` otherwise |
| `inStockText` | String | Exact stock message (e.g., "In Stock", "Only 3 left in stock") |
| `stars` | Float | Average customer rating out of 5.0 |
| `reviewsCount` | Integer | Total verified customer reviews |
| `thumbnailImage` | String | High-resolution primary product thumbnail |
| `highResImage` | String | Maximum resolution primary image URL |
| `images` | Array | Full array of high-resolution product image gallery URLs |
| `delivery` | String | Estimated delivery timeline |
| `boughtLastMonth` | String | Purchase frequency badge (e.g., "10K+ bought in past month") |
| `bestSellerRank` | Array | Category rank positioning list |
| `productDetails` | Object | Technical specifications table |
| `colorsAvailable` | Array | Available color / style variants with ASINs |
| `sellerInfo` | Object | Merchant / seller and fulfillment data |
| `scrapedAt` | String | ISO 8601 timestamp of extraction |

***

### 💳 Pricing (Pay-Per-Event)

- **Per Product Scraped:** `$0.005` per successfully scraped product
- **Actor Start:** `$0.00005` per run start
- **Free Trial:** Free tier users can scrape up to 3 products per run without a credit card!

***

### 📧 Enterprise Support & Custom Scrapers

Need custom scraping pipelines, historical Amazon price tracking, bulk keyword search extraction, or review sentiment analysis?

✉️ Contact: **<codenest2.0@gmail.com>**

# Actor input Schema

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

Enter one or more search keywords (e.g. "car", "toys", "electronics", "wireless earbuds"). The scraper will search Amazon and scrape the matching products.

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

Select an Amazon regional store to search. If left default (US) or blank, it searches Amazon.com, which is Amazon's global store that ships worldwide to any country.

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

Maximum number of products to scrape for each search keyword. Default is 20.

## `scrapeProductDetails` (type: `boolean`):

If enabled (recommended), fetches full product detail pages (specifications, high-res images, bullet features, seller info, variants). If disabled, extracts product list data directly from search result cards (super fast, finishes 100 items in seconds).

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

Sort order for Amazon keyword search results. Default is Featured / Relevance.

## `minPrice` (type: `number`):

Filter search results with minimum price in local currency (e.g. 10). Leave empty for no minimum limit.

## `maxPrice` (type: `number`):

Filter search results with maximum price in local currency (e.g. 50). Leave empty for no maximum limit.

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

Direct Amazon product URLs or 10-character ASINs (e.g. https://www.amazon.com/dp/B0G4SW3XXP or B0G4SW3XXP). Can be combined with keywords or used alone.

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

Number of product pages to scrape in parallel. Higher values (8-12) scrape significantly faster. Default is 8.

## `minDelayMs` (type: `integer`):

Minimum delay in milliseconds between requests. Default is 400ms for fast extraction.

## `maxDelayMs` (type: `integer`):

Maximum delay in milliseconds between requests. Default is 1200ms.

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

Proxy settings. Apify Residential proxies matching the target Amazon marketplace are highly recommended.

## Actor input object example

```json
{
  "keywords": [
    "toys",
    "car accessories"
  ],
  "country": "US",
  "maxItemsPerKeyword": 20,
  "scrapeProductDetails": true,
  "sortBy": "relevance",
  "maxConcurrency": 8,
  "minDelayMs": 400,
  "maxDelayMs": 1200,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `products` (type: `string`):

Tabular overview of scraped Amazon products with price, stock, ratings, and specifications.

## `allResults` (type: `string`):

Complete dataset containing full extracted Amazon product records.

## `outputRecord` (type: `string`):

Consolidated JSON array of all scraped products stored in the default Key-Value Store.

# 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": [
        "toys",
        "car accessories"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("codenest/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": [
        "toys",
        "car accessories",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("codenest/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": [
    "toys",
    "car accessories"
  ]
}' |
apify call codenest/amazon-product-scraper --silent --output-dataset

```

## MCP server setup

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