Amazon Product Scraper & Price Tracker
Pricing
from $2.80 / 1,000 products
Amazon Product Scraper & Price Tracker
Scrape Amazon products, search results and Best Sellers on 10 marketplaces: typed local prices, Buy Box, offers, BSR, stock, variants and a price/rank change monitor.
Pricing
from $2.80 / 1,000 products
Rating
0.0
(0)
Developer
Lighthouse Data
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
4
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Amazon product pages, search results and Best Sellers lists on 10 marketplaces and get clean, typed JSON: the local price as a number with its ISO currency, Buy Box seller, all offers, stock status, Best Sellers Rank, rating summary, variants and specs. Turn on monitoring, put the Actor on a schedule, and it tells you what changed since the last run: price drops, Buy Box losses, stock-outs and rank moves.
Supported marketplaces: 🇺🇸 amazon.com · 🇬🇧 amazon.co.uk · 🇩🇪 amazon.de · 🇫🇷 amazon.fr · 🇮🇹 amazon.it · 🇪🇸 amazon.es · 🇨🇦 amazon.ca · 🇦🇺 amazon.com.au · 🇯🇵 amazon.co.jp · 🇮🇳 amazon.in
What does Amazon Product Scraper & Price Tracker do?
- Products by ASIN or URL: title, brand, price, list price, discount, currency, Buy Box seller and fulfilment (FBA), stock status and "Only N left", offers count and lowest offer, rating, ratings count, star histogram, Best Sellers Rank in every category, breadcrumbs, variants (parent ASIN and every child's size, colour and so on), bullet points, description, specifications, images, badges and "bought in past month".
- Search results for any keyword or search/category URL, with position, price, rating, sponsored flag, badges and "bought in past month".
- Best Sellers, New Releases, Movers & Shakers, Most Wished For and Most Gifted: all 100 ranks of a list, including the ranks Amazon loads lazily.
- All offers (optional): every seller's price, condition, seller ID, ships-from and delivery promise, with the Buy Box offer flagged.
- Change monitoring (optional): remembers the last values per ASIN and marketplace, and outputs a
changerecord for each price, list price, stock, Buy Box, BSR, rating or position change above your thresholds.
Why use it?
- Correct local prices on every marketplace, at no extra charge. Amazon hides the Buy Box when an item doesn't ship to the visitor's location, which is a common reason other scrapers return no price. This Actor sets an anonymous "Deliver to" postcode in each marketplace's own country (10115 Berlin, 75001 Paris, EC1A 1BB London and so on) and records the location it used in
deliveryLocation. You can choose your own postcode. - Typed, normalised data. Prices are numbers (
24.06, not"24,06 €"), currencies are ISO codes (EUR,JPY,INR), stock is an enum (IN_STOCK,LOW_STOCK,OUT_OF_STOCK,PREORDER,NO_FEATURED_OFFER,UNKNOWN), and BSR is a number with its category. The field names are the same on all 10 marketplaces. Missing values arenull, never empty strings or guesses. - Built for reliability. CAPTCHA pages, 503s and bot challenges are detected and retried on a fresh session and IP, with an automatic residential-proxy fallback for stubborn pages (included in the price). We never solve CAPTCHAs. If Amazon changes its page layout, the run fails loudly with a clear message instead of returning empty data.
- Pay per result, no surprises. There is no start fee, no per-location fee and no platform-usage add-on. Set a maximum cost per run and the Actor stops cleanly at your limit.
- Agent- and MCP-friendly. Every input and output field is documented with examples, so AI agents can call it through the Apify MCP server ("What does ASIN B08T1HR5CS cost on amazon.de?").
Use cases
- Price and Buy Box monitoring for brands, MAP enforcement, and resellers watching competitors.
- Amazon market research: Best Sellers across 10 countries, category assortments, price indexes.
- Keyword share of shelf: who ranks for your search terms, sponsored against organic.
- Arbitrage and sourcing: compare the same ASIN across marketplaces in local currencies, and use "bought in past month" as a demand signal.
- Catalogue enrichment: specs, images, variants and category paths for product feeds.
- AI agents and RAG that need current Amazon product facts.
How to use it
- Click Try for free.
- Enter what you want:
- ASINs or product URLs (e.g.
B0113UZJE2orhttps://www.amazon.de/dp/B08T1HR5CS) - Search keywords (e.g.
coffee grinder) on the marketplace you pick - Amazon URLs for search, category or Best Sellers pages (e.g.
https://www.amazon.com/gp/bestsellers/kitchen)
- ASINs or product URLs (e.g.
- Click Start. Download the results as JSON, CSV or Excel, or read them through the API. The Output tab has views for Products, Search results, Best Sellers and Changes.
Example input:
{"asins": ["B0113UZJE2", "https://www.amazon.co.uk/dp/B094D541XW"],"searchQueries": ["coffee grinder"],"startUrls": [{ "url": "https://www.amazon.de/gp/bestsellers/computers" }],"marketplace": "US","maxResultsPerQuery": 20,"includeOffers": true}
⏰ Track prices and ranks on a schedule
- Put your ASINs (or a Best Sellers or search URL) in the input and turn on Monitor changes between runs.
- Give the monitor a name, e.g.
monitorStoreName: "my-brand-de". Use one name per list you track. - Save the input as a Task, then add a Schedule, for example every day at 07:00 (
0 7 * * *). - Each run writes one
changerecord per detected change. Use the Changes view, a webhook, or the Zapier, Make, Slack or Google Sheets integrations to get alerts. - Every monitored record also carries
lowestPriceandlowestPriceAt(the lowest price since the monitor started tracking the product) andisLowestPrice(truewhen today's price is at or below that low,nullon the first run). Filter onisLowestPrice: truefor "lowest price yet" alerts.
{"asins": ["B08T1HR5CS", "B0BR3L78XN", "B0B7NTY2S6"],"marketplace": "DE","monitorChanges": true,"monitorStoreName": "my-brand-de","monitorFields": ["price", "availability", "buyBoxSeller", "bestSellersRank"],"priceChangeThresholdPercent": 2,"rankChangeThresholdPercent": 10}
A change record looks like this:
{"recordType": "change","asin": "B085DVHQ57","marketplace": "US","title": "Owala FreeSip Stainless Steel Water Bottle 32 oz Very, Very Dark","field": "price","previousValue": 34.99,"currentValue": 29.99,"changePercent": -14.3,"isLowestPrice": true,"currency": "USD","previousScrapedAt": "2026-09-28T07:00:12.000Z","scrapedAt": "2026-09-29T07:00:09.000Z","url": "https://www.amazon.com/dp/B085DVHQ57"}
changePercent is the signed change in percent, rounded to 0.1. It is null when the previous value was 0 or missing (for example a price that just reappeared).
With monitorOutput: "changesOnly", only change records go to the dataset. The full check report (new, changed, unchanged and incomplete per ASIN) is saved as MONITOR_REPORT in the run's key-value store. A product whose price and stock status could not be read in a run is not compared, so it never shows up as a false "price disappeared" change.
Input
| Field | Type | Description | Example |
|---|---|---|---|
asins | array of strings | ASINs (looked up on marketplace) or product URLs from any supported marketplace | ["B0113UZJE2", "https://www.amazon.de/dp/B08T1HR5CS"] |
searchQueries | array of strings | Keywords to search on marketplace | ["coffee grinder"] |
startUrls | array | Product, search/category (/s?k=…, /s?rh=n:…) or ranking-list URLs (/gp/bestsellers/…, /gp/new-releases/…, /gp/movers-and-shakers/…, /gp/most-wished-for/…, /gp/most-gifted/…) | [{"url": "https://www.amazon.com/gp/bestsellers/kitchen"}] |
marketplace | string | US, UK, DE, FR, IT, ES, CA, AU, JP or IN, used for plain ASINs and keywords. Default US | "DE" |
maxResultsPerQuery | integer | Results per keyword, search URL or list. 0 = all. Default 50 | 100 |
scrapeProductDetails | boolean | Open every search or list result for full product data (charged as product). Default false | true |
includeOffers | boolean | Add all sellers' offers to each product. Default false | true |
maxOffers | integer | Max offers per product. Default 10 | 20 |
monitorChanges | boolean | Compare with the previous run and output change records. Default false | true |
monitorStoreName | string | Named key-value store that keeps the last values. Default amazon-products-monitor | "my-brand-de" |
monitorOutput | string | all (products + changes) or changesOnly. Default all | "changesOnly" |
monitorFields | array | Fields to watch: price, listPrice, availability, buyBoxSeller, bestSellersRank, rating, reviewsCount, offersCount, listRank | ["price", "buyBoxSeller"] |
priceChangeThresholdPercent | integer | Ignore smaller price moves. Default 0 | 5 |
rankChangeThresholdPercent | integer | Ignore smaller rank moves. Default 10 | 20 |
deliveryPostcodes | object | Your own "Deliver to" postcode per marketplace | {"US": "90210", "DE": "80331"} |
maxItems | integer | Hard cap on product and list records for the whole run. 0 = no cap | 1000 |
maxConcurrency | integer | Parallel requests. Default 8 | 8 |
useResidentialFallback | boolean | Retry stubborn pages through a residential IP in the marketplace's country (included in the price). Default true | true |
Output
See real output: 2 records from a real run (JSON). This is the built-in example (empty input), run on 2026-10-06 with build 1.0.23.
Every record has recordType (product, search, bestsellers or change), asin, marketplace, url and scrapedAt. A product record, trimmed:
{"recordType": "product","asin": "B08T1HR5CS","marketplace": "DE","domain": "amazon.de","url": "https://www.amazon.de/dp/B08T1HR5CS","title": "HP 305 Schwarz/Farbe, Original Druckerpatronen 2er-Pack","brand": "HP","price": 24.06,"listPrice": 25.67,"currency": "EUR","priceText": "24,06€","savingsPercent": 6,"availability": "IN_STOCK","availabilityText": "Auf Lager","stockLeft": null,"buyBox": { "sellerName": "Amazon", "sellerId": "A3JWKAKR8XB7XF", "shipsFrom": "Amazon", "isAmazon": true, "isFulfilledByAmazon": true },"offersCount": 47,"lowestOfferPrice": 24.06,"offers": [{ "price": 24.06, "currency": "EUR", "condition": "Neu", "sellerName": "Amazon", "sellerId": null, "shipsFrom": "Amazon", "isFulfilledByAmazon": true, "isBuyBox": true, "deliveryText": "GRATIS Lieferung Freitag, 2. Oktober" },{ "price": 29.84, "currency": "EUR", "condition": "Neu", "sellerName": "inkcompany", "sellerId": "A2UOUL8U7ZBPFE", "shipsFrom": "inkcompany", "isFulfilledByAmazon": false, "isBuyBox": false, "deliveryText": "GRATIS Lieferung 1. - 2. Oktober" }],"rating": 4.6,"reviewsCount": 85723,"ratingHistogram": { "fiveStar": 80, "fourStar": 12, "threeStar": 4, "twoStar": 1, "oneStar": 3 },"bestSellersRank": 1,"bestSellersCategory": "Computer & Zubehör","bestSellersRanks": [{ "rank": 1, "category": "Computer & Zubehör", "categoryUrl": "https://www.amazon.de/gp/bestsellers/computers" },{ "rank": 1, "category": "Tintenpatronen für Tintenstrahldrucker", "categoryUrl": "https://www.amazon.de/gp/bestsellers/computers/34253562031" }],"categoryPath": ["Computer & Zubehör", "Drucker & Zubehör", "Drucker Zubehör", "Tintenpatronen für Drucker"],"parentAsin": "B0HHB4BWH2","variantAttributes": { "style_name": "Vorherige Version" },"variantAsins": ["B08T1HR5CS"],"variants": [{ "asin": "B08T1HR5CS", "attributes": { "style_name": "Vorherige Version" } }],"features": ["Original HP Tintenpatronen: Erstklassige Druckqualität, hohe Zuverlässigkeit und einfache Handhabung"],"description": null,"images": ["https://m.media-amazon.com/images/I/71Pfo+tfuvL._AC_SL1500_.jpg"],"thumbnail": "https://m.media-amazon.com/images/I/71Pfo+tfuvL._AC_SL1500_.jpg","specifications": { "Modellname": "HP 305", "Marke": "HP", "Tintenfarbe": "Schwarz, Dreifarbig" },"badges": ["Amazon's Choice"],"isAmazonsChoice": true,"isBestSeller": false,"boughtPastMonth": 20000,"deliveryText": "GRATIS Lieferung Freitag, 2. Oktober für qualifizierte Erstbestellung","deliveryLocation": "10115 Berlin","source": null,"scrapedAt": "2026-09-29T22:26:01.297Z","isComplete": true}
Search and Best Sellers records carry position, page, title, price, listPrice, currency, rating, reviewsCount, thumbnail, badges, boughtPastMonth, isSponsored and searchQuery, or listName and listType. The full field list with descriptions is on the Output tab.
Stock status (availability): IN_STOCK, LOW_STOCK (with stockLeft), OUT_OF_STOCK, PREORDER, NO_FEATURED_OFFER or UNKNOWN. NO_FEATURED_OFFER means Amazon shows no Buy Box price for the product, but other sellers offer it ("See All Buying Options"). price and buyBox are then null. Turn on includeOffers to get the sellers' prices.
Completeness and reruns. Every record has isComplete. It is false only when the core value could not be read (see Pricing). Each run saves a SUMMARY record in its key-value store with counts, not-found ASINs, keywords with no results, failed pages and a completeness object:
{ "unit": "products", "requested": 40, "delivered": 38, "incomplete": 1, "failed": 1, "ratio": 0.95 }
If anything failed (Amazon kept blocking a page after all retries) or was incomplete, the run also saves FAILED_INPUT. It is your input with all settings kept, and the ASINs, keywords and URLs reduced to the ones that need another try. Run the Actor with it to fetch just those. A failed search or list page reruns that whole keyword or list. The status message tells you, e.g. Done: 38 of 40 products saved (38 product(s), 0 list result(s)). 1 page(s) failed (blocked by Amazon). 1 saved incomplete, without price or title (not charged). Rerun input saved as FAILED_INPUT. A run with some failures still succeeds.
Pricing
Pay per event. You pay only for results; Apify platform usage is included.
| Event | What it is | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|---|
product | One full product page (or one product checked in monitoring mode) | $0.004 | $0.0036 | $0.0032 | $0.0028 | $0.0028 | $0.0028 |
listing-item | One search or Best Sellers result without opening its page | $0.001 | $0.0009 | $0.0008 | $0.0007 | $0.0007 | $0.0007 |
offers | All sellers' offers for one product (only with includeOffers) | $0.001 | $0.001 | $0.0009 | $0.0009 | $0.0009 | $0.0009 |
| Actor start | Apify's standard start event, per GB of memory (1 GB default) | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
change records are free, and so is the residential-proxy fallback.
You pay only for complete records. A product is complete when we read its price or a real stock status. Out of stock, pre-order and "no featured offer" (NO_FEATURED_OFFER) are real states, so they are complete and charged. A search or Best Sellers result is complete when it has its ASIN and title. Sometimes Amazon keeps serving a stripped page: a product with neither a price nor a stock status after all retries, or a ranked list entry without its title. We still save that record, with isComplete: false, but we don't charge for it. We don't charge offers for it either. It is listed in FAILED_INPUT so you can rerun it.
Cost examples (FREE tier):
- 1,000 products with full details: $4.00. With all offers: $5.00.
- Top 100 Best Sellers in 5 categories (500 list results): $0.50.
- Daily price tracking of 200 ASINs: 200 × $0.004 = $0.80 a day, about $24 a month.
- The default input (2 products, 10 search results and 10 Best Sellers): about $0.03.
Set Maximum cost per run in the run options and the Actor stops cleanly when it is reached.
Ready-made tasks
One-click examples with the input already filled in. Open one, adjust it and run:
- Amazon Best Sellers: Kitchen (US)
- Amazon Buy Box and seller offers for a product
- Amazon price drop monitor
- Amazon search results scraper (keyword to products)
- Scrape Amazon UK Best Sellers
- Track Amazon product prices by ASIN
Use it from an AI agent (MCP)
AI agents can run this Actor through Apify's MCP server. Add this server to Claude, Cursor, VS Code or any MCP client:
{"mcpServers": {"apify": { "url": "https://mcp.apify.com?tools=cylindrical_lighthouse/amazon-products" }}}
You sign in to Apify in the browser on first use, or you can send the header Authorization: Bearer <APIFY_TOKEN>. VS Code's mcp.json names the top-level key servers instead of mcpServers. With the Apify CLI you can also run apify mcp install cursor (other clients are supported). Then just ask, for example: "Check the current price and Buy Box seller of ASIN B0113UZJE2 on amazon.com".
Integrations
- Make, Zapier and n8n: use the Apify app or node, choose Run an Actor and pick
cylindrical_lighthouse/amazon-products, then send the dataset to Google Sheets, Airtable, Slack or a database. - Google Drive and webhooks: in the Actor's Integrations tab, upload each run's results to a Drive folder or call your own URL when a run finishes.
- Schedules: in Apify Console, go to Schedules, then Create new, and pick this Actor or one of its saved tasks to track prices or Best Sellers ranks automatically.
- API:
POST https://api.apify.com/v2/acts/cylindrical_lighthouse~amazon-products/run-sync-get-dataset-items?token=<APIFY_TOKEN>runs it and returns the results in one call.
Related Actors
From the same publisher:
- Coles & Woolworths Grocery Price Scraper
- Google Trends Scraper
- Google Ads Transparency Scraper & Ad Monitor
FAQ
Is it legal to scrape Amazon? This Actor collects only publicly available product data: prices, ranks, availability and the public rating summary. It never logs in and never collects reviewers' names or review texts. Amazon's Conditions of Use restrict automated access, so check your own use with your lawyers. Your results may contain the names of sellers, which can be personal data if a seller is an individual. Personal data is protected by GDPR and other regulations; do not use it unless you have a legitimate reason. Product descriptions and images may be protected by copyright; don't republish them without permission.
Why are prices different from what I see in my browser? Amazon prices depend on the delivery location. We use a central postcode in each marketplace's country (see deliveryLocation on every record). Set your own with deliveryPostcodes, e.g. {"US": "90210"}.
Can I get full customer reviews? No. Amazon now shows full review lists only to signed-in customers, and this Actor never logs in. You get the public rating, ratings count and star histogram.
Why does a product show a different ASIN than I asked for? Parent ASINs of variation families redirect to a child variant. The record keeps the ASIN you asked for in inputAsin, and lists the whole family in variantAsins and variants.
Why does a product have no price and NO_FEATURED_OFFER? Amazon sometimes suppresses the Buy Box, for example when no offer meets its pricing rules. The product page then shows "See All Buying Options" instead of a price. This is Amazon's real state, so the record is complete. Turn on includeOffers to see every seller's price.
Why does a product say dataSource: "search-results"? Amazon sometimes serves a product page without its product section (no price, seller or details), on every attempt. The Actor then looks the ASIN up in Amazon search, which still lists it, and takes the price, list price, rating, ratings count, brand, image and badges from there. The seller (Buy Box), stock status, Best Sellers rank and specifications are not in search results, so they stay empty and availability is UNKNOWN. A record with a price is complete and charged as a normal product; one without a price is saved free with isComplete: false. Rerun those later with FAILED_INPUT for the full details.
What happens with an invalid ASIN or a keyword with no results? The run still succeeds. Not-found ASINs and keywords with no results are listed in the SUMMARY record and the status message, and you aren't charged for them. A search that returns only ads counts as "no results".
Do I need proxies? No. The Actor uses Apify Proxy automatically, with a residential fallback for pages that stay blocked.
Can AI agents use it? Yes. The input and output schemas are fully documented, so it works as a tool through the Apify MCP server. Keep maxResultsPerQuery small for interactive use.
Limitations
- Customer review texts are not available (sign-in only).
- Amazon shows at most about 7–20 search pages per keyword. For more coverage, split a keyword into narrower keywords or category URLs.
- Best Sellers-type lists have at most 100 ranks.
- Specification labels are in the marketplace's language (e.g.
Markeon amazon.de). - Brand store pages (
/stores/…), deals pages and seller storefronts are not supported yet. - When Amazon withholds a product page's details, the record falls back to search-result fields (see
dataSourcein the FAQ). - Prices are for the delivery postcode used. Business (B2B) and Subscribe & Save prices are not collected.
listRankmonitoring compares positions only for products seen in both runs. A product that drops out of a list produces no change record.
Changelog
See the Changelog tab.
Support
Found a bug or need a field? Open an issue on the Issues tab; we reply within 48 hours. Please include the run ID and one example ASIN or URL.
Did this Actor save you time? A short review on the Store helps other people find it and tells us what to improve. If something didn't work, please open an issue first, so we can fix it for you.