# Amazon ASIN Scraper: Product Details, BSR & Price (`jaaylee/amazon-asin-product-details`) Actor

Amazon ASIN scraper and product data API. Paste ASINs or URLs, get price, coupon, Best Sellers Rank, bought in past month, ratings, variants, specs, images, stock and delivery date for any US ZIP (no extra fee). Pay $4/1,000 complete records. Export CSV/JSON, schedule runs or use the API.

- **URL**: https://apify.com/jaaylee/amazon-asin-product-details.md
- **Developed by:** [ASide Data](https://apify.com/jaaylee) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 products

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

### What is Amazon ASIN Scraper?

**Amazon ASIN Scraper** is an Amazon product data API for any list of **ASINs or Amazon.com product URLs**. It returns the
price, coupon, stock, **Best Sellers Rank (BSR)**, **"bought in past month"** sales signal, rating breakdown, variants,
specifications, images — and the **delivery date and price for a US ZIP code**, included at no extra cost.

Use this Amazon scraper for **Amazon price tracking**, **BSR monitoring**, **FBA seller and competitor research**, and
**product catalog enrichment**. Run it in Apify Console, schedule it, or call it from Python, JavaScript, Google Sheets,
Make, Zapier, n8n or an AI agent (MCP).

#### Why this Amazon scraper

- 📍 **ZIP-accurate data, no add-on fee.** Set a US ZIP code and get the price, availability and delivery date a shopper
  there sees. ZIP is part of the base price.
- 💸 **Pay only for complete product records.** Blocked pages, removed products (404) and incomplete pages are free.
  Duplicate ASINs in your input are removed before scraping.
- 📊 **Seller-research fields out of the box:** BSR in every category, "bought in past month" as text and as a number,
  5→1 star breakdown, coupon, list price, savings %, sold by / ships from.
- 🎨 **Variants:** get the variation map of every product, or scrape every color/size with one switch.
- ⚡ **Fast and light:** plain HTTP, no browser.

### What Amazon product data can you extract?

| Group | Fields |
|---|---|
| Identity | `asin`, `url`, `status`, `complete`, `scrapedAt`, `variantOf` |
| Basics | `title`, `brand`, `categoryPath` |
| Price | `price`, `priceText`, `currency`, `listPrice`, `savingsPercent`, `coupon` |
| Stock & delivery | `availability`, `inStock`, `deliveryLocation`, `deliveryDate`, `deliveryMessage`, `fastestDelivery`, `soldBy`, `shipsFrom` |
| Sales signals & rank | `bestSellersRank` (rank + category), `boughtPastMonth`, `boughtPastMonthMin` |
| Reputation | `rating`, `ratingsCount`, `starsBreakdown` |
| Content | `features`, `overview`, `specifications`, `mainImage`, `images` |
| Variants | `parentAsin`, `variationLabels`, `variants` |
| Reviews | `topReviews` — the ~8–13 reviews Amazon shows on the product page (`id`, `rating`, `title`, `date`, `country`, `text`, `verified`). Reviewer names are not collected. |

### How to scrape Amazon product details by ASIN

1. Click **Try for free** and open the Actor input.
2. Paste ASINs or Amazon product URLs into **ASINs or product URLs** — one per line or comma-separated.
3. Optional: enter a **Delivery ZIP code** (for example `10001`) to get ZIP-accurate prices and delivery dates.
4. Optional: turn on **Also scrape variants** to get every color/size.
5. Click **Start**, then download the results as JSON, CSV or Excel, or open them via the API.

#### Input example

```json
{
  "asins": ["B0DD41G2NZ", "https://www.amazon.com/dp/B0HCT3FTVW"],
  "zipCode": "10001",
  "includeVariants": false
}
```

#### Output example

```json
{
  "asin": "B0HDB41H28",
  "url": "https://www.amazon.com/dp/B0HDB41H28",
  "title": "Wireless Earbuds, Bluetooth 5.3 Headphones HiFi Stereo 50H Playback LED Digital Display Ea…",
  "brand": "Fhumsh",
  "price": 19.99,
  "priceText": "$19.99",
  "currency": "USD",
  "listPrice": null,
  "savingsPercent": null,
  "coupon": null,
  "availability": "In Stock",
  "inStock": true,
  "deliveryLocation": "New York 10001",
  "deliveryDate": "Monday, October 12",
  "deliveryMessage": "FREE delivery Monday, October 12 on orders shipped by Amazon over $35",
  "fastestDelivery": "Friday, October 9",
  "soldBy": "Fhumsh-JW US",
  "shipsFrom": "Amazon",
  "rating": 4.5,
  "ratingsCount": 278,
  "starsBreakdown": {
    "5": 0.77,
    "4": 0.11,
    "3": 0.04,
    "2": 0.03,
    "1": 0.05
  },
  "boughtPastMonth": "4K+ bought in past month",
  "boughtPastMonthMin": 4000,
  "bestSellersRank": [
    {
      "rank": 45,
      "category": "Electronics"
    },
    {
      "rank": 5,
      "category": "Earbud & In-Ear Headphones"
    }
  ],
  "categoryPath": [
    "Electronics",
    "Headphones, Earbuds & Accessories",
    "Headphones & Earbuds",
    "Earbud Headphones"
  ],
  "features": [
    "Ergonomic Wireless Earbuds for All-Day Wear:3-size medical-grade gel tips (S/M/L) conform to 99% ear contours, including…",
    "Smart LED Display & 50H Sport Headphones: A10 Bluetooth 5.3 earbuds feature dual LED screens showing real-time power lev…"
  ],
  "overview": {
    "Brand": "Fhumsh",
    "Color": "White",
    "Ear Placement": "In Ear",
    "Form Factor": "In Ear",
    "Noise Control": "Environmental Noise Cancellation"
  },
  "specifications": {
    "Brand Name": "Fhumsh",
    "Model Number": "A13",
    "Model Name": "A10",
    "Built-In Media": "User Manual"
  },
  "mainImage": "https://m.media-amazon.com/images/I/618n7fFdFXL._AC_SL1500_.jpg",
  "images": [
    "https://m.media-amazon.com/images/I/618n7fFdFXL._AC_SL1500_.jpg",
    "https://m.media-amazon.com/images/I/71Hs6pWAEpL._AC_SL1500_.jpg"
  ],
  "parentAsin": "B0HG8W3HDM",
  "variationLabels": {
    "color_name": "Color"
  },
  "variants": {
    "B0HDHBQ98Q": [
      "Rosegold"
    ],
    "B0HB8CTY3M": [
      "Light Green"
    ]
  },
  "topReviews": [],
  "status": "ok",
  "complete": true,
  "scrapedAt": "2026-10-10T09:00:00+00:00"
}
```

`status` is `ok`, `not_found` (product removed), `blocked` (Amazon kept blocking the page after retries) or `error`
(unexpected page or network failure after retries). Only `ok` records that are `complete` are charged.

### How much does it cost to scrape Amazon?

**$4.00 per 1,000 complete product records**, with the delivery ZIP code included. Lower prices apply on higher Apify
plans (see the pricing panel). Blocked, removed and incomplete pages are free, and you can set a maximum total charge
for every run — the Actor stops when it is reached.

| You scrape | You pay (Free/Starter plan) |
|---|---|
| 100 ASINs | $0.40 |
| 1,000 ASINs | $4.00 |
| 10,000 ASINs | $40.00 |

### Amazon price, stock and delivery date by ZIP code

Amazon shows different prices, availability and delivery dates depending on the delivery address. Enter a US ZIP code
and the Actor reads every product exactly as a shopper in that ZIP would see it. The `deliveryLocation` field confirms
the ZIP that was applied; a page where the ZIP could not be applied is retried and never charged.

### Use cases

- **Amazon price tracking & monitoring** — schedule a daily run for your ASINs and get price, coupon and stock changes.
- **Best Sellers Rank tracking** — follow BSR in each category over time.
- **FBA seller & competitor research** — compare competitors' prices, ratings, "bought in past month" and sellers.
- **Product catalog enrichment** — fill your catalog with titles, specs, images and variants from ASINs.
- **Regional delivery checks** — compare delivery dates and stock across ZIP codes.

### Use the Amazon product data API

Call the Actor from Python with the [Apify client](https://docs.apify.com/api/client/python):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("jaaylee/amazon-asin-product-details").call(
    run_input={"asins": ["B0DD41G2NZ", "B0HCT3FTVW"], "zipCode": "10001"}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["asin"], item["price"], item["bestSellersRank"])
```

Save a daily price snapshot to CSV (run it from a schedule or cron):

```python
import csv, datetime

with open("amazon_prices.csv", "a", newline="") as f:
    w = csv.writer(f)
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        if item["status"] == "ok":
            w.writerow([datetime.date.today(), item["asin"], item["price"], item["inStock"], item["boughtPastMonthMin"]])
```

With JavaScript / Node.js ([apify-client](https://docs.apify.com/api/client/js)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('jaaylee/amazon-asin-product-details').call({
    asins: ['B0DD41G2NZ', 'B0HCT3FTVW'],
    zipCode: '10001',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((i) => console.log(i.asin, i.price, i.deliveryDate));
```

Or with cURL (synchronous run that returns the dataset items):

```bash
curl -X POST "https://api.apify.com/v2/acts/jaaylee~amazon-asin-product-details/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"asins": ["B0DD41G2NZ"], "zipCode": "10001"}'
```

### Integrations: Google Sheets, Make, Zapier, n8n, webhooks and schedules

- **Schedules:** run the Actor daily or hourly from Apify Console → Schedules for price and BSR monitoring.
- **Google Sheets:** export the dataset to a sheet with the Apify Google Sheets integration.
- **Make, Zapier, n8n:** start runs and read results with the official Apify apps/nodes.
- **Webhooks:** get notified when a run finishes and process the results in your own system.

### Use with AI agents (MCP)

This Actor works with the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp). An AI agent can search
for it, read its input schema and call it to fetch Amazon product data for a list of ASINs.

