# Amazon Product Scraper (Ultra-Fast & Free ZIP Code) (`silkened_whitespruce/amazon-product-scraper`) Actor

High-speed, all-in-one Amazon product details scraper. Extract real-time pricing, ratings, high-res images, buy-box offers, specifications, and localized delivery text with zero extra fees for ZIP codes.

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

## Pricing

from $1.50 / 1,000 product results

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

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 (Fast PDP Crawler with Free ZIP Code Localization)

A reliable, cost-effective Amazon product scraper for Apify. Extracts full product specifications, live pricing, buy-box offers, star ratings, high-resolution media, and regional postal/ZIP code delivery routing across 20+ Amazon marketplaces.

Concurrency is automatically managed and scaled according to your Apify subscription tier, ensuring maximum throughput without manual tuning.

***

### Why Choose This Scraper?

- **Automatic Plan-Based Scaling**: Parallel streams are automatically allocated based on your Apify subscription (up to 100 concurrent workers for Business plans, 50 for Scale, 25 for Starter, and 15 for Free users).
- **Free ZIP Code and Delivery Localization**: Regional delivery estimates, location text, and localized pricing are fully included at $0.00 extra cost.
- **Unified Scraping**: Accepts Amazon product URLs, category browse URLs, search result URLs, or raw ASIN lists. Automatically paginates and extracts detailed product data.
- **Comprehensive Data Schema**: Captures titles, brand, ASIN, parent ASIN, prices, stock status, ratings, review counts, Best Sellers Rank (BSR), buy box seller information, image galleries, and structured technical specifications.
- **Fair Billing Guarantee**: Missing or 404 ASINs return standard error records and are never billed as billable events.

***

### Benchmark: Cloud Performance vs. Competitors

Independent benchmarks run on Apify Cloud infrastructure comparing this scraper against the leading alternative (Junglee Amazon Crawler):

| Metric | Amazon Product Scraper (This Actor) | Industry Standard Alternative | Advantage |
| :--- | :---: | :---: | :---: |
| **Throughput** | **~45.0 products / sec** | 0.49 products / sec | **71x faster** |
| **100 Products Execution Time** | **~2.2 seconds** | ~204 seconds (3.4 min) | **Near instant** |
| **Compute Units (CUs) / 100 items** | **0.0035 CUs** | 0.2260 CUs | **64.5x lower platform usage** |
| **Memory Footprint** | **< 48 MB RAM** (256 MB allocation) | 516 MB RAM (4,096 MB allocation) | **8x–16x lighter container** |
| **ZIP Code Localization Fee** | **$0.00 (Included)** | +$35.00 to +$60.00 / 1,000 items | **100% Free Localization** |
| **Base Price (Free Plan)** | **$4.00 / 1,000** | $5.00 / 1,000 | **Save $1.00 (-20%)** |
| **Base Price (Starter Plan)** | **$3.00 / 1,000** | $4.00 / 1,000 | **Save $1.00 (-25%)** |
| **Base Price (Scale Plan)** | **$2.50 / 1,000** | $3.50 / 1,000 | **Save $1.00 (-28.5%)** |
| **Base Price (Business Plan)** | **$2.00 / 1,000** | $3.00 / 1,000 | **Save $1.00 (-33.3%)** |
| **Cost for 10,000 Items + ZIP Code** | **$20.00 – $40.00** | **$380.00 – $650.00** | **Save up to $610.00** |
| **404 / Missing ASIN Billing** | **$0.00 (No charge on errors)** | Billed as full crawl event | **Fair billing policy** |

*All metrics measured on Apify Cloud running live Amazon product detail requests with US postal code delivery routing.*

***

### Pricing and Speed Tiers

Pricing corresponds to your Apify account tier, but **100 concurrent streams** are now unlocked for ALL users regardless of their plan:

| Apify Plan | Price per 1,000 Products | Cost per Product | Parallel Streams | ZIP Code Localization |
| :--- | :---: | :---: | :---: | :---: |
| **Free Tier** | **$4.00** | $0.0040 | **100 streams** | **Included ($0.00)** |
| **Starter (Bronze)** | **$3.00** | $0.0030 | **100 streams** | **Included ($0.00)** |
| **Scale (Silver)** | **$2.50** | $0.0025 | **100 streams** | **Included ($0.00)** |
| **Business (Gold)** | **$2.00** | $0.0020 | **100 streams** | **Included ($0.00)** |

***

### Input Parameters

| Field | Type | Description | Default |
| :--- | :--- | :--- | :---: |
| `categoryOrProductUrls` | Array | Search, category, or direct product URLs to scrape. | `[]` |
| `asins` | Array | List of 10-character Amazon Standard Identification Numbers. | `[]` |
| `countryCode` | Select | Target Amazon Marketplace (US, UK, DE, FR, JP, CA, IT, ES, IN, etc.). | `"US"` |
| `zipCode` | String | Delivery postal code (e.g. `10001`, `90210`, `SW1A 1AA`, `75001`). | `""` |
| `maxItems` | Integer | Maximum total products to scrape. | Unlimited |
| `maxSearchPages` | Integer | Max pagination pages for category and search result URLs. | `1` |

#### Sample Input

```json
{
  "categoryOrProductUrls": [
    { "url": "https://www.amazon.com/s?k=wireless+earbuds" }
  ],
  "asins": [
    "B07PXGQC1Q",
    "B07QKPJ2PV"
  ],
  "countryCode": "US",
  "zipCode": "10001",
  "maxItems": 100
}
```

