Amazon Product Scraper: Prices, Reviews, BSR, No Login avatar

Amazon Product Scraper: Prices, Reviews, BSR, No Login

Pricing

from $0.29 / 1,000 search results

Go to Apify Store
Amazon Product Scraper: Prices, Reviews, BSR, No Login

Amazon Product Scraper: Prices, Reviews, BSR, No Login

Track Amazon prices and rivals with no login: get price, rating and reviews count by keyword, ASIN or link, plus Best Sellers Rank, seller and stock from product pages, across 9 marketplaces, then see what changed since the last run.

Pricing

from $0.29 / 1,000 search results

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Amazon Product Scraper reads public Amazon pages by keyword, ASIN or link and returns rows with price, rating and reviews count, with no login or API key. Product pages add Best Sellers Rank, seller and stock. Use it to compare products or watch prices over time: the smallest run takes one keyword, returns 10 rows in about 10 seconds and costs $0.0068 on the Free plan.

Amazon Product Scraper: add what to check, get clean rows, export JSON or CSV. Works on many marketplaces, tracks price changes, needs no login.

The values in this banner are examples.

Table of contents

What it does

This Amazon scraper collects public product data from Amazon search results, category pages, product pages, ranking lists and public reviews. It works on nine stores: amazon.com, .de, .co.uk, .fr, .it, .es, .ca, .co.jp and .com.au.

The result is one Dataset row per product or review. A run can also remember prices under a name you choose. The next run with that name shows what changed.

The Actor reads only what a signed-out visitor sees. It does not log in, solve CAPTCHAs or collect reviewer names.

Good fit

  • Track a competitor's price and stock with a daily scheduled run in mode: product.
  • Find products for a keyword with price, rating, reviews count and search position.
  • Check Best Sellers Rank and seller for a list of ASINs.
  • Compare one ASIN across stores, with each store's price in its own currency.
  • Spot a discount that may not be real: the strike-through price rose while the price did not fall.

👉 Try it now: open the input form

How it works

  1. You add keywords, ASINs or any Amazon links and choose a store.
  2. The Actor opens the public pages, sets a delivery address in the chosen store when it can, and retries blocked pages.
  3. It removes duplicates, applies your filters and compares prices with the previous run if you set monitorName.
  4. It saves rows to the Dataset, a run report to RUN_SUMMARY and results per input to SUMMARY.

👉 Try it now: open the input form

Quick start

Input form cropped to the fields. Box 1 marks the Search queries field with standing desk, box 2 marks Maximum results set to 10.

  1. Open the Input tab. The form already holds standing desk in searchQueries (box 1 in the picture). The store stays com.

  2. Keep maxItems at 10 for a first test (box 2). Then start the run.

  3. Open the Output tab when the run ends (box 3 in the second picture). In the Products view, read title, price and rating (box 4).

    Run page with the Output tab in box 3, and the Products view with 5 of 10 rows. Box 4 marks the columns from title to rating in the first row.

    Search rows have no seller, bsr or stock, and brand can be empty, as in this picture. Use mode: product to fill them.

  4. Download the rows from the run page as CSV, Excel or JSON.

Expected result: 10 rows in about 10 seconds, each with an ASIN, a title, a price and a search position. The run costs $0.0068 on the Free plan.

👉 Try it now: open the input form

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
Watch competitor pricesmode: product, asins, monitorNameProduct rowchangeStatus, price, previousPrice, priceChangeSchedule plus Slack delivery
Research a keywordsearchQueriesSearch rowtitle, price, rating, reviewsCount, searchRankCSV or Excel export
Check a catalog of ASINsmode: product, asinsProduct rowbrand, seller, bsr, inStock, categoryAPI or spreadsheet
Read a ranking listmode: bestsellers, rankingTypeRanking rowsearchRank, title, price, ratingCSV export
Sum up customer opinionmode: reviews, asinsReview and summary rowsreviewText, starDistribution, reviewThemesAI agent through MCP

👉 Try it now: open the input form

Input

Input fields

