# Amazon Scraper API — Products, Reviews, Sellers, Best Sellers (`pro100chok/amazon-scraper`) Actor

Extract Amazon product data, customer reviews, seller profiles and buy-box offers from 19 marketplaces (US, UK, DE,
FR, IT, ES, JP, IN, AU…). Full PDP, BSR, stars histogram, variants, A+, seller VAT + 4-period feedback. No Amazon API
needed, no captcha. Pay-per-event from $0.001/record.

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

## Pricing

from $1.00 / 1,000 search / category results

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?

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 API — Products, Reviews, Sellers, Deals, Best Sellers & Buy-Box Offers

Scrape Amazon product details, search results, Best-Sellers and New-Releases charts, customer reviews, seller profiles, seller storefronts, brand stores, buy-box offers and Today's Deals — **twelve scrape modes in one Actor**, across **19 Amazon marketplaces**. Pay-per-event pricing **from $1 per 1,000 records on paid Apify plans** ($5 per 1,000 on the free plan). No login, no API key, no code, nothing to configure — paste URLs, ASINs, keywords or barcodes and download JSON, CSV, or Excel.

![Amazon Scraper on Apify — every product every review as structured JSON](https://raw.githubusercontent.com/PRO100CHOK/apify-readme-assets/main/amazon-scraper/hero.png)

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#995C00;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">Raven &middot; E-commerce suite</span>
<span style="color:#FFEBCC;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Amazon, AliExpress, Alibaba, TikTok Shop</span>
</td>
</tr>
<tr>
<td style="background:#FFEDD1;padding:10px 12px;border:1px solid #E4E4E7;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-kaoNl8Aod80TyV1eZ-HMK8j1Pfit-6e72a428-ec01-4d5e-b2fa-80fc6313a008.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/amazon-scraper" style="color:#8C5400;text-decoration:none;font-weight:700;font-size:13px">Amazon&nbsp;Scraper</a></span><br>
<span style="color:#8C5400;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="background:#FFF7EB;padding:10px 12px;border:1px solid #E4E4E7;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-mBQQG1GlbZlkcetR5-eMoPkpmd5b-71e03f8b-8565-41c8-8fc8-fe73a3dd6f12.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/aliexpress-scraper" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">AliExpress&nbsp;Scraper</a></span><br>
<span style="color:#71717A;font-size:11px">Products, variants, reviews</span>
</td>
<td style="background:#FFF7EB;padding:10px 12px;border:1px solid #E4E4E7;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-BVortsfndmSNtL0Mq-dikv6hX55m-4b204a93-b28c-4951-aa28-d72b1650900c.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/alibaba-scraper" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">Alibaba&nbsp;Scraper</a></span><br>
<span style="color:#71717A;font-size:11px">Products, suppliers, prices</span>
</td>
<td style="background:#FFF7EB;padding:10px 12px;border:1px solid #E4E4E7;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-FzXXmis0AF2EYyyii-53r5wDrRmH-5ed275b8-951f-4995-a100-189ea3a131d0.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/tiktok-shop-scraper-usage" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">TikTok&nbsp;Shop</a></span><br>
<span style="color:#71717A;font-size:11px">Products, stores, creators</span>
</td>
</tr>
</table>

### What does this Amazon Scraper do?

Amazon's official Product Advertising API requires an approved Associates account with a sales quota, and it does not expose full customer-review text, seller business identity, or competitor offers. This Actor is an **unofficial Amazon API alternative**: it reads the same public pages any visitor sees and turns them into structured data.

| Mode | What you get | One record = |
|------|--------------|--------------|
| 🛍️ **Product** | Full product page: price, list price, coupon, **units sold in the past month**, stars + histogram, images, videos, **variants with names and thumbnails**, A+ content, brand story, BSR, buy-box seller, delivery, sustainability, tech specs — **55+ fields** | one product |
| 🔍 **Search** | Keyword results with Sponsored / Prime / Best-Seller / Amazon's Choice flags, page + position, all 5 sort orders, and filters for **price range, brand, seller, Prime, 4★+, condition and deals** | one result row |
| 🏆 **Category** | Any Best-Sellers or listing URL — with rank | one result row |
| 📈 **Charts** | **Best Sellers, New Releases, Movers & Shakers, Most Wished For, Gift Ideas** by category slug | one result row |
| ⭐ **Reviews** | Rating, title, body, raw **and ISO** date, country, verified flag, helpful votes, photos/videos, variant, reviewer ID — filterable **by date range and keyword** | one review |
| 🏪 **Seller** | Business name, address, VAT, trade register, phone, **e-mail**, storefront URL, **shipping / return / privacy policies** + Lifetime/12-month/90-day/30-day feedback histograms | one seller |
| 🏬 **Storefront** | Every product a given seller lists | one result row |
| 🏷️ **Brand store** | Products behind an Amazon `/stores/` brand page | one result row |
| 💲 **Offers** | Buy-box / All-Offers price, condition, seller, Prime, FBA, delivery, shipping | one offer |
| 🔥 **Deals** | Today's Deals grid with deal badges and discounts — no input needed | one deal |
| 🔢 **EAN/UPC → ASIN** | Look products up by barcode (EAN-13, UPC-12, ISBN-10/13) | one result row |
| 💬 **Review by ID** | Fetch one review by its review ID | one review |

Works on amazon.com, .co.uk, .de, .fr, .it, .es, .nl, .se, .pl, .ca, .com.mx, .com.br, .co.jp, .in, .com.au, .sg, .ae, .sa, and .com.tr — with correct currency detection per marketplace.

### Why use this scraper?

- ✅ **Twelve scrapers in one** — most Amazon actors cover a single record type; here one Actor covers products, search, categories, charts, reviews, sellers, storefronts, brand stores, offers, deals and barcode lookups, so you cross-link data (product → seller → storefront → offers) without stitching tools together
- ✅ **145+ documented output fields** across the twelve modes — 55+ on a single product record, including **units sold in the past month**, variants with names and thumbnails, A+ content, brand story and sustainability certifications
- ✅ **Demand data competitors charge extra for** — `monthlyPurchaseVolume` is the number Amazon prints and almost nobody parses
- ✅ **ZIP-level accuracy** — set `deliveryZipCode` and prices, stock and delivery dates refer to that address instead of a city you did not choose
- ✅ **19 marketplaces** with per-marketplace currency and regional Best-Sellers layouts
- ✅ **Seller business identity** — VAT number, trade register, phone, e-mail, registered address, published policies, plus **four time-window feedback histograms** (Lifetime / 12 months / 90 days / 30 days with 5-star breakdowns)
- ✅ **No browser, no captcha solver** — Chrome-TLS-impersonating HTTP client (`curl_cffi`) that follows Amazon's Bot-Manager interstitial and its "continue shopping" gate automatically
- ✅ **Automatic retries** — six attempts with growing pauses on any transport error, each from a different address, and stub pages are detected instead of being parsed into empty rows
- ✅ **Budget-safe** — every run has a configurable total-charge cap (default $10) and stops cleanly when it's reached
- ✅ **Up to 20 inputs in parallel** (async, default 4)

| | Official Product Advertising API | Typical Amazon scrapers | This Actor |
|---|---|---|---|
| Access | Associates approval + sales quota | Apify account | Apify account |
| Record types | Products only | Usually one type per actor | 12 modes in one actor |
| Review text | ❌ Not exposed | Reviews-only actors | ✅ Review rows + free embedded sample |
| Units sold per month | ❌ | Rarely, often billed extra | ✅ Included in every product record |
| Delivery address / ZIP | ❌ | Often billed as a separate event | ✅ Free input field |
| Seller identity (VAT, address) | ❌ | Rarely | ✅ + e-mail, policies, 4-period feedback histograms |
| Marketplaces | Per-country registration | Often US-only | 19 TLDs |
| Cost | Free but quota-tied to sales | Varies | From $0.001/record, all-inclusive |

### What data can you extract?

#### Product detail (mode: `product`)

| Field | Description |
|-------|-------------|
| `asin` | Amazon Standard Identification Number |
| `title` | Full product title |
| `brand` | Brand name (parsed from byline or detail bullets) |
| `url` | Canonical product URL |
| `price`, `priceText` | Current price (numeric + display string) |
| `listPrice`, `listPriceText` | Original / list price before discount |
| `currency` | Currency symbol or code (USD, GBP, EUR, JPY, …) |
| `discountPercent` | Savings percentage (`-30%`) |
| `coupon` | Coupon badge text if any |
| `stars` | Average rating, 0–5 |
| `reviewsCount` | Total number of customer ratings |
| `answeredQuestions` | Q\&A count |
| `starsBreakdown` | Histogram: `{ "5 star": "87%", "4 star": "8%", … }` |
| `customersSay` | Amazon's own AI summary of the **entire** review corpus — the signal from tens of thousands of reviews Amazon no longer serves one by one |
| `reviewAspects` | Per-aspect sentiment: `[{aspect: "Sound quality", mentions: 1700, sentiment: "positive", summary: "…"}, …]` |
| `inStock`, `inStockText` | Availability flag + raw text ("In Stock", "Currently unavailable") |
| `breadCrumbs` | Category path (`["Electronics", "Headphones", …]`) |
| `thumbnailImage`, `images` | First image + every hi-res image URL |
| `videoUrls` | Product videos (MP4 / HLS) |
| `features` | Feature bullets list |
| `description` | Long description + A+ content text |
| `variantAsins` | Sibling ASINs for color / size / style variants |
| `variantDimensions`, `variationValues` | Variant dimensions and their possible values |
| `bestsellerRanks` | Array of `{rank, category}` from the Best Sellers Rank line |
| `sellerName`, `sellerId`, `shipper` | Buy-box winner + shipper info |
| `buyBoxSellerUrl` | Direct URL to the buy-box seller profile |
| `delivery`, `fastestDelivery`, `deliveryLocation` | Delivery dates + detected location |
| `shippingPrice` | Shipping cost (Free / numeric / text) |
| `returnPolicy` | Return-window text |
| `productDetails` | Tech-spec table as a flat dict (Dimensions, Weight, Manufacturer, Model #, …) |
| `productOverview` | The short attribute table Amazon prints above the bullets (Brand, Color, Material, …) |
| `embeddedReviews` | The 8–13 reviews printed on the product page — **included free**, not billed as review events |
| `monthlyPurchaseVolume`, `monthlyPurchaseCount` | Amazon's "10K+ bought in past month" line, verbatim and as a number (`10000`) |
| `isAmazonChoice`, `amazonChoiceText` | Amazon's Choice badge + the keyword it was awarded for |
| `climatePledgeFriendly`, `sustainabilityFeatures` | Climate Pledge flag + the certifications behind it |
| `brandStoreUrl` | Link to the brand's Amazon store page |
| `frequentlyBoughtTogether` | ASINs Amazon bundles with this product |
| `productComparison` | Rows of the "Compare with similar items" table (`asin`, `title`, `price`, `stars`) |
| `variantDetails` | Every sibling variant with `asin`, `name`, `attributes` and `thumbnail` |
| `aPlusContent`, `brandStory` | A+ / "From the manufacturer" and Brand Story blocks, with their images |
| `galleryThumbnails` | Small thumbnails from the image strip |
| `priceRange` | Price range for listings Amazon shows without a single price |
| `condition` | Item condition shown in the buy box |
| `importantInformation` | Safety / legal / ingredients section |
| `offersCount` | How many offers exist for the ASIN (exact when `includeOffers` is on) |
| `ratingDistribution` | The star histogram as numbers: `{"5": 75, "4": 14, …}` |
| `authors`, `bookDescription` | Author list and publisher blurb, for books |
| `hasReviews`, `reviewsLink` | Whether the product has reviews + the URL of its reviews page |
| `originalAsin`, `unNormalizedProductUrl` | The ASIN/URL you asked for, before Amazon's redirect to a parent listing |
| `offers`, `sellerDetails` | Filled when `includeOffers` / `includeSellerDetails` are enabled |
| `marketplace` | Amazon domain (`com`, `co.uk`, …) |

#### Search / Category result (modes: `search`, `category`)

| Field | Description |
|-------|-------------|
| `asin`, `title`, `url` | Product identity + direct link |
| `price`, `listPrice`, `currency` | Numeric price, list price, currency |
| `stars`, `reviewsCount` | Rating + ratings count |
| `thumbnailImage` | Result image |
| `isSponsored` | Sponsored / ad placement flag |
| `isPrime` | Prime delivery flag |
| `isBestSeller`, `isAmazonsChoice`, `isLimitedTimeDeal` | Badge flags |
| `couponText`, `badge` | Coupon text + generic badge ("Overall Pick") |
| `deliveryText` | Delivery promise line |
| `page`, `position` | Pagination page + position across all results |
| `rank` | Best-Seller rank (category mode) |
| `query`, `marketplace` | Your input + Amazon domain |

#### Review (mode: `reviews`)

**One review = one dataset record**, each self-describing with product context.

| Field | Description |
|-------|-------------|
| `reviewId` | Review identifier (e.g. `RH7PSVAHSV6QO`) |
| `asin`, `productTitle` | Which product this review belongs to |
| `reviewerName`, `reviewerProfileUrl` | Reviewer display name + profile URL |
| `rating` | Star rating (1–5) |
| `reviewTitle`, `reviewBody` | Headline + full review text |
| `date`, `dateIso` | Raw "Reviewed in … on …" string **and** the normalised `2026-08-23` form |
| `country`, `location` | Parsed from the same line |
| `userId` | Amazon's reviewer ID, taken from the profile link |
| `variantAsin`, `variantAttributes` | Which variant the review is about, plus its attributes as key/value pairs |
| `position` | 1-based position of the review within its product |
| `totalCategoryRatings`, `totalCategoryReviews` | How many ratings / written reviews the product has in total |
| `isVerifiedPurchase`, `isVine` | Verified purchase + Amazon Vine flags |
| `helpfulVotes` | Helpful-vote count |
| `variant` | Variant purchased (color, size, …) |
| `reviewImages`, `reviewVideos` | Attached photos / videos |
| `reviewUrl`, `marketplace`, `query` | Direct URL + context |

#### Seller profile (mode: `seller`)

| Field | Description |
|-------|-------------|
| `sellerId`, `sellerName`, `sellerUrl` | Seller identity + profile URL |
| `businessName`, `businessAddress`, `address` | Legal business name + address |
| `vatNumber` | VAT registration number (EU sellers) |
| `tradeRegisterNumber` | Trade register number |
| `phone`, `customerServiceAddress` | Contact details |
| `countryRegistration`, `countryEstablishment` | Country of registration / establishment |
| `ratingStars`, `feedbackCount` | Overall stars + total feedback count |
| `lifetimePositive`, `twelveMonthPositive`, `ninetyDayPositive`, `thirtyDayPositive` | % positive per time window |
| `feedbackBreakdown` | Per-period histograms: ratings count, positive/neutral/negative %, 5→1 star % |
| `reviews` | Optional individual feedback rows (rating, text, reviewer, date) — see below |
| `email` | Seller's contact e-mail, when Amazon publishes one |
| `storefrontUrl`, `productAsins` | Link to the seller's storefront + ASINs shown on the profile |
| `shippingPolicy`, `returnPolicy`, `privacyPolicy`, `helpContent`, `otherPolicies` | The policy texts the seller publishes |
| `logoUrl`, `about`, `marketplace` | Logo, storefront "About" text, domain |

#### Offer (mode: `offers`)

| Field | Description |
|-------|-------------|
| `asin`, `productTitle` | Product the offer is for |
| `offerId`, `position`, `buyBoxWinner` | Offer block ID, position (1 = buy-box), winner flag |
| `price`, `priceText`, `listPrice`, `currency` | Prices |
| `condition`, `conditionComments` | New / Used / Refurbished / Collectible + seller comments |
| `sellerName`, `sellerId`, `sellerUrl` | Offer seller |
| `sellerRatingStars`, `sellerRatingCount` | Seller's rating + feedback count |
| `isPrime`, `isFulfilledByAmazon` | Prime + FBA flags |
| `deliveryText`, `shippingPrice` | Delivery promise + shipping cost |
| `marketplace`, `query` | Context |

#### Chart result (mode: `charts`)

Same shape as a category row, plus `chartType` telling you which chart it came from.

| Field | Description |
|-------|-------------|
| `asin`, `title`, `url` | Product identity + link |
| `rank` | Position in the chart |
| `chartType` | `bestsellers`, `new-releases`, `movers-and-shakers`, `most-wished-for`, `gift-ideas` |

Amazon serves four of these five charts as ready-made HTML. **Movers & Shakers** is the exception — it is drawn in the browser and its pages carry no product markup at all, so that chart returns nothing and says so in the log. Nothing to work around: the data is not in the response.
| `price`, `currency`, `stars`, `reviewsCount` | Listing figures |
| `categoryUrl`, `page`, `marketplace` | Which chart page the row came from |

#### Storefront result (mode: `storefront`)

Every product a seller lists, as search-result rows plus the seller's ID.

| Field | Description |
|-------|-------------|
| `asin`, `title`, `url`, `price`, `stars`, `reviewsCount` | Same fields as a search row |
| `sellerId` | The seller whose storefront this is |
| `position`, `page`, `marketplace` | Pagination context |

#### Deal (mode: `deals`)

Today's Deals needs **no input at all** — pick the marketplace and run it.

| Field | Description |
|-------|-------------|
| `asin`, `title`, `url` | Product identity + link |
| `dealId` | Amazon's internal deal identifier |
| `price`, `listPrice`, `currency` | Deal price vs. the price before it |
| `discountPercent` | Discount, e.g. `23% off` |
| `dealBadge` | Badge text, e.g. `23% off · Limited time deal` |
| `thumbnailImage`, `position`, `marketplace` | Image + context |

Amazon draws most of the deals page in the browser, so a run returns the deals present in the served HTML (about 60 at the time of writing), not the endless scroll.

#### Brand-store result (mode: `stores`)

| Field | Description |
|-------|-------------|
| `asin`, `title`, `url`, `price`, `stars` | Product fields, as in a search row |
| `brand` | Brand read off the store page |
| `storeUrl` | The `/stores/` URL you supplied |

Amazon renders brand storefronts client-side, so the Actor reads the **brand name** from the page and pulls that brand's catalogue from the search index. You get the brand's products with full listing fields — just not the storefront's hand-curated ordering.

#### EAN / UPC lookup (mode: `asinLookup`)

| Field | Description |
|-------|-------------|
| `productCode` | The barcode you supplied |
| `asin`, `title`, `brand`, `price`, `stars`, `reviewsCount` | The matching Amazon listing |

Amazon has no dedicated barcode endpoint — the code goes through the normal search index, which matches most retail EAN/UPC/ISBN codes. Codes Amazon does not carry return nothing rather than a wrong product.

#### Review by ID (mode: `reviewById`)

| Field | Description |
|-------|-------------|
| `reviewId`, `reviewUrl` | The review you asked for |
| `rating`, `reviewTitle`, `reviewBody`, `date`, `dateIso` | Review content, when Amazon serves it |
| `_note` | Why the record is empty, when it is |

Since August 2026 Amazon puts individual review pages behind a password prompt, and a cookie session is no longer enough to pass it. This mode therefore returns a record that **says why** it is empty instead of silently returning nothing. The reviews printed on the product page stay available through the `reviews` and `product` modes.

### How to scrape Amazon step by step

1. **Create a free Apify account** — the free plan includes **$5 of platform credits every month**, enough for ~1,000 product records.
2. **Open the Actor** and pick a **Scrape Type** at the top of the input form: Product, Search, Category, Reviews, Seller, or Offers.
3. **Fill only the matching section** — product URLs or bare ASINs, keywords, category URLs, or seller IDs. The other sections are ignored.
4. **Click Start.** Records stream into the dataset live, one row per product / result / review / seller / offer.
5. **Download your data** as JSON, CSV, Excel, XML, or HTML table — or pull it via the API. The dataset ships with five per-mode views: Products, Search / Category, Reviews, Sellers, Offers.

### How to get Amazon reviews when Amazon asks you to sign in

Amazon shut down public review browsing: it puts a sign-in wall in front of the review pages, and page 2, 3, 4 … now just repeat page 1. As of **August 2026** that wall asks for a **password** — a logged-in session is no longer enough, so the review pages are closed to every scraper, signed in or not.

This Actor returns **every review Amazon still exposes** and merges the sources it can reach by review ID, so you never get the same review twice:

- **Product-page reviews** — the 8–13 reviews Amazon prints on the listing itself, with rating, title, body, date, verified-purchase flag, helpful votes, photos. No login needed. This is what a run returns today.
- **Review pages** (`/product-reviews/`, individual review pages) — currently password-walled by Amazon. The Actor detects the wall, stops requesting them, and falls back to the product-page reviews instead of burning requests. If Amazon reopens them, runs pick them up again automatically, with their extra fields (reviewer profile link, review country).

**What that means in numbers:** a run returns ~13 reviews for a typical ASIN — the same set signed in or not, because only the product page is still open. If a review has no reachable copy anywhere, nothing is pushed and **nothing is charged** for that input.

**Reviews at scale:** for the signal behind the tens of thousands of reviews Amazon no longer serves one by one, use product mode — `customersSay` is Amazon's own AI summary of the whole review corpus, and `reviewAspects` breaks it down per aspect with sentiment and mention counts.

Star, media, and verified filters are applied by the Actor itself, so `one_star` really does return only 1-star reviews — Amazon's own filter parameters no longer narrow anything.

### Where signing in helps

| Mode | Signed in | Anonymous |
|------|-----------|-----------|
| 🛍️ Product | Delivery dates for the account's address | Generic delivery estimate |
| ⭐ Reviews | Same ~13 product-page reviews — Amazon now asks for a password on the review pages, so a session no longer unlocks them | Same ~13 product-page reviews |
| 🔍 Search • 🏆 Category • 🏪 Seller • 💲 Offers | Same results | Same results |

Everything works without a login. Signing in is on by default, costs you nothing to leave alone, and stays in place for the day Amazon reopens its review pages — but right now it only affects delivery dates.

### Authentication (optional)

You have two ways to run signed in:

**1. Use our accounts (default, nothing to do).** `useOurAccounts` is on by default: the run borrows a logged-in Amazon session from our own pool, uses it, and returns it when the run finishes. Each account is leased to a single run at a time, so runs never share a session. If every account is busy, the run continues anonymously and says so in the log.

**2. Use your own cookies.** Paste them into `amazonCookies`. Your cookies always take priority over our pool — when the field is filled, our accounts are not touched at all.

**How to get cookies:**

1. Install the [EditThisCookie v3](https://chromewebstore.google.com/detail/editthiscookie-v3/ojfebgpkimhlhcblbalbfjblapadhbol) Chrome extension.
2. Log into [amazon.com](https://www.amazon.com) in your browser (or the marketplace you plan to scrape).
3. Click the EditThisCookie icon and export cookies (the 5th button at the top of the cookie editor).
4. Paste the exported JSON into the `amazonCookies` input field of this Actor.

**Marketplace note:** Amazon cookies are per-domain. An amazon.com export authenticates **only** amazon.com — to scrape amazon.de or amazon.co.uk signed in, export cookies from that domain.

**Cookie expiry note:** Amazon sessions last weeks but not forever. If the log says the cookies were rejected, re-export them from your browser. The run does not fail — it continues anonymously.

**Is my account safe?** The Actor only reads public catalogue pages. It never posts, buys, reviews, or changes anything, and your cookies are not stored after the run.

### How to scrape a seller's full feedback history

Beyond the profile card, the Actor can paginate Amazon's internal feedback endpoint and embed **individual feedback rows** (rating, text, reviewer, date) into the seller record — set `includeSellerReviews: true` and raise `maxSellerReviews` (pagination is real, so thousands of rows per seller are possible; `0` = no limit). Embedded feedback rows are **not** billed separately — the seller record is one seller event however many rows it carries.

### How to scrape Amazon Best Sellers

Two ways, depending on what you have.

**You have a URL** — paste any `/Best-Sellers/zgbs/…`, `/gp/new-releases/…`, or `/gp/movers-and-shakers/…` link into **Category** mode. The Actor handles both the classic listing layout and the Best-Sellers grid layout, deduplicates by ASIN, and adds a `rank` field.

**You have a category name** — use **Charts** mode with a slug (`electronics`, `books`, `home-garden`) and pick the chart from a dropdown: Best Sellers, New Releases, Movers & Shakers, Most Wished For or Gift Ideas. No URL hunting, and switching charts is one field, so the same task can sweep all five.

Either way you can capture full top-100 lists per category and re-run them on a schedule.

### How to find what is actually selling

Review counts lag reality by months. Amazon prints the honest number on the product page — "10K+ bought in past month" — and this Actor returns it in every product record as both text (`monthlyPurchaseVolume`) and a number (`monthlyPurchaseCount`) you can sort by.

Pair it with `bestsellerRanks` and `stars` for a demand picture that does not depend on guessing from reviews. Combine with **Charts** mode (`new-releases`) to catch products that sell before they accumulate any reviews at all.

### How to get prices for a specific delivery address

Amazon quotes prices, availability and delivery dates against a delivery address. With no address set, Amazon picks one itself — which is why the same ASIN can look differently priced across runs.

Set **`deliveryZipCode`** to a ZIP or postcode (`10001`, `SW1A 1AA`) or a two-letter country code (`DE`), and every listing and product page in the run is fetched against that address. The address is set once per run and carried on every later page; if Amazon refuses to change it, the run says so in the log and keeps the location Amazon picked, instead of retrying the change on every page.

### How to keep runs under budget

Every run has a **default $10 total-charge cap** — change it in the run options (`Max charge` field) or via `maxTotalChargeUsd` in the API. The Actor honors Apify's per-event charge limit and stops cleanly the moment the cap is reached, so a typo'd 10,000-keyword input can't surprise you.

### Input parameters

Pick a **Scrape Type**, then fill the matching section — inputs from other sections are ignored.

| Scrape Type | Field | Input format | Example |
|-------------|-------|--------------|---------|
| Product | `productUrls` | Product URL or bare ASIN | `https://www.amazon.com/dp/B09LYF2ST7` or `B09LYF2ST7` |
| Search | `searchKeywords` | Keyword | `wireless headphones` |
| Category | `categoryUrls` | Category / Best-Sellers URL | `https://www.amazon.com/Best-Sellers/zgbs/electronics` |
| Charts | `chartCategories` | Category slug | `electronics` |
| Reviews | `reviewProductUrls` | Product URL or bare ASIN | `B09LYF2ST7` |
| Seller | `sellerInputs` | Seller ID or seller URL | `A2L77EE7U53NWQ` |
| Storefront | `storefrontSellers` | Seller ID or storefront URL | `A2L77EE7U53NWQ` |
| Brand store | `storeUrls` | Amazon `/stores/` URL | `https://www.amazon.com/stores/page/5EF421E8-…` |
| Offers | `offerAsins` | Product URL or bare ASIN | `B09B8V1LZ3` |
| Deals | — | *no input needed* | just pick a marketplace |
| EAN/UPC → ASIN | `productCodes` | EAN-13 / UPC-12 / ISBN-10/13 | `9780593655030` |
| Review by ID | `reviewIds` | Review ID or review URL | `RKP7CFF9MXBS9` |

Bare ASINs and seller IDs use the marketplace selected under **Advanced**; full URLs override it.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `scrapeType` | String | `product` | `product`, `search`, `category`, `charts`, `reviews`, `seller`, `storefront`, `stores`, `offers`, `deals`, `asinLookup`, `reviewById` |
| `marketplace` | String | `com` | Amazon TLD: `com`, `co.uk`, `de`, `fr`, `it`, `es`, `nl`, `se`, `pl`, `ca`, `com.mx`, `com.br`, `co.jp`, `in`, `com.au`, `sg`, `ae`, `sa`, `com.tr` |
| `maxItemsPerInput` | Integer | `100` | Cap per keyword / category URL (`0` = unlimited; Amazon caps search at ~20 pages × 24) |
| `maxSearchPages` | Integer | `5` | Max listing pages per input — search, category, charts, storefront (Amazon caps at 20) |
| `searchSort` | String | `relevance` | `relevance`, `price-asc-rank`, `price-desc-rank`, `review-rank`, `date-desc-rank` |
| `searchMinPrice`, `searchMaxPrice` | Integer | — | Price range in the marketplace currency |
| `searchBrand` | String | — | Restrict results to one brand, spelled as Amazon spells it |
| `searchSellerId` | String | — | Restrict results to one seller |
| `searchPrimeOnly` | Boolean | `false` | Prime-eligible products only |
| `searchFourStarsAndUp` | Boolean | `false` | Products rated 4★ and above |
| `searchCondition` | String | `all` | `all`, `new`, `used`, `renewed` |
| `searchDeals` | String | `none` | `none`, `todays_deals`, `all_discounts` |
| `chartType` | String | `bestsellers` | `bestsellers`, `new-releases`, `movers-and-shakers`, `most-wished-for`, `gift-ideas` |
| `deliveryZipCode` | String | — | ZIP / postcode or 2-letter country the prices and delivery dates should apply to |
| `includeOffers` | Boolean | `false` | Add every offer for each product (billed as `offer` events) |
| `includeSellerDetails` | Boolean | `false` | Add the buy-box seller's profile (billed as one `seller` event) |
| `maxReviewsPerProduct` | Integer | `100` | Max reviews per product (`0` = all available) |
| `reviewsSort` | String | `helpful` | `helpful`, `recent` |
| `reviewsFilterByStar` | String | `all_stars` | `all_stars`, `five_star` … `one_star`, `positive`, `critical` |
| `reviewsFilterByMedia` | String | `all_contents` | `all_contents`, `media_reviews_only` |
| `reviewsFilterByVerified` | Boolean | `false` | Verified-purchase reviews only |
| `reviewsDateFrom`, `reviewsDateTo` | String | — | Keep reviews written within this `YYYY-MM-DD` range |
| `reviewsFilterByKeyword` | String | — | Keep reviews whose title or body contains this text |
| `includeSellerReviews` | Boolean | `false` | Embed individual seller feedback rows into the seller record (not billed separately) |
| `maxSellerReviews` | Integer | `10` | Cap on embedded feedback rows per seller (`0` = no limit) |
| `offerCondition` | String | `all` | `all`, `new`, `used`, `refurbished`, `collectible` |
| `maxConcurrency` | Integer | `4` | Parallel inputs (1–20) |
| `useOurAccounts` | Boolean | `true` | Run signed in with an Amazon session from our own pool — nothing needed from you |
| `amazonCookies` | String | — | Your own EditThisCookie export; takes priority over our pool. See [Authentication](#authentication-optional) |

### Ready-to-paste input recipes

**Track prices and stock for a list of ASINs**

```json
{
    "scrapeType": "product",
    "productUrls": ["B0BDHWDR12", "B07XJ8C8F5", "https://www.amazon.de/dp/B0C1H26C46"],
    "marketplace": "com",
    "maxConcurrency": 4
}
```

**Keyword rank check — first 3 pages, organic + sponsored**

```json
{
    "scrapeType": "search",
    "searchKeywords": ["wireless headphones", "mechanical keyboard"],
    "searchSort": "relevance",
    "maxSearchPages": 3,
    "maxItemsPerInput": 150
}
```

**Best-Sellers top 100 in Electronics**

```json
{
    "scrapeType": "category",
    "categoryUrls": ["https://www.amazon.com/Best-Sellers/zgbs/electronics"],
    "maxItemsPerInput": 100
}
```

**Critical verified reviews only (product-quality monitoring)**

```json
{
    "scrapeType": "reviews",
    "reviewProductUrls": ["B0BDHWDR12"],
    "reviewsSort": "recent",
    "reviewsFilterByStar": "critical",
    "reviewsFilterByVerified": true,
    "maxReviewsPerProduct": 100
}
```

**Seller due diligence with feedback history**

```json
{
    "scrapeType": "seller",
    "sellerInputs": ["A2L77EE7U53NWQ", "ALAQLAKJ574UN"],
    "includeSellerReviews": true,
    "maxSellerReviews": 100,
    "marketplace": "com"
}
```

**Used & refurbished offers for an ASIN**

```json
{
    "scrapeType": "offers",
    "offerAsins": ["B07XJ8C8F5"],
    "offerCondition": "used",
    "marketplace": "com"
}
```

**Demand signal — what actually sells this month**

```json
{
    "scrapeType": "product",
    "productUrls": ["B09LYF2ST7", "B09B8V1LZ3"],
    "marketplace": "com"
}
```

Each record carries `monthlyPurchaseVolume` ("10K+ bought in past month") and `monthlyPurchaseCount` (`10000`) next to price and BSR — the three numbers you need to rank demand without guessing from review counts.

**Prices and delivery dates for a specific address**

```json
{
    "scrapeType": "search",
    "searchKeywords": ["4k monitor"],
    "deliveryZipCode": "10001",
    "maxItemsPerInput": 50
}
```

Without `deliveryZipCode`, Amazon quotes a city of its own choosing. Set it and prices, stock and delivery dates all refer to that address. Works in every listing and product mode.

**Filtered search — Prime, 4★+, one brand, under $200**

```json
{
    "scrapeType": "search",
    "searchKeywords": ["noise cancelling headphones"],
    "searchBrand": "Sony",
    "searchMinPrice": 50,
    "searchMaxPrice": 200,
    "searchPrimeOnly": true,
    "searchFourStarsAndUp": true,
    "maxItemsPerInput": 100
}
```

**New Releases — catch products before they rank**

```json
{
    "scrapeType": "charts",
    "chartType": "new-releases",
    "chartCategories": ["electronics", "home-garden"],
    "maxItemsPerInput": 100
}
```

Swap `chartType` for `movers-and-shakers` (biggest sales-rank gainers), `most-wished-for`, `gift-ideas` or `bestsellers`.

**Everything a competitor sells**

```json
{
    "scrapeType": "storefront",
    "storefrontSellers": ["A2L77EE7U53NWQ"],
    "maxItemsPerInput": 500
}
```

**Today's Deals — no input needed**

```json
{
    "scrapeType": "deals",
    "marketplace": "com",
    "maxItemsPerInput": 100
}
```

**Barcode → ASIN for a supplier catalogue**

```json
{
    "scrapeType": "asinLookup",
    "productCodes": ["9780593655030", "0840080588810"],
    "maxItemsPerInput": 3
}
```

**Reviews from a date range, mentioning one thing**

```json
{
    "scrapeType": "reviews",
    "reviewProductUrls": ["B09LYF2ST7"],
    "reviewsDateFrom": "2026-01-01",
    "reviewsDateTo": "2026-08-31",
    "reviewsFilterByKeyword": "battery",
    "maxReviewsPerProduct": 100
}
```

**One product with its full offer list and seller profile**

```json
{
    "scrapeType": "product",
    "productUrls": ["B09B8V1LZ3"],
    "includeOffers": true,
    "includeSellerDetails": true
}
```

One run instead of three — the product record comes back with `offers: [...]`, `offersCount` and `sellerDetails` attached.

### Output examples

#### Product detail

Trimmed from a real run on `B09LYF2ST7` (56 fields returned):

```json
{
    "type": "product",
    "asin": "B09LYF2ST7",
    "title": "BERIBES Bluetooth Headphones Over Ear Wireless HiFi Stereo Headsets 65H 6EQ",
    "brand": "BERIBES",
    "url": "https://www.amazon.com/dp/B09LYF2ST7",
    "price": 28.99,
    "priceText": "$28.99",
    "currency": "$",
    "coupon": "You pay $29.99 with coupon",
    "monthlyPurchaseVolume": "10K+ bought in past month",
    "monthlyPurchaseCount": 10000,
    "isAmazonChoice": true,
    "climatePledgeFriendly": false,
    "stars": 4.5,
    "reviewsCount": 57439,
    "starsBreakdown": { "5 star": "75%", "4 star": "14%", "3 star": "5%", "2 star": "2%", "1 star": "4%" },
    "ratingDistribution": { "5": 75, "4": 14, "3": 5, "2": 2, "1": 4 },
    "customersSay": "Customers find these headphones to be of good quality, comfortable on the ears…",
    "reviewAspects": [
        { "aspect": "Quality", "mentions": 5500, "sentiment": "positive", "summary": "Customers find the build solid…" }
    ],
    "inStock": true,
    "inStockText": "In Stock",
    "breadCrumbs": ["Electronics", "Headphones, Earbuds & Accessories", "Headphones & Earbuds", "Over-Ear Headphones"],
    "bestsellerRanks": [{ "rank": 5, "category": "Over-Ear Headphones" }],
    "variantAsins": ["B0BV9F196L", "B0C6F5ZBJX", "B0B8YKH8PZ", "B0GGBXTW4C", "B0B8YNRS6D"],
    "variantDetails": [
        { "asin": "B09LYF2ST7", "name": "Black", "attributes": { "color_name": "Black" }, "thumbnail": "https://m.media-amazon.com/images/I/31c6+LwJF6L._AC_US.jpg", "isCurrent": true },
        { "asin": "B0B8YKH8PZ", "name": "Pink", "attributes": { "color_name": "Pink" }, "thumbnail": "…", "isCurrent": false }
    ],
    "frequentlyBoughtTogether": ["B0D5Y2SG6P", "B01LY3NJD9"],
    "brandStoreUrl": "https://www.amazon.com/stores/BERIBES/page/49A51629-CCC7-4D42-8065-0A19C6EBF2D6",
    "aPlusContent": { "title": "Product description", "rawText": "Enjoy Your Favorite Music Like Never Before…", "images": ["…"] },
    "brandStory": { "rawText": "From the brand — Colorful Music Time for you…", "images": ["…"] },
    "importantInformation": "Ingredients: Bluetooth Headphones Wireless Over Ear…",
    "sellerName": "BERIBES Direct",
    "sellerId": "ANQLR0TV4QSBH",
    "shipper": "Amazon",
    "delivery": "FREE delivery Tuesday, September 1 on orders shipped by Amazon over $35",
    "fastestDelivery": "Or Prime members get FREE delivery Tomorrow, August 28.",
    "productOverview": { "Brand": "BERIBES", "Color": "Black", "Ear Placement": "Over Ear" },
    "productDetails": { "Brand Name": "BERIBES", "Model Number": "WH202A", "Built-In Media": "…" },
    "embeddedReviews": [
        { "reviewId": "R3JMC73KTNPPK1", "reviewerName": "Mike", "rating": 5, "reviewTitle": "Definitely worth it", "isVerifiedPurchase": true }
    ],
    "hasReviews": true,
    "reviewsLink": "https://www.amazon.com/product-reviews/B09LYF2ST7",
    "originalAsin": "B09LYF2ST7",
    "marketplace": "com",
    "query": "https://www.amazon.com/dp/B09LYF2ST7"
}
```

#### Search result (one row per product)

```json
{
    "type": "search_result",
    "asin": "B0CTBCDD6D",
    "title": "JBL Tune 720BT - Wireless Over-Ear Headphones with JBL Pure Bass Sound…",
    "url": "https://www.amazon.com/JBL-TUNE-720BT-Lightweight-comfortable/dp/B0CTBCDD6D",
    "price": 59.95,
    "listPrice": 89.95,
    "currency": "$",
    "stars": 4.6,
    "reviewsCount": 133,
    "isSponsored": false,
    "isPrime": true,
    "isBestSeller": false,
    "isAmazonsChoice": false,
    "couponText": "Save 10%",
    "badge": "Overall Pick",
    "deliveryText": "FREE delivery Sun, May 17",
    "page": 1,
    "position": 2,
    "query": "wireless headphones",
    "marketplace": "com"
}
```

#### Seller profile

```json
{
    "type": "seller",
    "sellerId": "ALAQLAKJ574UN",
    "sellerName": "6ave",
    "sellerUrl": "https://www.amazon.com/sp?seller=ALAQLAKJ574UN",
    "businessName": "6TH AVENUE EXPRESS LLC",
    "businessAddress": "50 Atrium Drive, SOMERSET, NJ, 08873, US",
    "ratingStars": 5.0,
    "feedbackCount": 1468,
    "lifetimePositive": "97%",
    "twelveMonthPositive": "97%",
    "ninetyDayPositive": "92%",
    "thirtyDayPositive": "85%",
    "feedbackBreakdown": {
        "lifetime": {
            "ratings": 115368,
            "positivePercent": 97, "neutralPercent": 1, "negativePercent": 2,
            "fiveStar": 88, "fourStar": 9, "threeStar": 1, "twoStar": 1, "oneStar": 1
        },
        "twelveMonths": { "ratings": 1468, "positivePercent": 97, "fiveStar": 90, "fourStar": 7 },
        "ninetyDays": { "ratings": 298, "positivePercent": 92 },
        "thirtyDays": { "ratings": 97, "positivePercent": 85 }
    },
    "marketplace": "com"
}
```

#### Offer

```json
{
    "type": "offer",
    "asin": "B0BDHWDR12",
    "position": 1,
    "buyBoxWinner": true,
    "price": 258.54,
    "currency": "$",
    "condition": "New",
    "sellerName": "6ave",
    "sellerId": "ALAQLAKJ574UN",
    "sellerUrl": "https://www.amazon.com/sp?seller=ALAQLAKJ574UN",
    "isPrime": true,
    "isFulfilledByAmazon": false,
    "deliveryText": "FREE delivery Tomorrow, May 13",
    "marketplace": "com"
}
```

#### Chart row (Best Sellers / New Releases)

```json
{
    "type": "chart_result",
    "chartType": "new-releases",
    "asin": "B0DJGDC3BD",
    "title": "Amazon Fire TV Stick HD (newest model), free & live TV, Alexa Voice Remote…",
    "rank": 1,
    "price": 24.99,
    "currency": "$",
    "stars": 4.6,
    "reviewsCount": 12048,
    "categoryUrl": "https://www.amazon.com/gp/new-releases/electronics",
    "page": 1,
    "marketplace": "com"
}
```

#### Deal

```json
{
    "type": "deal",
    "asin": "B0C5DPSW5Y",
    "dealId": "d98db69a",
    "title": "Amazon Echo Show 15 (newest model), Full HD 15.6\" kitchen hub…",
    "price": 224.99,
    "listPrice": 294.99,
    "currency": "$",
    "discountPercent": "23% off",
    "dealBadge": "23% off · Limited time deal",
    "position": 1,
    "marketplace": "com"
}
```

#### EAN / UPC lookup

```json
{
    "type": "asin_lookup",
    "productCode": "9780593655030",
    "asin": "B0C9N2L56X",
    "title": "The Anxious Generation: How the Great Rewiring of Childhood Is Causing an Epidemic of Mental Illness",
    "price": 17.99,
    "currency": "$",
    "stars": 4.6,
    "marketplace": "com"
}
```

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

You pay **only per record delivered** — proxies, retries, and compute are all included, with no platform usage fees on top. Prices drop on higher Apify subscription plans:

| Event | Free plan | Paid plans (from) | Which modes bill it |
|-------|-----------|-------------------|---------------------|
| Product detail | $0.005 | **$0.001** | `product` |
| Search / Category result | $0.005 | **$0.001** | `search`, `category`, `charts`, `storefront`, `stores`, `deals`, `asinLookup` |
| Review | $0.003 | **$0.0015** | `reviews`, `reviewById` |
| Seller profile | $0.010 | **$0.002** | `seller`, and `includeSellerDetails` |
| Offer | $0.010 | **$0.002** | `offers`, and `includeOffers` |

The seven listing modes all bill the same cheap **Search / Category result** event — Today's Deals, Best-Seller charts, storefronts, brand stores and barcode lookups cost exactly what a search row costs.

Worked examples:

| Task | Free plan | Paid plans (from) |
|------|-----------|-------------------|
| 100 products (daily price check) | $0.50 | $0.10 |
| 1,000 search rows (rank tracking) | $5.00 | $1.00 |
| 500 reviews (5 ASINs × 100) | $1.50 | $0.75 |
| 100 seller profiles | $1.00 | $0.20 |
| 250 offers | $2.50 | $0.50 |

The **Apify free plan includes $5 of credits every month** — roughly 1,000 products, 1,000 search rows, ~1,650 reviews, or 500 seller profiles per month at free-plan rates.

Billing details worth knowing:

- **Reviews embedded in another record are free.** A product record carries the 8–13 reviews Amazon prints on the page, and a seller record with `includeSellerReviews: true` carries its feedback rows — neither is billed on top. One product is one product event, full stop.
- Review-mode stub rows (when an ASIN has no publicly reachable reviews) are pushed for transparency but **never charged**.
- `includeOffers` and `includeSellerDetails` do cost extra — they make real additional requests — and are billed as `offer` / `seller` events, which is why both are off by default.
- Inputs that fail outright produce no records and no charges.
- Every run stops at its total-charge cap (default $10, configurable).

### Integrations

Because the Actor runs on Apify, results plug into your stack with no extra code:

- **Google Sheets, Slack, Make, Zapier, n8n** — ready-made Apify integrations
- **Webhooks** — trigger your own endpoint when a run finishes
- **API clients** — [JavaScript](https://docs.apify.com/api/client/js/) and [Python](https://docs.apify.com/api/client/python/) clients, or plain REST
- **Schedules** — run daily/hourly price, rank, or review monitoring straight from the Apify console

### Use with AI agents (MCP)

Every Apify Actor is callable from AI agents via the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — connect it to Claude, Cursor, or any MCP-compatible client and drive this scraper in natural language:

> "Scrape the 100 most recent critical reviews for ASIN B0BDHWDR12 on amazon.com and summarize the top three complaints."

The flat, predictable JSON output also drops straight into RAG pipelines and agent tools.

### Popular use cases

- **Price tracking & repricing** — schedule product mode to capture price, list price, coupons, and stock per ASIN
- **Review analysis** — collect reviews for sentiment analysis, product-quality monitoring, and brand reputation
- **Seller intelligence & due diligence** — business identity, VAT, address, and time-windowed feedback for any 3P seller
- **Buy-box monitoring** — which seller wins the buy box for your ASINs, and at what price
- **Best-Sellers & trend tracking** — capture top-100 lists from any Best-Sellers, New-Releases, or Movers-&-Shakers page
- **Amazon SEO & share of shelf** — keyword-rank monitoring, sponsored-vs-organic analysis by page and position
- **Sourcing & dropshipping research** — find well-reviewed, high-demand products across 19 marketplaces
- **Brand protection** — detect unauthorized 3P sellers on your ASINs and document their identity

### Is it legal to scrape Amazon?

Scraping publicly available data — product listings, prices, ratings, public reviews, and public seller pages — is generally considered legal. This Actor accesses only pages any visitor can see: no login, no private accounts, no paywalled content. Note that scraped results can contain personal data (e.g., reviewer names), which is protected by GDPR and similar regulations — only process it with a legitimate basis, and consult a lawyer if unsure. See Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### FAQ

#### Does Amazon have a public API?

Amazon's Product Advertising API exists but requires an approved Associates (affiliate) account with an active sales quota, and it does not return full review text, seller business identity, or competitor offers. This Actor needs none of that — it scrapes public pages directly.

#### Is this an alternative to the Amazon Product Advertising API?

Yes. No approval process, no affiliate quota, no AWS credentials — paste URLs or ASINs and get JSON with more fields than PA-API exposes (reviews, seller identity, buy-box offers).

#### Do I need proxies to scrape Amazon?

No. Everything a request needs is handled inside the Actor, and a failed request is retried up to six times from a different address. There is nothing to configure and nothing to bring.

#### Do I need to write code?

No. Everything works from the Apify console UI — pick a scrape type, paste inputs, click Start, download CSV/Excel/JSON. The API is there if you want it, not because you need it.

#### How many reviews can I scrape per product?

About **13** for a typical ASIN — the reviews Amazon prints on the product page. Amazon retired public review browsing and, since August 2026, asks for a password on the review pages themselves, so nobody can return every review a product ever received; this Actor returns everything Amazon still exposes, deduplicated by review ID. For the whole review corpus in aggregate form, use product mode (`customersSay`, `reviewAspects`).

#### Why did I get fewer reviews than expected?

Amazon itself stopped serving them — a product with 50,000 ratings exposes only a few dozen review bodies to anyone, and its review pages now sit behind a password. A star / media / verified filter narrows that pool further. Signing in does not widen it any more — see [Where signing in helps](#where-signing-in-helps).

#### Do I need an Amazon account or cookies?

No. Every mode works without one, reviews included. `useOurAccounts` is on by default (the run borrows a logged-in session from our pool and returns it afterwards); it currently affects only delivery dates, and you can paste your own cookies into `amazonCookies` to use your session instead.

#### Will I be charged for inputs that return nothing?

No. Failed inputs push no records and cost nothing, and review-mode stub rows (pushed when an ASIN has zero reachable reviews) are explicitly excluded from billing.

#### Can I export to CSV or Excel?

Yes — JSON, CSV, Excel, XML, and HTML table, from the dataset UI or via API. The dataset has five per-mode views (Products, Search / Category, Reviews, Sellers, Offers).

#### Can I get how many units a product sells?

Yes — `monthlyPurchaseVolume` and `monthlyPurchaseCount` carry Amazon's own "N bought in past month" figure on every product record, at no extra cost. Amazon prints it as a bucket (`50+`, `1K+`, `10K+`), so treat it as a floor, not an exact count. Listings too new for the figure return "New on Amazon in past month" instead.

#### Why are prices different between runs?

Because Amazon prices against a delivery address, and without one it picks a city itself. Set `deliveryZipCode` and every page in the run is fetched against that address — see [How to get prices for a specific delivery address](#how-to-get-prices-for-a-specific-delivery-address).

#### Can I get a seller's whole catalogue?

Yes — **Storefront** mode takes a seller ID and returns every product that seller lists, with the same fields as a search row. Use **Seller** mode for their business identity and feedback history, and cross-link the two on `sellerId`.

#### Does the brand-store mode return the storefront exactly?

Not the curated layout. Amazon builds `/stores/` pages in the browser, so there is no product data in the HTML to read. The Actor takes the **brand name** off the page and pulls that brand's catalogue from the search index — you get the brand's products with full listing fields, just not the storefront's hand-picked ordering.

#### Can I scrape amazon.de, amazon.co.uk, or amazon.co.jp?

Yes — 19 marketplaces: US, UK, DE, FR, IT, ES, NL, SE, PL, CA, MX, BR, JP, IN, AU, SG, AE, SA, TR. Pick one in **Advanced**, or paste full URLs (the URL's TLD always wins).

#### What is an ASIN and where do I find a seller ID?

An ASIN is Amazon's 10-character product ID, visible in every product URL after `/dp/`. A seller ID is the `?seller=` value in the URL you land on after clicking "Sold by …" on a product page. Both can be pasted directly as inputs.

#### Can I get every seller's offer for an ASIN?

Yes — Offers mode returns Amazon's full "New & Used from …" list: every seller with price, condition (New / Used – Like New / Very Good / Good), seller ID and profile URL, Fulfilled-by-Amazon flag, and delivery estimate. A typical ASIN returns 3–6 offers, and the buy-box winner is flagged with `buyBoxWinner: true`. If Amazon serves no offer list for a listing, the Actor falls back to the buy-box offer alone. No login needed for this mode.

#### Can I monitor prices or reviews on a schedule?

Yes — use Apify Schedules to re-run the Actor hourly/daily with the same input, and a webhook or Google Sheets integration to deliver the diff to your team.

#### Why are some fields null?

Amazon A/B-tests page layouts and varies them per marketplace and session; fields Amazon didn't render (e.g., no coupon, no list price, no videos) are omitted rather than guessed. Prices can also legitimately differ between sessions due to Amazon's per-session pricing.

#### Does it handle Amazon's captcha and bot checks?

The Actor detects Amazon's Bot-Manager interstitial and follows it automatically — no captcha solver, no headless browser. If a hard captcha appears anyway, the request is retried from a fresh address.

### Feedback & support

Found a bug or missing a feature? Open an issue on the **Issues tab** of this Actor — or email **afrcanec@gmail.com**.

If you hit a problem, you can help me fix it much faster by sharing your run data:

1. Go to [Apify Security Settings](https://console.apify.com/settings/security)
2. Find **"Share run data with developers"**
3. In **"Manage list of Actors"**, check this Actor (or **All Actors**)
4. Save

This data is used **only for debugging**. Thank you!

### More scrapers by this developer

- [SimilarWeb Fast Scraper — Website Traffic, Rankings & Analytics](https://apify.com/pro100chok/similarweb-scraper)
- [Ahrefs All-in-One SEO Scraper — DR, Backlinks, Keywords](https://apify.com/pro100chok/ahrefs-seo-tools)
- [Semrush Full API SEO Scraper — Traffic, Authority, Backlinks](https://apify.com/pro100chok/semrush-scraper)
- [TikTok Shop Scraper & Analytics](https://apify.com/pro100chok/tiktok-shop-scraper-usage)
- [Website Contact Scraper — Bulk Emails, Phones & Socials](https://apify.com/pro100chok/extract-emails)
- [Facebook Ads Library Scraper — Meta & Instagram Ad Spy](https://apify.com/pro100chok/meta-ads-library-scraper)

***

**Tags:** Amazon Scraper, Amazon API alternative, unofficial Amazon API, Amazon Product Scraper, Amazon Reviews Scraper, Amazon Seller Scraper, Amazon Best Sellers Scraper, Amazon Search Scraper, Amazon Offers Scraper, Amazon Buy Box Tracker, Amazon Price Tracker, Amazon ASIN Lookup, Amazon BSR Tracker, Amazon Review Sentiment, Amazon Seller Feedback, Amazon FBA Tools, Amazon Brand Protection, Amazon Competitor Analysis, Amazon Without API, Extract Amazon Data, How to Scrape Amazon, Amazon Product Reviews Export CSV, Amazon UK Scraper, Amazon DE Scraper, Amazon JP Scraper, E-commerce Scraper, Dropshipping Research Tool, Amazon Marketplace Data, Amazon Sponsored Listings, Amazon Prime Filter, Amazon Coupon Scraper, Amazon Stock Monitor

# Actor input Schema

## `scrapeType` (type: `string`):

Pick one mode. Each mode pulls a different surface of Amazon and outputs a different shape (see Storage → Dataset views).

🛍️  **Product**  — full product details (price, brand, A+ content, variants with names, BSR, sales volume, sustainability, comparison table…)
🔍  **Search**   — products ranked by keyword, with price / brand / Prime / rating / deal filters
🏆  **Category** — products from a /Best-Sellers/ or any category URL
📈  **Charts**   — Best Sellers, New Releases, Movers & Shakers, Most Wished For, Gift Ideas by category slug
⭐  **Reviews**  — review-level rows (rating, body, ISO date, verified, variant, images)
🏪  **Seller**   — seller profile (business name, VAT, e-mail, 4-period feedback, policies)
🏬  **Storefront** — every product a given seller offers
🏷️  **Brand store** — products from an Amazon `/stores/` brand page
💲  **Offers**   — every offer for one ASIN (price, condition, seller, Prime)
🔥  **Deals**    — Today's Deals grid (no input needed)
🔢  **EAN/UPC → ASIN** — look up Amazon products by barcode
💬  **Review by ID** — fetch a single review by its review ID

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

For Scrape Type: Product details. One per line. Accepts full URLs (`https://www.amazon.com/dp/B07XJ8C8F5`) or bare ASINs (`B07XJ8C8F5`). Bare ASINs default to the marketplace below.

## `includeOffers` (type: `boolean`):

Adds an `offers: [...]` list (every seller / condition / price) to each product record, and fills `offersCount`. Each offer is charged as one `offer` event.

## `includeSellerDetails` (type: `boolean`):

Adds a `sellerDetails` object (business name, address, VAT, feedback breakdown) for the seller who currently holds the buy box. Charged as one `seller` event per product.

## `searchKeywords` (type: `array`):

For Scrape Type: Search results. One keyword per line (e.g. `wireless headphones`, `mechanical keyboard`).

## `categoryUrls` (type: `array`):

For Scrape Type: Category. One per line. Best-seller, New-releases, Movers-&-Shakers or any `/s?...` listing URL.
Example: `https://www.amazon.com/Best-Sellers/zgbs/electronics`

## `chartCategories` (type: `array`):

For Scrape Type: Charts. One category slug per line — `electronics`, `books`, `home-garden`, `toys-and-games`… Leave a single empty value to scrape the chart's top-level page.

## `chartType` (type: `string`):

Used when Scrape Type = Charts. Note: Amazon renders **Movers & Shakers** in the browser and serves no products in the HTML, so that one chart comes back empty; the other four are served ready-made.

## `reviewProductUrls` (type: `array`):

For Scrape Type: Reviews. One per line. Each review is pushed as a separate dataset item.

## `sellerInputs` (type: `array`):

For Scrape Type: Seller profile. One per line. Accepts seller IDs (`A2L77EE7U53NWQ`) or full seller profile URLs.
Find a seller ID on any product page → "Sold by …" → click → copy `?seller=` value.

## `storefrontSellers` (type: `array`):

For Scrape Type: Seller storefront. One per line. Accepts seller IDs (`A2L77EE7U53NWQ`) or storefront URLs (`https://www.amazon.com/s?me=A2L77EE7U53NWQ`). Returns the products that seller lists.

## `storeUrls` (type: `array`):

For Scrape Type: Brand store. One per line — e.g. `https://www.amazon.com/stores/page/5EF421E8-DE42-44BD-888D-052017C90B8F`.
Amazon renders these pages in the browser, so the actor reads the brand from the page and pulls that brand's catalogue.

## `offerAsins` (type: `array`):

For Scrape Type: Offers (buy-box). One per line. Returns every seller / condition / price for the ASIN.

## `productCodes` (type: `array`):

For Scrape Type: EAN/UPC → ASIN. One barcode per line. Dashes and spaces are ignored. Returns the matching Amazon products (ASIN, title, price…).

## `reviewIds` (type: `array`):

For Scrape Type: Review by ID. One per line — e.g. `RKP7CFF9MXBS9` or `https://www.amazon.com/gp/customer-reviews/RKP7CFF9MXBS9`.
Amazon keeps individual review pages behind a password wall; without a signed-in session the record comes back with a `_note` explaining that.

## `maxItemsPerInput` (type: `integer`):

Global cap per keyword / category / storefront / chart. 0 = unlimited (Amazon will still cap listings at ~20 pages × 24 ≈ 480 organic).

## `searchSort` (type: `string`):

Amazon search sort order.

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

Applies to search, category, charts and storefront. Amazon caps search at ~20 pages.

## `searchMinPrice` (type: `integer`):

Lowest price to include, in the marketplace currency. Leave empty for no lower bound.

## `searchMaxPrice` (type: `integer`):

Highest price to include, in the marketplace currency. Leave empty for no upper bound.

## `searchBrand` (type: `string`):

Restrict results to one brand, exactly as Amazon spells it (e.g. `Sony`, `Anker`).

## `searchSellerId` (type: `string`):

Restrict results to products sold by this seller (`A2L77EE7U53NWQ`).

## `searchPrimeOnly` (type: `boolean`):

Only products eligible for Prime shipping.

## `searchFourStarsAndUp` (type: `boolean`):

Only products rated 4 stars or better.

## `searchCondition` (type: `string`):

Item condition filter for search results.

## `searchDeals` (type: `string`):

Restrict results to discounted items.

## `reviewsSort` (type: `string`):

Sort order for review pages.

## `reviewsFilterByStar` (type: `string`):

Limit reviews to a single star rating, or to overall positive / critical buckets.

## `reviewsFilterByMedia` (type: `string`):

Show all reviews or only those that include photos / videos.

## `reviewsFilterByVerified` (type: `boolean`):

If true, restrict results to reviews from buyers Amazon verified as purchasers.

## `reviewsDateFrom` (type: `string`):

Keep only reviews written on or after this date. Matching uses the normalised `dateIso` field; a review whose date could not be parsed is kept.

## `reviewsDateTo` (type: `string`):

Keep only reviews written on or before this date.

## `reviewsFilterByKeyword` (type: `string`):

Keep only reviews whose title or body contains this text (case-insensitive).

## `maxReviewsPerProduct` (type: `integer`):

Upper bound per product. Amazon itself now exposes only ~8-13 reviews per ASIN (deep pagination was retired), so this mostly acts as a safety cap. Set 0 for no limit.

## `includeSellerReviews` (type: `boolean`):

Embed individual customer feedback rows (rating + text + reviewer + date) into the seller record under `reviews: [...]`. These embedded rows are not charged separately.

## `maxSellerReviews` (type: `integer`):

Cap on individual feedback rows fetched per seller (paginated via `&page=N`). 0 = no limit. Default 10 ≈ one page.

## `offerCondition` (type: `string`):

Limit offers by item condition.

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

Default Amazon domain. Bare ASINs/seller IDs go here. Full URLs override.

## `deliveryZipCode` (type: `string`):

Set the delivery address Amazon prices against — e.g. `10001`, `SW1A 1AA`, or a 2-letter country code like `DE`.
Without it Amazon quotes prices, stock and delivery dates for a city of its own choosing. The address is set once per run; if Amazon refuses it, the run says so in the log and keeps the location Amazon picked instead of silently retrying.

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

Higher = faster, but Amazon throttles bursts from one address. Default 4 is the safe setting.

## `useOurAccounts` (type: `boolean`):

Run signed in with an Amazon session from our own account pool — nothing needed from you. Each account is leased to one run at a time and returned afterwards. Your own cookies below always take priority. When every account is busy the run continues signed-out; products, search, charts, sellers and offers are unaffected.

## `amazonCookies` (type: `string`):

Optional — only if you prefer your own session over ours (it then takes priority). Paste the EditThisCookie export of a logged-in Amazon tab. Cookies are per-domain: an amazon.com export only authenticates amazon.com, so export from the same marketplace you scrape. See the README for step-by-step instructions.

## Actor input object example

```json
{
  "scrapeType": "product",
  "productUrls": [
    "https://www.amazon.com/dp/B09B8V1LZ3",
    "B0FQFB8FMG"
  ],
  "includeOffers": false,
  "includeSellerDetails": false,
  "searchKeywords": [
    "wireless headphones"
  ],
  "categoryUrls": [
    "https://www.amazon.com/Best-Sellers/zgbs/electronics"
  ],
  "chartCategories": [
    "electronics"
  ],
  "chartType": "bestsellers",
  "reviewProductUrls": [
    "B09B8V1LZ3"
  ],
  "sellerInputs": [
    "A2L77EE7U53NWQ"
  ],
  "storefrontSellers": [
    "A2L77EE7U53NWQ"
  ],
  "storeUrls": [
    "https://www.amazon.com/stores/page/5EF421E8-DE42-44BD-888D-052017C90B8F"
  ],
  "offerAsins": [
    "B09B8V1LZ3"
  ],
  "productCodes": [
    "9780593655030"
  ],
  "reviewIds": [
    "RKP7CFF9MXBS9"
  ],
  "maxItemsPerInput": 100,
  "searchSort": "relevance",
  "maxSearchPages": 5,
  "searchPrimeOnly": false,
  "searchFourStarsAndUp": false,
  "searchCondition": "all",
  "searchDeals": "none",
  "reviewsSort": "helpful",
  "reviewsFilterByStar": "all_stars",
  "reviewsFilterByMedia": "all_contents",
  "reviewsFilterByVerified": false,
  "maxReviewsPerProduct": 100,
  "includeSellerReviews": false,
  "maxSellerReviews": 10,
  "offerCondition": "all",
  "marketplace": "com",
  "maxConcurrency": 4,
  "useOurAccounts": true
}
```

# Actor output Schema

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

No description

## `searchResults` (type: `string`):

No description

## `reviews` (type: `string`):

No description

## `sellers` (type: `string`):

No description

## `offers` (type: `string`):

No description

## `charts` (type: `string`):

No description

## `storefront` (type: `string`):

No description

## `deals` (type: `string`):

No description

## `brandStore` (type: `string`):

No description

## `codeLookup` (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 = {
    "productUrls": [
        "https://www.amazon.com/dp/B09B8V1LZ3",
        "B0FQFB8FMG"
    ],
    "searchKeywords": [
        "wireless headphones"
    ],
    "categoryUrls": [
        "https://www.amazon.com/Best-Sellers/zgbs/electronics"
    ],
    "chartCategories": [
        "electronics"
    ],
    "reviewProductUrls": [
        "B09B8V1LZ3"
    ],
    "sellerInputs": [
        "A2L77EE7U53NWQ"
    ],
    "storefrontSellers": [
        "A2L77EE7U53NWQ"
    ],
    "storeUrls": [
        "https://www.amazon.com/stores/page/5EF421E8-DE42-44BD-888D-052017C90B8F"
    ],
    "offerAsins": [
        "B09B8V1LZ3"
    ],
    "productCodes": [
        "9780593655030"
    ],
    "reviewIds": [
        "RKP7CFF9MXBS9"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pro100chok/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 = {
    "productUrls": [
        "https://www.amazon.com/dp/B09B8V1LZ3",
        "B0FQFB8FMG",
    ],
    "searchKeywords": ["wireless headphones"],
    "categoryUrls": ["https://www.amazon.com/Best-Sellers/zgbs/electronics"],
    "chartCategories": ["electronics"],
    "reviewProductUrls": ["B09B8V1LZ3"],
    "sellerInputs": ["A2L77EE7U53NWQ"],
    "storefrontSellers": ["A2L77EE7U53NWQ"],
    "storeUrls": ["https://www.amazon.com/stores/page/5EF421E8-DE42-44BD-888D-052017C90B8F"],
    "offerAsins": ["B09B8V1LZ3"],
    "productCodes": ["9780593655030"],
    "reviewIds": ["RKP7CFF9MXBS9"],
}

# Run the Actor and wait for it to finish
run = client.actor("pro100chok/amazon-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 '{
  "productUrls": [
    "https://www.amazon.com/dp/B09B8V1LZ3",
    "B0FQFB8FMG"
  ],
  "searchKeywords": [
    "wireless headphones"
  ],
  "categoryUrls": [
    "https://www.amazon.com/Best-Sellers/zgbs/electronics"
  ],
  "chartCategories": [
    "electronics"
  ],
  "reviewProductUrls": [
    "B09B8V1LZ3"
  ],
  "sellerInputs": [
    "A2L77EE7U53NWQ"
  ],
  "storefrontSellers": [
    "A2L77EE7U53NWQ"
  ],
  "storeUrls": [
    "https://www.amazon.com/stores/page/5EF421E8-DE42-44BD-888D-052017C90B8F"
  ],
  "offerAsins": [
    "B09B8V1LZ3"
  ],
  "productCodes": [
    "9780593655030"
  ],
  "reviewIds": [
    "RKP7CFF9MXBS9"
  ]
}' |
apify call pro100chok/amazon-scraper --silent --output-dataset

```

## MCP server setup

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