***

### Output Data Format

Every scraped product outputs clean, standardized JSON:

```json
{
  "asin": "B07PXGQC1Q",
  "parentAsin": "B0CHWRXH8B",
  "url": "https://www.amazon.com/dp/B07PXGQC1Q",
  "title": "Apple AirPods with Charging Case (2nd Generation)",
  "brand": "Apple",
  "price": {
    "symbol": "$",
    "value": 89.00,
    "currency": "USD"
  },
  "listPrice": {
    "symbol": "$",
    "value": 129.00,
    "currency": "USD"
  },
  "inStock": true,
  "stars": 4.7,
  "reviewsCount": 612450,
  "locationText": "Deliver to New York 10001",
  "thumbnailImage": "https://m.media-amazon.com/images/I/71NTi82uBEL._AC_SL1500_.jpg",
  "galleryThumbnails": [
    "https://m.media-amazon.com/images/I/71NTi82uBEL._AC_SL1500_.jpg",
    "https://m.media-amazon.com/images/I/61SUj2aKoEL._AC_SL1500_.jpg"
  ],
  "highResolutionImages": [
    "https://m.media-amazon.com/images/I/71NTi82uBEL.jpg"
  ],
  "seller": {
    "name": "Amazon.com",
    "id": "ATVPDKIKX0DER"
  },
  "shipping": {
    "price": 0.00,
    "fulfilledByAmazon": true
  },
  "bestSellersRank": [
    { "rank": 1, "category": "Earbud & In-Ear Headphones" }
  ],
  "features": [
    "Quick access to Siri by saying 'Hey Siri'",
    "More than 24 hours total listening time with the Charging Case",
    "Effortless setup and in-ear detection"
  ],
  "specifications": {
    "Connectivity Technology": "Wireless, Bluetooth 5.0",
    "Form Factor": "In Ear",
    "Color": "White"
  },
  "scrapedAt": "2026-09-28T01:00:00.000Z"
}
```

#### 404 / Missing ASIN Output

When a requested product does not exist or has been removed from Amazon, a clean error record is returned with **zero event charge**:

```json
{
  "error": "product_not_found",
  "error_description": "Product not found or page does not exist (404).",
  "asin": "B0ZZZZZZZZ",
  "input": "B0ZZZZZZZZ",
  "url": "https://www.amazon.com/dp/B0ZZZZZZZZ"
}
```

***

### Supported Amazon Marketplaces

| Code | Marketplace Domain | Currency | Regional Delivery Routing |
| :---: | :--- | :---: | :---: |
| **US** | amazon.com | USD | Supported |
| **UK** | amazon.co.uk | GBP | Supported |
| **DE** | amazon.de | EUR | Supported |
| **FR** | amazon.fr | EUR | Supported |
| **JP** | amazon.co.jp | JPY | Supported |
| **CA** | amazon.ca | CAD | Supported |
| **IT** | amazon.it | EUR | Supported |
| **ES** | amazon.es | EUR | Supported |
| **IN** | amazon.in | INR | Supported |
| **AU** | amazon.com.au | AUD | Supported |
| **NL** | amazon.nl | EUR | Supported |
| **BR** | amazon.com.br | BRL | Supported |
| **MX** | amazon.com.mx | MXN | Supported |
| **AE** | amazon.ae | AED | Supported |
| **SA** | amazon.sa | SAR | Supported |
| **SG** | amazon.sg | SGD | Supported |
| **SE** | amazon.se | SEK | Supported |
| **PL** | amazon.pl | PLN | Supported |
| **TR** | amazon.com.tr | TRY | Supported |
| **BE** | amazon.com.be | EUR | Supported |

***

### Integrations and API Access

- **Python and Node.js**: Run programmatically via the official Apify SDK (`apify-client`).
- **Zapier and Make**: Export datasets directly to Google Sheets, Airtable, or custom webhooks.
- **Scheduled Runs**: Configure automated recurring scrapes via the Apify schedules dashboard.

# Changelog

This Actor's version history is a separate document: https://apify.com/silkened_whitespruce/amazon-product-scraper/changelog.md

# Actor input Schema

## `categoryOrProductUrls` (type: `array`):

Amazon product or search/category URLs to scrape. Directly crawls listings and extracts full product details.

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

List of 10-character Amazon Standard Identification Numbers (ASINs).

## `startUrls` (type: `array`):

Direct product URLs. ASINs, search keywords, and marketplaces are automatically resolved.

## `asinsText` (type: `string`):

Paste ASINs or URLs separated by newlines.

## `countryCode` (type: `string`):

Select the Amazon marketplace. Overridden automatically if a full URL with a specific domain is provided.

## `zipCode` (type: `string`):

Custom delivery postal code (e.g., 10001, 90210, SW1A 1AA, 75001) to simulate localized shipping and delivery text. 100% free with zero extra fees.

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

Limit the maximum number of products to scrape.

## `maxSearchPages` (type: `integer`):

Max pages to paginate through for category or search URLs.

## Actor input object example

```json
{
  "categoryOrProductUrls": [
    {
      "url": "https://www.amazon.com/dp/B07QKPJ2PV"
    }
  ],
  "countryCode": "US",
  "maxSearchPages": 1
}
```

# Actor output Schema

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

Scraped Amazon product details stored in the default dataset

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

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

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

```

## MCP server setup

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