No field is required by the form, but a run needs something to read. With no valid keyword, ASIN or link, the run fails with NO_TARGETS at no charge. Duplicates in one run are removed: four forms of one ASIN give one row.

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
modeWhat to readstringnodefault searchsearch, product, reviews, bestsellersPicks the page typeproductLinks in productUrls keep their own type in any mode
marketplaceStorestringnodefault and prefill comcom, de, co.uk, fr, it, es, ca, co.jp, com.auStore for keywords and ASINsdecom has no setup charge
searchQueriesKeywordsarray of stringsfor searchprefill standing deskup to 50Keywords to searchyoga matOne row limit covers all keywords
asinsASINsarray of stringsfor product and reviewsnoneup to 1000Amazon product IDsB0DWMJMV7LThe largest list tested is 60
productUrlsAmazon linksarray of objectsnononeup to 1000Search, category, product or ranking links{"url":"https://www.amazon.com/dp/B0DWMJMV7L"}The store comes from the link
maxItemsRow limitintegernodefault 100, prefill 101 to 1500Paid rows in the whole run500Lower it to control spending
maxReviewsReviews per productintegernodefault 201 to 100Reviews to read per product10A product may return fewer
extraMarketplacesOther storesarray of stringsnononeup to 8 storesAlso reads these stores["de","co.uk"]Each store above com adds a setup charge
rankingTypeRanking liststringnodefault bestsellersbestsellers, new-releases, moversList in bestsellers mode with no linkmoversUsed only with mode: bestsellers
deliveryZipPostcodestringnostore defaultpostcode of the main storePrices for this postcode10001Not available on it and es
sortBySort orderstringnodefault relevancerelevance, price-asc, price-desc, rating, newestOrder of search resultsnewestSearch only
minPrice, maxPricePrice rangenumbernonone0 or more, in store currencyRemoves rows outside the range50Rows with no price do not pass
minRatingLowest ratingnumbernonone0 to 5Removes rows below it4.5Rows with no rating do not pass
primeOnlyPrime onlybooleannofalsetrue, falseUses Amazon's Prime filtertrueSearch on com only
excludeSponsoredSkip sponsoredbooleannofalsetrue, falseSkips sponsored rowstrueSkipped rows still count in searchRank
reviewsNewerThanReviews sincestringnononeYYYY-MM-DDKeeps newer reviews2026-01-01Reviews with no date do not pass
reviewStarsReview starsarraynononestar ratingsKeeps these ratings["1","2"]Reviews with no rating do not pass
includeVariantsVariantsbooleannofalsetrue, falseAdds sizes and colors in variantstrueProduct mode
variantPricesVariant pricesbooleannofalsetrue, falseOpens up to 20 variant pages per producttrueNeeds includeVariants. Each page is one page-check
monitorNameMonitor namestringnononeletters, digits, hyphens, up to 40Remembers prices between runsmy-desksKeep the same name for each run
onlyChangesOnly changesbooleannofalsetrue, falseOutputs only changed rowstrueNeeds monitorName
outputFormatRow shapestringnodefault flatflat, nestedFlat columns or nested groupsnestedUse flat for spreadsheets
deliveryConnectorConnectorstringnononeyour MCP connectorPosts a summary after the runSlack connectorOptional
deliveryTargetWhere to poststringnononeNotion page link or Slack channel IDDestination of the summarySlack channel IDEmpty lets the connector decide

Interacting settings

WhenInput AInput BEffective behaviorExampleCost/result effect
Filter removes all rowsminPricesearchQueriesThe Actor keeps reading, up to 20 pages per keywordminPrice: 9999920 page-check for one keyword, $0.052, 0 rows
Unchanged monitormonitorNameonlyChangesUnchanged items are hiddensame list twiceOne page-check per unchanged item, no result charge
One ASIN in many storesasinsextraMarketplacesOne row, with prices in marketplacePrices["de","co.uk"]One marketplace-setup per store other than com
Variant pricesincludeVariantsvariantPricesOpens variant pages14 variantsOne page-check per opened page
Limit reachedmaxItemsmaxTotalChargeUsdThe first limit reached ends the runmaxItems: 100Status partial at the charge limit
Invalid pairminPricemaxPriceRun fails if minPrice is higher10 and 5Fails with INVALID_INPUT, no charge

Input examples

Search one keyword

{
"marketplace": "com",
"searchQueries": ["standing desk"],
"maxItems": 10
}

