Amazon Product Scraper & Price Tracker avatar

Amazon Product Scraper & Price Tracker

Pricing

from $2.80 / 1,000 products

Go to Apify Store
Amazon Product Scraper & Price Tracker

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

Lighthouse Data

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

21 hours ago

Last modified

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 change record 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 are null, 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

  1. Click Try for free.
  2. Enter what you want:
    • ASINs or product URLs (e.g. B0113UZJE2 or https://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)
  3. 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

  1. Put your ASINs (or a Best Sellers or search URL) in the input and turn on Monitor changes between runs.
  2. Give the monitor a name, e.g. monitorStoreName: "my-brand-de". Use one name per list you track.
  3. Save the input as a Task, then add a Schedule, for example every day at 07:00 (0 7 * * *).
  4. Each run writes one change record per detected change. Use the Changes view, a webhook, or the Zapier, Make, Slack or Google Sheets integrations to get alerts.
  5. Every monitored record also carries lowestPrice and lowestPriceAt (the lowest price since the monitor started tracking the product) and isLowestPrice (true when today's price is at or below that low, null on the first run). Filter on isLowestPrice: true for "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

FieldTypeDescriptionExample
asinsarray of stringsASINs (looked up on marketplace) or product URLs from any supported marketplace["B0113UZJE2", "https://www.amazon.de/dp/B08T1HR5CS"]
searchQueriesarray of stringsKeywords to search on marketplace["coffee grinder"]
startUrlsarrayProduct, 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"}]
marketplacestringUS, UK, DE, FR, IT, ES, CA, AU, JP or IN, used for plain ASINs and keywords. Default US"DE"
maxResultsPerQueryintegerResults per keyword, search URL or list. 0 = all. Default 50100
scrapeProductDetailsbooleanOpen every search or list result for full product data (charged as product). Default falsetrue
includeOffersbooleanAdd all sellers' offers to each product. Default falsetrue
maxOffersintegerMax offers per product. Default 1020
monitorChangesbooleanCompare with the previous run and output change records. Default falsetrue
monitorStoreNamestringNamed key-value store that keeps the last values. Default amazon-products-monitor"my-brand-de"
monitorOutputstringall (products + changes) or changesOnly. Default all"changesOnly"
monitorFieldsarrayFields to watch: price, listPrice, availability, buyBoxSeller, bestSellersRank, rating, reviewsCount, offersCount, listRank["price", "buyBoxSeller"]
priceChangeThresholdPercentintegerIgnore smaller price moves. Default 05
rankChangeThresholdPercentintegerIgnore smaller rank moves. Default 1020
deliveryPostcodesobjectYour own "Deliver to" postcode per marketplace{"US": "90210", "DE": "80331"}
maxItemsintegerHard cap on product and list records for the whole run. 0 = no cap1000
maxConcurrencyintegerParallel requests. Default 88
useResidentialFallbackbooleanRetry stubborn pages through a residential IP in the marketplace's country (included in the price). Default truetrue

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.

EventWhat it isFREEBRONZESILVERGOLDPLATINUMDIAMOND
productOne full product page (or one product checked in monitoring mode)$0.004$0.0036$0.0032$0.0028$0.0028$0.0028
listing-itemOne search or Best Sellers result without opening its page$0.001$0.0009$0.0008$0.0007$0.0007$0.0007
offersAll sellers' offers for one product (only with includeOffers)$0.001$0.001$0.0009$0.0009$0.0009$0.0009
Actor startApify'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:

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.

From the same publisher:

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. Marke on 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 dataSource in the FAQ).
  • Prices are for the delivery postcode used. Business (B2B) and Subscribe & Save prices are not collected.
  • listRank monitoring 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.