### More Amazon scrapers by the same developer

- [Amazon Search Scraper](https://apify.com/jaaylee/amazon-search-scraper) — search results for any keyword with rank,
  price, "bought in past month" and badges. Find ASINs for a keyword, then enrich them here.
- [Amazon Best Sellers Scraper](https://apify.com/jaaylee/amazon-bestsellers-scraper) — top 100 Best Sellers and New
  Releases for any category and subcategory.

### Limitations

- **Amazon.com only** for now. Other marketplaces (Amazon.co.uk, .de, .ca, …) are on the roadmap.
- **Full review lists are not available**: since November 2024 Amazon requires sign-in for review pages. This Actor never
  logs in, so it returns only the reviews visible on the product page.
- Search and category pages are not supported — this Actor works from ASINs / product URLs.
- CAPTCHAs are never solved; blocked pages are retried on fresh sessions and, if still blocked, returned as `blocked`
  for free. If your Apify account has residential proxies, they are used as a fallback.
- Speed: in our tests 10 products took about 25–40 seconds at the default concurrency (5). The default run timeout is
  24 hours, and if Apify restarts a run, products already saved are not scraped or charged again.

#### Diagnostics

If some product pages come back incomplete, up to 3 of them are saved as HTML in the run's key-value store
(`debug-incomplete-<ASIN>`). They help diagnose Amazon layout changes — mention the key name when you open an issue.

### FAQ

#### Is it legal to scrape Amazon?

This Actor only reads publicly visible product pages without logging in and does not collect personal data (reviewer
names, contact details). You are responsible for using the data in line with applicable laws and Amazon's terms. If in
doubt, consult a lawyer.

#### Can I track Amazon prices every day?

Yes. Save your ASIN list as a task and add a daily schedule in Apify Console. Each run returns fresh prices, coupons,
stock and BSR.

#### How many ASINs can I scrape in one run?

There is no fixed limit. Thousands of ASINs per run are fine; set a maximum total charge if you want a hard budget.

#### Does it support Amazon.co.uk, Amazon.de or other marketplaces?

Not yet — only Amazon.com. Open an issue if you need a specific marketplace.

#### Why is the price empty for some products?

The product is unavailable, or only available from other sellers. `availability` tells you why, and incomplete records
are free.

#### Why is a product marked `blocked` or `not_found`?

`not_found` means Amazon returned 404 (removed or wrong ASIN). `blocked` means Amazon kept blocking the page after
several fresh sessions. Neither is charged — run those ASINs again later.

#### Found a bug or need a field?

Open an issue on the Issues tab and include the ASIN and what you expected.

# Actor input Schema

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

Amazon.com ASINs (e.g. B0DD41G2NZ) or product URLs (/dp/... or /gp/product/...). You can paste many at once, separated by new lines or commas. Duplicates are removed automatically.

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

Optional. Prices, availability and delivery dates are shown for this US ZIP code, exactly as a shopper there would see them. Included at no extra cost.

## `includeVariants` (type: `boolean`):

Also scrape the other variations (color, size, ...) of each product. Each variant is a separate product record.

## `maxVariantsPerProduct` (type: `integer`):

Upper limit of variants added per input product when 'Also scrape variants' is on.

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

How many product pages are fetched in parallel.

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

Primary proxy. The default Apify datacenter proxy works for most product pages.

## `residentialFallback` (type: `boolean`):

If a page stays blocked after 3 attempts on the primary proxy, retry it up to 2 more times through US residential proxies. Blocked pages are never charged either way.

## `failOnLowQuality` (type: `boolean`):

For monitoring tasks: mark the run as failed when fewer than 80% of pages succeed or key fields are missing.

## Actor input object example

```json
{
  "asins": [
    "B0DD41G2NZ",
    "https://www.amazon.com/dp/B0HCT3FTVW"
  ],
  "zipCode": "10001",
  "includeVariants": false,
  "maxVariantsPerProduct": 10,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "residentialFallback": true,
  "failOnLowQuality": false
}
```

# Actor output Schema

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

No description

## `files` (type: `string`):

No description

# 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 = {
    "asins": [
        "B0DD41G2NZ",
        "https://www.amazon.com/dp/B0HCT3FTVW"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jaaylee/amazon-asin-product-details").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 = {
    "asins": [
        "B0DD41G2NZ",
        "https://www.amazon.com/dp/B0HCT3FTVW",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("jaaylee/amazon-asin-product-details").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 '{
  "asins": [
    "B0DD41G2NZ",
    "https://www.amazon.com/dp/B0HCT3FTVW"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call jaaylee/amazon-asin-product-details --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jaaylee/amazon-asin-product-details"
        }
    }
}
```

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/ZxeMRTlxneY1ftLeS/builds/2AgI5tlFe5A4qjiae/openapi.json