Expected behavior: the Actor reads one search page. Expected output: 10 search rows with asin, title, price, rating and searchRank. Limit or cost note: $0.0068 on the Free plan.

Track prices of products

{
"mode": "product",
"asins": ["B0DWMJMV7L", "B0DWMNPW7D"],
"monitorName": "my-desks",
"onlyChanges": true
}

Expected behavior: the first run marks every row new. Later runs output only rows that changed. Expected output: product rows with changeStatus, price, previousPrice and priceChange. Limit or cost note: a changed row costs one product-result. An unchanged item costs one page-check.

👉 Try it now: open the input form

Output

Output fields

Every flat row has the same columns. A field with no value is null, not missing. Search rows have no brand, seller, bsr or inStock, because these appear only on the product page. Use mode: product when you need them.

FieldMeaningTypeCan be empty?Example / enumSource / notes
recordTypeRow typestringnoproduct, search, ranking, review, reviewSummarySet by the Actor
statusRow statestringnocomplete, partial, not_found, errornote explains the last three
noteWhy a row is not completestringyesAmazon shows only an excerpt...Set by the Actor
asinAmazon product IDstringnoB0F8MHPVPHPage
marketplaceStorestringnocomInput or link
titleProduct titlestringconditionalFEZIBO Standing Desk...Page, in the store's language
brandBrandstringyesVekenProduct page
pricePrice everyone paysnumberyes99.98Page
listPriceStrike-through pricenumberyes112.99Page
primePricePrice only Prime members paynumberyes104.99Page, when shown
currencyISO currency codestringyesUSDPage
discountPercentDiscount from listPricenumberyes11.5Calculated
discountFromPreviousPercentReal discount from the previous runnumberyes10Monitor only
fakeDiscountSuspectedStrike-through price rose or appeared while the price did not fallbooleanyestrueMonitor only
deliveryLocationDelivery location on the pagestringyes75001Page
priceIsLocalPrice is for an address in this storebooleanyestruefalse on it and es
ratingAverage starsnumberyes4.5Page
reviewsCountNumber of ratingsnumberyes4963Page
starDistributionShare of reviews per starobjectyes{"5":78}Product page
reviewThemesFrequent pros and cons with countsarrayyesQuality, 673 mentionsAmazon or counted
themesSourceWhere themes came fromstringyesamazon, frequencySet by the Actor
verifiedShareShare of verified purchases readnumberyes0.9Needs full reviews
aiReviewsSummaryAmazon's own review summarystringyesCustomers find...Product page
bsrBest Sellers Rank in the main categorynumberyes704Product page
bsrRanksRank in every listed categoryarrayyesProduct page
searchRankPlace on the page, sponsored includednumberyes1Search and ranking rows
organicRankPlace among non-sponsored resultsnumberyes1Search rows
rankingTypeRanking liststringyesbestsellersRanking rows
isSponsoredSponsored resultbooleanyesfalseSearch rows
searchQueryKeyword or link behind the rowstringyesstanding deskInput
category, breadcrumbsMain category and pathstring, arrayyesUtility TablesProduct page
sellerSeller namestringyesAborder ProductsProduct page
primePrime badge seenbooleanyestruenull means unknown: signed-out pages usually hide it
inStockAvailabilitybooleanyestruenull when the page does not say
imagesImage linksarrayyesPage
urlProduct pagestringyeshttps://www.amazon.com/dp/B0F8MHPVPHBuilt from the ASIN
features, descriptionBullets and descriptionarray, stringyesProduct page
boughtPastMonthAmazon's sales textstringyes5K+ bought in past monthPage
deliveryTextDelivery estimatestringyesPage
variantsOther sizes and colorsarrayyesWith includeVariants
marketplacePricesPrice per storearrayyesWith extraMarketplaces
changeStatusChange since last runstringyesnew, priceDown, priceUp, backInStock, outOfStock, removed, unchangedMonitor only
priceChange, previousPriceDifference and last pricenumberyes-10, 159.98Monitor only
reviewIdReview IDstringyesR3QR3YJUS5M67QReview rows
reviewRating, reviewTitleStars and title of the reviewnumber, stringyesEmpty for excerpts
reviewTextReview text or excerptstringyesGreat desk...No reviewer names
reviewDate, reviewDateTextDate as YYYY-MM-DD and as writtenstringyesEmpty for excerpts
reviewVerifiedVerified purchasebooleanyestrueEmpty for excerpts
reviewUrlPublic link to the reviewstringyesReview rows
reviewAspectTopic of the excerptstringyesqualityExcerpts
reviewIsExcerptOnly an excerpt could be readbooleanyestrueReview rows

