Amazon Product Scraper | 8 Marketplaces | Pay Per Product avatar

Amazon Product Scraper | 8 Marketplaces | Pay Per Product

Pricing

$1.80 / 1,000 products

Go to Apify Store
Amazon Product Scraper | 8 Marketplaces | Pay Per Product

Amazon Product Scraper | 8 Marketplaces | Pay Per Product

Scrape Amazon product data by ASIN or keyword: title, price, BSR, rating, seller, features and variants. Multi marketplace. Works as MCP tool in Claude & AI agents.

Pricing

$1.80 / 1,000 products

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

a day ago

Last modified

Share

16 Amazon products in one run, all 16 prices matching the product page

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Give it Amazon ASINs, product URLs or search keywords, and get one clean row per product: title, the price a buyer pays now, the crossed-out reference price and Amazon's own name for it, discount, star rating, review count, seller, brand, availability, feature bullets, description, images and, if you want them, the color and size variants. It reads the public product pages any shopper sees on 8 Amazon marketplaces, with no Amazon account, no Selling Partner API and no login.

Why choose this actor?

  • The price a buyer pays, checked against the page. In our 2 October test of 16 discounted and full price earbuds, 16 of 16 rows had price equal to the price to pay shown on Amazon. The crossed-out price goes to originalPrice, and originalPriceLabel says what Amazon calls it ("List Price", "Typical price", "Was", "RRP"), so a list price is never passed off as a sale price.
  • ASINs, URLs or keywords, up to 2,000 products a run. Mix them in one input on any of 8 marketplaces. A product that turns up in two searches, or both in a search and in your ASIN list, is read once and charged once.
  • $1.80 per 1,000 products on every plan, no start fee. Products Amazon refuses to show after every retry, ASINs that no longer exist and the run's report rows cost nothing.

Run it on Apify

Part of The Mine Works E-commerce and marketplaces family: Ozon.ru Scraper, ⭐ Amazon Reviews Scraper, Carsales.com.au Scraper, Etsy Listings Scraper, AliExpress Scraper, Kleinanzeigen.de Scraper.

Try it in one minute

Paste this into the JSON tab of the input page and press Start:

{
"asins": ["B09FT58QQP", "B0C1QWWZR4"],
"keywords": ["wireless earbuds"],
"maxProductsPerSearch": 8,
"marketplace": "amazon.com"
}

You get two named products plus the first 8 from the "wireless earbuds" search, about 10 rows, each with its current price and rating.

