How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
standing deskin Search queries. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
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.
Good for
- 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.
Who uses it
Sellers and brands
Watch a rival's price and stock on a daily schedule.
Product researchers
Find products for a keyword with price, rating and search position.
Price analysts
Compare one ASIN across stores, each in its own currency.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Search result | $0.00042 (from $0.000294 on paid Apify plans) | One product row from search, category or ranking pages. |
| Product result | $0.0045 (from $0.00315 on paid Apify plans) | One full product row from a product page. |
| Review result | $0.001 (from $0.0007 on paid Apify plans) | One public review or public review excerpt. |
| Page check | $0.0026 | One search page or product check, including empty results and unchanged monitor items. |
| Marketplace setup | $0.035 | Sets a delivery address on a marketplace other than amazon.com, once per marketplace in a run. |
| Local page | $0.01 | One search page on amazon.it or amazon.es, read through a local route. |
Examples
- One result: about $0.0004.
- 1,000 results: about $0.42.
- Every day 100 results, for 30 days: about $1.26 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 11,000 results.
Prices checked on 8 November 2026. See the current price on Apify.
Questions
Do I need an Amazon account, cookies or an API key?
No. The tool reads public pages. You only need an Apify account.
Can I get every review of a product?
No. Amazon shows only the first public reviews without a login. On amazon.com they are excerpts.
Which Amazon stores work?
Nine: amazon.com, .de, .co.uk, .fr, .it, .es, .ca, .co.jp and .com.au.
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.
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.
Details
Step by step on Apify
- Open the Input tab. The form already holds
standing deskinsearchQueries(box 1 in the picture). The store stayscom. - Keep
maxItemsat 10 for a first test (box 2). Then start the run. - Open the Output tab when the run ends (box 3 in the second picture). In the Products view, read
title,priceandrating(box 4). - Download the rows from the run page as CSV, Excel or JSON.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Watch competitor prices | mode: product, asins, monitorName | Product row | changeStatus, price, previousPrice, priceChange | Schedule plus Slack delivery |
| Research a keyword | searchQueries | Search row | title, price, rating, reviewsCount, searchRank | CSV or Excel export |
| Check a catalog of ASINs | mode: product, asins | Product row | brand, seller, bsr, inStock, category | API or spreadsheet |
| Read a ranking list | mode: bestsellers, rankingType | Ranking row | searchRank, title, price, rating | CSV export |
| Sum up customer opinion | mode: reviews, asins | Review and summary rows | reviewText, starDistribution, reviewThemes | AI agent through MCP |
Tips for better results
- Use mode product when you need brand, seller, Best Sellers Rank or stock. Search rows do not have them.
- Set a monitorName and run on a schedule. The next run shows what changed.
- On a long ASIN list, raise the run timeout. One run saves up to 1500 rows.
Limits and good to know
- 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
unprocessedInputsand 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,reviewAspectandreviewIsExcerptare filled, but stars, title, date andreviewVerifiedare 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: checkreviewIsExcerpt. A product may return fewer reviews thanmaxReviews - On amazon.it and amazon.es no delivery address can be set.
priceIsLocalisfalse. Search rows there have prices. A product page row may have no price: it comes withstatus: partialand costs onepage-check, not aproduct-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 withSOURCE_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:
sellerholds the seller shown on the product page
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"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"
}Use it from code
Actor ID: cliqtomedia/amazon-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/amazon-scraper").call(run_input={
"mode": "search",
"marketplace": "com"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~amazon-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "search", "marketplace": "com"}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/amazon-scraper")
result = tool.invoke({"run_input": {"mode": "search", "marketplace": "com"}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (40)
| Field | Type | Meaning |
|---|---|---|
recordType | string | product, search, ranking, review or reviewSummary. |
status | string | complete, partial, not_found or error. |
note | string | Why a row is partial, missing or failed. |
asin | string | Amazon product ID. |
marketplace | string | The Amazon store, for example com or de. |
title | string | Product title. |
brand | string | Brand shown by Amazon. |
price | number | Current price in the source currency. |
listPrice | number | Strike-through price, when shown. |
primePrice | number | Price only Prime members pay, when Amazon shows one. price holds what everyone else pays. |
currency | string | ISO currency code. |
discountPercent | number | Discount from the strike-through price. |
discountFromPreviousPercent | number | Real discount from the price in the previous monitor run. |
fakeDiscountSuspected | boolean | True when the strike-through price rose or appeared while the price did not fall. |
deliveryLocation | string | Delivery location shown by the page. |
priceIsLocal | boolean | True when the price is for a delivery address in this marketplace. |
rating | number | Average stars. |
reviewsCount | number | Number of ratings. |
starDistribution | object | Share of reviews for each star, 1 to 5. |
reviewThemes | array | Frequent pros and cons with mention counts. |
themesSource | string | amazon when taken from the page, frequency when counted from public reviews. |
verifiedShare | number | Share of verified purchases among the public reviews read. |
aiReviewsSummary | string | Amazon's own review summary, when shown. |
bsr | number | Best Sellers Rank in the main category. |
bsrRanks | array | Best Sellers Rank in every listed category. |
searchRank | number | Place on the search or ranking pages, sponsored results included. |
organicRank | number | Place among non-sponsored results. |
rankingType | string | Which ranking list the row came from. |
isSponsored | boolean | True for a sponsored search result. |
searchQuery | string | The query or link behind this row. |
category | string | Main category. |
seller | string | Seller name, when shown. |
prime | boolean | True when a Prime badge is seen. Null means unknown, since signed-out pages usually hide it. |
inStock | boolean | Availability. Null when the page does not say. |
images | array | Product image links. |
url | string | Product page on Amazon. |
breadcrumbs | array | Category path. |
features | array | Feature bullets. |
description | string | Product description. |
boughtPastMonth | string | Amazon's bought-in-past-month text. |
Input settings (25)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| What to collect | mode | string | "search" |
| Marketplace | marketplace | string | "com" |
| Search queries | searchQueries | array | ["standing desk"] |
| ASINs | asins | array | |
| Amazon links | productUrls | array | |
| Maximum results | maxItems | integer | 10 |
| Maximum reviews per product | maxReviews | integer | 20 |
| Compare with other marketplaces | extraMarketplaces | array | |
| Ranking list | rankingType | string | "bestsellers" |
| Delivery postcode | deliveryZip | string | |
| Sort search by | sortBy | string | "relevance" |
| Minimum price | minPrice | number | |
| Maximum price | maxPrice | number | |
| Minimum rating | minRating | number | |
| Prime only | primeOnly | boolean | false |
| Skip sponsored results | excludeSponsored | boolean | false |
| Reviews newer than | reviewsNewerThan | string | |
| Review stars | reviewStars | array | |
| Include variants | includeVariants | boolean | false |
| Read variant prices | variantPrices | boolean | false |
| Monitor name | monitorName | string | |
| Only changed items | onlyChanges | boolean | false |
| Row format | outputFormat | string | "flat" |
| Send results to (optional) | deliveryConnector | string | |
| Notion page or channel (optional) | deliveryTarget | string |
Use cases with this tool
Each guide shows all the steps and the other tools.