Output entities and surfaces

SituationDataset/API/KVS/live viewResult shapeUser action
Normal itemDataset views Products, Reviews, Price changesOne row with status: completeOpen a view or export it
Domain-empty resultEmpty Dataset, RUN_SUMMARYstopReason is NO_RESULTS, NO_MATCHES or NO_CHANGES, with a reasonChange the keyword or filters
ASIN does not existDataset row, RUN_SUMMARYFree row with status: not_found, or run status NOT_FOUNDCheck the ASIN and store
Partial rowDatasetstatus: partial, a note, some null fieldsRead note
Partial runDataset, RUN_SUMMARYstatus: partial, with unprocessedInputs and failedInputsRun those inputs again
Technical failureRun status FAILED, RUN_SUMMARYstopReason, no useful rowsFollow Troubleshooting

Output example

This is a real row from the keyword example, trimmed to the filled fields. Fields not shown are null in this row.

{
"recordType": "search",
"status": "complete",
"asin": "B0F8MHPVPH",
"marketplace": "com",
"title": "FEZIBO Standing Desk 48 × 24 Inch Electric Height Adjustable, Maple",
"price": 99.98,
"listPrice": 112.99,
"currency": "USD",
"discountPercent": 11.5,
"priceIsLocal": true,
"rating": 4.5,
"reviewsCount": 4963,
"searchRank": 1,
"organicRank": 1,
"isSponsored": false,
"searchQuery": "standing desk",
"url": "https://www.amazon.com/dp/B0F8MHPVPH",
"boughtPastMonth": "5K+ bought in past month"
}

null means the page did not show the value. It does not mean the value is zero.

Send results to Slack or Notion

Pick your connector in the optional deliveryConnector field. After the run saves its data, the Actor posts a short summary (up to 25 rows and a link to the full dataset) there. Put a Notion page link or a Slack channel ID in deliveryTarget: in Notion every run is added on top of that one page, so your workspace does not fill up with new pages. A delivery error never fails the run and costs nothing extra. Connect a service once in Apify Console → MCP connectors.

Use case → fields

Buyer jobInput pathOutput entityKey fieldsNext integration
Watch pricesasins, monitorNameProduct rowchangeStatus, price, previousPriceSlack delivery
Find productssearchQueriesSearch rowtitle, price, rating, searchRankCSV export
Check sellers and rankasinsProduct rowseller, bsr, inStockAPI
Compare storesasins, extraMarketplacesProduct rowmarketplacePricesJSON export
Read opinionmode: reviewsReview rowsreviewText, reviewThemesMCP

👉 Try it now: open the input form

Pricing

Pricing unit

You pay per event. There is no start fee, and the developer pays platform usage. The price of result events falls with your Apify plan.

EventWhen it is chargedFreeBronzeSilverGold and above
search-resultOne row from search, category or ranking pages$0.00042$0.000378$0.000336$0.000294
product-resultOne full row from a product page$0.0045$0.00405$0.0036$0.00315
review-resultOne public review or excerpt$0.001$0.0009$0.0008$0.0007
page-checkOne search page, one unchanged monitor item, one opened variant page, one product page with no price$0.0026$0.0026$0.0026$0.0026
marketplace-setupSetting an address, once per store in a run, except com$0.035$0.035$0.035$0.035
local-pageOne search page on it or es$0.01$0.01$0.01$0.01

What you pay when there are no rows:

  • A keyword with no results costs one page-check, $0.0026.
  • A filter with no matches costs one page-check per page read, up to 20 pages per keyword, so $0.052 per keyword.
  • A monitor with no changes costs one page-check per unchanged item or search page.
  • Invalid input costs nothing, because the run stops before reading any page.
  • A not_found row and a failed input are not charged as results. Pages read before a failure stay charged.