Give products in asins as bare ASINs (B09FT58QQP) or as any product link (https://www.amazon.com/dp/B09FT58QQP, /gp/product/ links, or links with ?asin=). Give searches in keywords; each keyword reads one page of Amazon search results. Pick the store with marketplace. With nothing in either list, the actor scrapes the demo ASIN B08N5KWB9H so a test run never comes back empty.

Apify's free plan includes $5 of credit every month, which covers about 2,700 products at this actor's price ($0.0018 a product, no start fee).

Copy to your AI assistant

themineworks/amazon-products on Apify. Scrapes public Amazon product pages by ASIN, product URL or search keyword on 8 marketplaces and returns one row per product with title, price (what a buyer pays now), currency, originalPrice and originalPriceLabel (the crossed-out reference price and Amazon's label for it), discount, rating, reviewCount, seller, brand, availability, features, description, images and optional variants. Call ApifyClient("TOKEN").actor("themineworks/amazon-products").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: at least one of asins (string[]: ASINs or product URLs) or keywords (string[]); with neither it scrapes demo ASIN B08N5KWB9H. Optional: marketplace (amazon.com default; amazon.co.uk, amazon.de, amazon.fr, amazon.co.jp, amazon.in, amazon.ca, amazon.com.au), maxProductsPerSearch (1 to 100, default 20; one search page per keyword, about 16 products), includeVariants (default false; variant rows carry asin and title, price is null), residentialFallback (default false), proxyConfig (default Apify datacenter). Fields Amazon does not show are left out of the row. Rows with _type "summary" or "info" are never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~amazon-products/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • Up to 20 fields per product: asin, title, price, currency, originalPrice, originalPriceLabel, discount, rating, reviewCount, bsr, bsrCategory, seller, brand, availability, features (up to 30 bullets), description (up to 3,000 characters), images (up to 10 full size links), variants, url and scraped_at.
  • Prices read the way a shopper sees them. price comes from the buy box's price to pay, read from its visible digits and Amazon's own price text. A crossed-out amount (List Price, Typical price, Was, RRP) is only ever stored in originalPrice, never in price, and only when it is higher than the price. discount is Amazon's savings badge, or worked out from the two prices.
  • 8 marketplaces, local currency. amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.co.jp, amazon.in, amazon.ca and amazon.com.au, one per run. The actor asks each store for its own currency (USD, GBP, EUR, JPY, INR, CAD, AUD; our tests checked USD on amazon.com and EUR on amazon.de), and comma decimals such as "29,99 €" are read correctly.
  • Variants on request. With includeVariants on, each row lists up to 60 color and size options with their own ASIN and label, at no extra charge.
  • Plain HTTP, retried on fresh IPs. No browser. Each page gets up to 5 tries, each on a new Apify datacenter IP, which is how Amazon's "continue shopping" wall is cleared. In our 2 October test that averaged 2.4 requests per product.
  • Stops instead of burning your time. If five products in a row return nothing, or Amazon blocks so hard that a run would cost more than it earns, the run ends early with a summary row that says why.

How to use it

Basic: one product

{
"asins": ["B09FT58QQP"]
}
{
"asins": [
"B09FT58QQP",
"https://www.amazon.com/dp/B0C1QWWZR4",
"https://www.amazon.com/gp/product/B0CRTR3PMF"
],
"marketplace": "amazon.com"
}

Bare ASINs and links can be mixed. A link from another Amazon store is read as its ASIN on the marketplace you chose.

Daily price and deal tracking

{
"asins": ["B09FT58QQP", "B0C1QWWZR4", "B0CRTR3PMF", "B0DN45YMP6"],
"marketplace": "amazon.com"
}

Save it as a task and schedule it daily (for example 0 6 * * *). Store asin, price, originalPrice, discount and scraped_at each day to chart price moves. When you report a deal, quote originalPriceLabel with it: "Typical price" is Amazon's 90 day median price paid, while "List Price" is the manufacturer's or seller's suggested price, and the two can tell very different stories.

Keyword research: who sells what, at what price

{
"keywords": ["wireless earbuds", "bluetooth headphones", "earbuds for sleeping"],
"maxProductsPerSearch": 16,
"marketplace": "amazon.com"
}

Each keyword reads the first page of Amazon's search results. Sort the rows by reviewCount and rating, then compare price, brand and seller to see who leads a niche. In our test one search page gave 16 products, so values above about 20 add nothing.

Variant mapping

{
"asins": ["B09FT58QQP"],
"includeVariants": true
}

variants lists every color or size Amazon shows for the product, each with its ASIN. Variant prices are not on the parent page, so price inside variants is always null; run the variant ASINs as a second input to get each one's price.

Compare one product across stores

Run the same input once per store, changing only marketplace (for example amazon.com, then amazon.co.uk, then amazon.de). Many brands use the same ASIN in every store; others do not, and those return no row and cost nothing.

Input parameters

ParameterTypeDefaultWhat it does
asinsarray of stringsnone (form prefill: B08N5KWB9H)ASINs or Amazon product links (/dp/, /gp/product/, ?asin=). Unreadable entries are skipped with a warning.
keywordsarray of stringsnone (form prefill: wireless earbuds)Search terms. Each reads one page of search results on the chosen store.
marketplacestringamazon.comOne of amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.co.jp, amazon.in, amazon.ca, amazon.com.au. One store per run.
maxProductsPerSearchinteger (1 to 100)20 (form prefill: 3)Most products to take from each keyword's search page. One page held 16 products in our test.
includeVariantsbooleanfalseAdd the variants list (ASIN and label of each color or size, up to 60). Same price per product.
residentialFallbackbooleanfalseWhen a product is still blocked after 5 datacenter tries, try it once more on a US residential IP. Capped at 8 such tries per run, at no extra charge to you.
proxyConfigobject{"useApifyProxy": true}Apify proxy settings. The default datacenter proxy is included in the price; change it only if you have a reason to.

"Form prefill" values fill the Console form for you but are not defaults: a run started from the untouched form scrapes B08N5KWB9H plus 3 products from the "wireless earbuds" search.

Run options. The default memory is 256 MB and the default timeout is 600 seconds. Each product takes a few seconds, more when Amazon turns away first attempts: our platform run of 19 September read 3 products in 18.6 seconds, and a local test of this build read 16 products in 263 seconds. For lists of more than about 100 products, raise the timeout in Run options. A run that reaches its timeout keeps every product it delivered and ends with a summary row marked ended_on_deadline.

What data do you get?

One row per product. Fields Amazon does not show for a product (a price on an out of stock page, a seller, a description) are left out of that row rather than filled with guesses.

The product: asin, title, brand (cleaned, so "Visit the Apple Store" becomes Apple), url (the product page on the store you chose), scraped_at.

Price: price (what a buyer pays now, from the buy box), currency (the symbol shown, such as $ or €), originalPrice (the crossed-out reference price, only when it is higher than price), originalPriceLabel (Amazon's name for that reference price, such as List Price, Typical price, Was or RRP), discount (percent).

Reviews and rank: rating (1 to 5 stars), reviewCount, and bsr with bsrCategory when the page carries the Best Sellers Rank in its HTML. None of our 40 test rows (all electronics) had it, so do not plan on it for every category.

Offer: seller (sold by), availability (such as In Stock).

Content: features (the bullet list), description (when the page has one; 6 of our 40 test rows did), images (up to 10 full size image links), variants (an empty list unless includeVariants is on).

What originalPriceLabel means. Amazon explains each label on the page. "List Price" is the suggested retail price given by the manufacturer, supplier or seller. "Typical price" is the 90 day median price customers paid on Amazon. On amazon.de, "Was" is the median selling price paid on Amazon.de, and "RRP" is the retail price recommended by the manufacturer. Our 2 October test had 8 List Price and 6 Typical price rows out of 16; two products had no reference price at all.

Each run ends with a _type: "summary" row (total_scraped, total_charged, blocked, requests_made, residential_used, charge_failures, and the guard states guard.profit_guard_tripped and yield_guard.yield_guard_tripped) and a _type: "info" row with a short message. Neither is a product and neither is ever charged. Skip rows that have a _type field when you load products.

Stable fields for automations

These 9 fields were present in every product row we sampled (40 rows from five runs between 19 September and 2 October 2026, on amazon.com and amazon.de):

FieldWhat it holds
asinAmazon product ID; the key for joining runs
titleProduct title
ratingAverage stars, 1 to 5
brandBrand name
featuresFeature bullets (list)
imagesFull size image links (list)
variantsVariant list; empty unless includeVariants is on
urlProduct page link
scraped_atTime of the read, ISO timestamp

price and currency were in 36 of 40 rows: two out of stock amazon.de pages, the demo ASIN and one row from an earlier build had no buy box price. reviewCount was in 38 of 40. We will not rename these fields. New fields may be added over time; existing ones keep their names.

Output examples

Real rows from our test of this build on 2 October 2026, with lists trimmed.

A discounted product whose reference price is Amazon's "Typical price" (wireless earbuds search, amazon.com):

{
"asin": "B0HDB41H28",
"title": "Wireless Earbuds, Bluetooth 5.3 Headphones HiFi Stereo 50H Playback LED Digital Display Ear Buds with ENC Noise Canceling Headset, IPX7 Waterproof Earphones for Gym/Running/Work(White)",
"price": 19.98,
"currency": "$",
"originalPrice": 249.99,
"originalPriceLabel": "Typical price",
"discount": 92,
"rating": 4.7,
"reviewCount": 127,
"seller": "Fhumsh Direct-QZ",
"brand": "Fhumsh",
"availability": "In Stock",
"features": ["Ergonomic Wireless Earbuds for All-Day Wear:3-size medical-grade gel tips (S/M/L) conform…"],
"images": ["https://m.media-amazon.com/images/I/618n7fFdFXL._AC_SL1500_.jpg"],
"variants": [],
"url": "https://www.amazon.com/dp/B0HDB41H28",
"scraped_at": "2026-10-02T16:49:11.339Z"
}

A product on sale against its List Price:

{
"asin": "B09FT58QQP",
"title": "TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones",
"price": 14.99,
"currency": "$",
"originalPrice": 19.99,
"originalPriceLabel": "List Price",
"discount": 25,
"rating": 4.3,
"reviewCount": 117713,
"seller": "Worgo",
"brand": "TOZO",
"availability": "In Stock",
"features": ["[Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g…"],
"images": ["https://m.media-amazon.com/images/I/81+4jNKVFgL._AC_SL1500_.jpg"],
"variants": [],
"url": "https://www.amazon.com/dp/B09FT58QQP",
"scraped_at": "2026-10-02T16:50:37.764Z"
}

A full price product, so no reference price fields (features and images left out here for length):

{
"asin": "B0HJB69GJL",
"title": "Apple AirPods 5 Wireless Earbuds",
"price": 129,
"currency": "$",
"rating": 4.4,
"reviewCount": 59,
"brand": "Apple",
"availability": "In Stock",
"variants": [],
"url": "https://www.amazon.com/dp/B0HJB69GJL",
"scraped_at": "2026-10-02T16:52:44.706Z"
}

The same kind of row from amazon.de (kopfhörer search), priced in euros against the RRP:

{
"asin": "B0C3HCD34R",
"title": "Soundcore by Anker Q20i Wireless Bluetooth Over-Ear Headphones",
"price": 29.99,
"currency": "€",
"originalPrice": 42.99,
"originalPriceLabel": "RRP",
"discount": 30,
"rating": 4.6,
"reviewCount": 76364,
"seller": "AnkerDirect DE",
"brand": "Soundcore",
"availability": "In stock",
"features": ["HYBRID ACTIVE NOISE CANCELLING: Thanks to the combination of 2 internal and 2 external mic…"],
"images": ["https://m.media-amazon.com/images/I/6196rZ67rvL._AC_SL1500_.jpg"],
"variants": [],
"url": "https://www.amazon.de/dp/B0C3HCD34R",
"scraped_at": "2026-10-02T16:54:32.130Z"
}

With includeVariants: true, the first product above carried this list in a test run the same day:

"variants": [
{ "title": "Rosegold", "asin": "B0HDHBQ98Q", "price": null },
{ "title": "White", "asin": "B0HDB41H28", "price": null },
{ "title": "Black", "asin": "B0HCZ4Y6PJ", "price": null }
]

Amazon serves these pages in English when asked, so titles and availability on amazon.de came back in English in our test.

Pricing

Pay per event: you pay for each product delivered to your dataset, and nothing else. Variants, retries and the proxy are included.

EventFreeBronzeSilverGold and above
product-scraped, per product$0.0018$0.0018$0.0018$0.0018
product-scraped, per 1,000 products$1.80$1.80$1.80$1.80

No start fee. This actor's pricing has no apify-actor-start or run-start event, so a run that delivers nothing costs nothing.

Worked examples. A daily check of 50 ASINs: $0.09 a day, about $2.70 a month. Ten keyword searches at about 16 products each (160 products): $0.288. The 2,000 product maximum for one run: $3.60.

Never charged: a product Amazon kept blocking after every retry, an ASIN that returns "not found", a page with no product title, a product already read earlier in the same run (from another search or your ASIN list), the residential retries, and the summary and info rows. If you set a maximum total charge on the run, the actor stops delivering rows when it is reached.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your plan; if it and this table ever differ, the Pricing tab is right.

FAQ

What does it read? The public product pages (/dp/<ASIN>) and search result pages of the Amazon store you choose, the same pages any shopper opens in a browser. It reads the HTML Amazon sends, without a browser.

Is price the sale price or the list price? The sale price: what a buyer pays now, from the buy box. The crossed-out price is in originalPrice, and originalPriceLabel says whether Amazon calls it List Price, Typical price, Was or RRP. In late September 2026 Amazon started leaving the main price text empty on many discounted listings, and builds before 2 October 2026 then reported the crossed-out price as price. This build reads the visible price digits and Amazon's own price to pay text instead, and in our 2 October test matched the page on 16 of 16 products.

Why is price missing on some rows? Because the page had no buy box price: the product was out of stock, offered only through "See all buying options", or not sold to the region of the IP that read it. The row still carries the title, rating, brand, features and images, and costs the same as any other product row. If you only want priced products, filter out rows without price.

How many products can I get? Up to 2,000 per run. Each keyword adds the products on its first search page (16 in our test), and your ASIN list adds the rest. For more, split the work into several runs or schedule them.

Do I need an Amazon account, cookies or the Selling Partner API? No. The actor reads public pages with no login. That also means it sees what a signed out shopper sees: member only prices and coupons you have to clip are not applied, and a price Amazon shows only in the cart is not on the page.

Do I need a proxy? No setup needed. The default Apify datacenter proxy is included in the price, and each retry uses a fresh IP. residentialFallback adds a last try on a US residential IP for stubborn products, at no extra charge.

Can I scrape several marketplaces in one run? No, one marketplace per run. Start one run per store; the input stays the same apart from marketplace.

How fresh is the data? Every run reads the pages live; nothing is cached. scraped_at records when each product was read.

What if Amazon blocks a product? Each page gets up to 5 tries on fresh IPs. A product that still fails gets no row and no charge, and is counted in the summary's blocked. If five products in a row fail, the run stops early so you do not wait for a list Amazon is refusing.

Can I track prices on a schedule? Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression such as 0 6 * * *. Join runs on asin and compare price and scraped_at. The actor keeps no memory between runs, so every run is charged for every product it returns.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Drop rows that have a _type field if you want products only. Lists such as features and images are easiest to handle as JSON.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/amazon-products.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http amazon-products "https://mcp.apify.com/?tools=themineworks/amazon-products".

Is it legal to scrape Amazon? The actor reads only public product information that Amazon shows to any visitor, with no login and no personal data beyond the seller and brand names on the page. You are responsible for how you use the data, including Amazon's conditions of use, copyright in product text and images, and data protection laws such as GDPR and CCPA. This is general information, not legal advice. This actor is independent and not affiliated with Amazon.

Integrations

  • Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to append each scheduled run's prices.
  • Make, Zapier and n8n: use the Apify app or node to start a run and send price drops to Slack, email or your repricing tool.
  • Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
  • API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through https://mcp.apify.com.

Researching a product end to end? Pair it with Amazon Reviews Scraper for the review text behind rating, and compare prices on Walmart Product & Price Scraper, eBay Product Listings Scraper and AliExpress Scraper.

More from The Mine Works

E-commerce and marketplaces

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Found a product that comes back wrong, or need a field we do not return yet? Open an issue on the Issues tab of this page with the ASIN, the marketplace and the run ID, and we will reply there. To ask for a new source, email dmineworks@gmail.com. A guide for this actor also lives at themineworks.com.

Amazon Product Scraper turns ASINs and searches on 8 Amazon stores into product rows with the price a buyer actually pays, at $1.80 per 1,000 products and no start fee.