The smallest maximum charge you can set for a run is $0.04. That is enough for one row in any store. When a run reaches your maximum charge, it ends as SUCCEEDED with status: partial and stopReason: CHARGE_LIMIT, and it never goes over the limit.

Cost examples

Amounts are on the Free plan, then on the Gold plan. Search pages hold about 20 rows.

ScenarioInput scopeExpected item/event countBase chargeOptional chargeStop/cap behavior
Small search1 keyword, com, 10 rows1 page, 10 rows$0.0068 / $0.0055nonemaxItems
Normal searchcom, 100 rowsabout 5 pages, 100 rowsabout $0.055 / $0.042nonemaxItems
Big searchcom, 1000 rowsabout 50 pages, 1000 rowsabout $0.55 / $0.42nonemaxItems
Search in Germany1 keyword, de, 5 rows1 setup, 1 page, 5 rows$0.040 / $0.039setup in basemaxItems
Products60 ASINs, com60 rows$0.27 / $0.19variant pagesmaxItems
Reviews1 ASIN, com, 5 reviews1 page, 5 reviews, 1 free summary$0.0076 / $0.0061nonemaxReviews
Monitor, no changes1 ASIN, onlyChanges1 check$0.0026 / $0.0026nonenone

👉 Try it now: open the input form

Limits

  • One run saves at most 1500 rows (maxItems). The largest test had 10 keywords. It took 345 to 538 seconds at 1024 MB, so it comes close to the default 600-second timeout.
  • One run takes up to 50 keywords, 1000 ASINs and 1000 links. The largest product list tested is 60 ASINs: it took 206 to 256 seconds at 1024 MB. Blocks make it slower: in one of those runs, 22 of 82 page requests were blocked and retried. On a long list raise the run timeout. Inputs not reached are listed in unprocessedInputs and not charged.
  • Search reads up to 20 pages per keyword. Ranking lists read up to 2 pages.
  • Reviews on amazon.com are public excerpts only. reviewText, reviewId, reviewAspect and reviewIsExcerpt are filled, but stars, title, date and reviewVerified are empty. The full review pages need a login, and this Actor does not log in. On amazon.de, reviews came with full fields. Other stores may differ: check reviewIsExcerpt. A product may return fewer reviews than maxReviews.
  • On amazon.it and amazon.es no delivery address can be set. priceIsLocal is false. Search rows there have prices. A product page row may have no price: it comes with status: partial and costs one page-check, not a product-result. For prices on these two stores use search.
  • A batch is best-effort: one failed input does not stop the others, and a run with useful rows stays SUCCEEDED with status: partial. Five failed pages in a row end the run with SOURCE_ERROR. So do 100 seconds with no page read. A page above 16 MB counts as failed for its input.
  • Prices depend on the delivery address and on time. Two runs may differ, and search order may differ from what you see in your browser.
  • Offers from other sellers are not collected: seller holds the seller shown on the product page.
  • The Actor does not collect buyer names, does not use cookies and does not solve CAPTCHAs.
  • This Actor is not made by or linked to Amazon.
  • Minimum memory is 1024 MB. Default run settings are 1024 MB and 600 seconds.

👉 Try it now: open the input form

API, export and integrations

  • API: start a run with the Apify API and the same JSON as the input form. Read rows from the Dataset items endpoint. Use view=products, view=reviews or view=changes.
  • Export: download the Dataset as JSON, CSV, Excel, XML or HTML from the Output tab.
  • Scheduling: create an Apify Schedule with the same monitorName to track prices. Read changeStatus in each run.
  • Webhooks / no-code: an Apify webhook on run end can start your next step. It reads defaultDatasetId from the run.
  • SDK / MCP / agent: see below.

Use with AI agents (MCP)

MCP server URL with only this Actor: https://mcp.apify.com?tools=cliqtomedia/amazon-scraper

Smallest useful input:

{
"marketplace": "com",
"searchQueries": ["standing desk"],
"maxItems": 10
}

Key output fields:

  • asin: Amazon product ID.
  • title: product title.
  • price and currency: price everyone pays and its currency.
  • rating and reviewsCount: average stars and number of ratings.
  • searchRank: place on the search page.

Typical run: about 10 seconds and $0.0068 on the Free plan for this input. Limits: up to 1500 rows per run, and the maximum charge per run cannot be under $0.04.

👉 Try it now: open the input form

Troubleshooting

The run failed right after the start

Symptom: FAILED with NO_TARGETS or INVALID_INPUT. Likely reason: there is no valid keyword, ASIN or link, or a pair of fields conflicts. Check: read reason in RUN_SUMMARY. Action: fix the input and run again. This failure costs nothing.

The run succeeded with 0 rows

Symptom: an empty Dataset and stopReason set in RUN_SUMMARY. Likely reason: NO_RESULTS means Amazon has no results. NO_MATCHES means your filters removed all rows. NO_CHANGES means a monitor saw no change. Check: notes shows how many rows the filters removed. Action: change the keyword or filters. For NO_CHANGES, no action is needed.

Fewer rows than maxItems

Symptom: status: partial, or fewer rows with status: complete. Likely reason: the keyword ran out of results, or the run reached CHARGE_LIMIT, DEADLINE or MAX_ITEMS. Check: read stopReason and unprocessedInputs in RUN_SUMMARY. Action: raise the maximum charge or timeout, and run the listed inputs again.

Some inputs failed

Symptom: inputs in failedInputs, stopReason: SOURCE_ERROR. Likely reason: Amazon blocked these pages after retries. One failed input does not stop the others, but five failed pages in a row end the run. A run with useful rows stays SUCCEEDED with status: partial. A run with no useful rows ends as FAILED. Check: look at failedInputs and pages.blocks in RUN_SUMMARY. Action: wait and run only the failed inputs again.

The run stopped with 0 rows on a store other than amazon.com

Symptom: CHARGE_LIMIT and no rows on de or another store. Likely reason: your maximum charge cannot cover the rest of the work after marketplace-setup, $0.035. Check: compare the maximum charge with the Cost examples. Action: raise the maximum charge.

Prices differ from my browser

Symptom: price is not what you see on Amazon. Likely reason: the delivery address or the time differs. A Prime price goes in primePrice, not price. Check: read deliveryLocation and priceIsLocal. Action: set deliveryZip to your postcode. This does not work on it and es.

Review stars and dates are empty

Symptom: reviewRating and reviewDate are null, and reviewIsExcerpt is true. Likely reason: on amazon.com only excerpts are public without a login. Check: read note in the row. Action: use starDistribution and reviewThemes in the summary row for the overall picture.

Monitor shows a warning about a storage name

Symptom: notes says price history is unavailable, and rows have no change data. Likely reason: your account already has a storage with this monitorName that this Actor may not open. Check: read notes in RUN_SUMMARY. Action: use a new monitorName.

👉 Try it now: open the input form

FAQ

Do I need an Amazon account, cookies or an API key?

No. The Actor reads public pages and takes no login, no cookies and no Amazon API key. You need only an Apify account.

How do I scrape products from Amazon?

Add a keyword to searchQueries, or ASINs to asins with mode: product. Click Start and open the Output tab. The Quick start above shows each step.

Can I export Amazon data to CSV?

Yes. Open the Output tab and download CSV, Excel or JSON. With outputFormat: flat every row has the same columns.

Is it a price tracker?

It can work like one. Set monitorName and run the Actor on a schedule. It does not send alerts by itself: use deliveryConnector to post a summary to Slack or Notion, or read changeStatus through the API.

What does a run with no results cost?

One page-check, $0.0026. A filter with no matches can read up to 20 pages per keyword. Set a maximum charge if you use strict filters on many keywords.

Can I get all reviews of a product?

No. Amazon shows only the first public reviews without a login, and this Actor does not go past that. On amazon.com they are excerpts.

Is scraping Amazon allowed?

The Actor reads public pages only and collects no reviewer names. Whether your use is allowed depends on your country, your purpose and Amazon's terms. Ask your legal adviser if you are not sure.

How fresh is the data?

Each row shows the page at the time of the run. Rank and price change during the day. Run again to get newer values.

👉 Try it now: open the input form

👉 Try it now: open the input form

Support

For a bug, question or feature request, open the Actor's Issues tab on Apify. Include the run ID, the input mode and the error text. Never send tokens, cookies or billing data.

👉 Try it now: open the input form