Amazon Bestsellers Scraper
Scrape Amazon Best Sellers and New Releases lists. Get rank, ASIN, title, price, rating, review count and category path. Top 60 per list, 22 marketplaces.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
categoryUrls,categories,listType(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.00026 per product = $0.26 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Product scraped | Charged for each ranked product saved to the dataset from an Amazon Best Sellers, New Releases or Movers & Shakers list. Sample rows, diagnostic rows and duplicates are never charged. | $0.00026 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-16, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
categoryUrls | Amazon list URLs copied straight from the site. Both link shapes work - https://www.amazon.com/gp/bestsellers/electronics/ and https://www.amazon.com/Best-Sellers-Electronics-Headphones/zgbs/electronics/172541/ - and so do New Releases (/gp/new-releases/...), Movers & Shakers (/gp/movers-and-shakers/...) and Most Wished For (/gp/most-wished-for/...) links. The marketplace and the list type are read from the URL itself, so you can mix countries in one run. Up to 50 URLs. | array |
categories | Department names as Amazon writes them in that marketplace's own language ("Home & Kitchen", "Toys & Games", "Bücher"), or the slug from the URL ("electronics", "toys-and-games", "books/2"). Names are resolved against the marketplace's own Best Sellers menu, which is why "Home & Kitchen" correctly becomes home-garden and "Tools & Home Improvement" becomes hi. Uses the marketplace and list type chosen below. Up to 50. | array |
listType | Which ranking to read for the entries in "Category names or slugs". Category URLs ignore this - they already say which list they are. Amazon leaves Movers & Shakers empty for most categories. Most Wished For is the list of products people add to their wish lists; when we checked in September 2026 it had products on amazon.co.jp and was empty on the other marketplaces we tried. An empty list gives you one free diagnostic row and no charged rows. | string |
domain | Which Amazon marketplace the entries in "Category names or slugs" belong to. The marketplace's own currency and language preference is sent with every request, so prices come back in the local currency instead of being converted for whatever country the request happens to leave from. | string |
maxItemsPerCategory | How many ranked products to return for each category, counting from rank 1. Amazon renders 30 products per list page and offers two pages, so 60 is the ceiling and also the default. Lower it while you are testing - you pay per product row. | integer |
proxyUrls | Leave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port. | array |
What you get
A structured dataset — each result includes fields like:
rankasintitlebrandpricecurrencyratingreviewCountimageproductUrlcategoryNamelistTypemarketplacepageExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
Amazon Bestsellers Scraper: rank, ASIN and price from any Best Sellers list
Paste an Amazon Best Sellers, New Releases, Movers & Shakers or Most Wished For link and the ranking comes back as a table: position, ASIN, title, price, stars, review count, image, product link and the category path. You can skip links entirely and type department names instead, then pick the marketplace.
Here is the ceiling first, because it decides whether this fits. One list tops out at 60 products. Amazon renders 30 per page over exactly two pages, so the ranks you get are 1 to 30 and 51 to 80. Ranks 31 to 50 are not on Amazon's own list pages at all. For more depth, run the subcategories: each one has its own 60.
| Input | Best Sellers, New Releases, Movers & Shakers or Most Wished For links, or department names plus a marketplace |
| Output | One row per ranked product |
| Ceiling | 60 products per category, 50 categories per run |
| Account needed | None, and no Amazon API key |
| Price | $0.26 per 1,000 products, flat on every plan |
🏆 What Amazon Bestsellers Scraper does
It reads the ranking page Amazon serves to a signed-out visitor and turns each card into a row. Both link shapes work, /gp/bestsellers/electronics/ and /Best-Sellers-.../zgbs/electronics/172541/, and each link carries its own marketplace and list type, so one run can mix countries and mix Best Sellers with New Releases.
The other way in is names. Type Home & Kitchen or Bücher, choose a marketplace, and the name is matched against that marketplace's own Best Sellers menu rather than a list typed in here. That is why the German and Japanese spellings work.
Prices come back in the marketplace's own currency. A list read for amazon.co.jp is priced in yen, not converted into whatever currency the page would otherwise have been offered in.
📥 What you give it
{
"categoryUrls": ["https://www.amazon.com/gp/bestsellers/electronics/"],
"categories": ["Home & Kitchen", "Toys & Games"],
"listType": "bestsellers",
"domain": "com",
"maxItemsPerCategory": 60
}
| Field | Default | What it is |
|---|---|---|
categoryUrls | box starts at the US Electronics list | Amazon list links copied out of the address bar. Best Sellers, New Releases, Movers & Shakers and Most Wished For all work. Up to 50. |
categories | none | Department names as Amazon writes them in that marketplace's language, or the slug from a link like toys-and-games or books/2. Up to 50. |
listType | bestsellers | Which ranking to read for the names in categories. Also takes new-releases, movers-and-shakers and most-wished-for, the products people add to their wish lists most. Links ignore this, they already say which list they are. |
domain | com | Which of the 22 marketplaces the names in categories belong to, from co.uk and de through to co.jp, in and com.br. Links ignore this too. |
maxItemsPerCategory | box starts at 60 | Products per category, counting from rank 1. 60 is the ceiling. Lower it while you are working out what the rows look like. |
proxyUrls | none | Optional, under Advanced. Only for callers who want traffic to leave through servers they already pay for, as http://user:pass@host:port. |
You can put links in categoryUrls and names in categories in the same run. Leave the whole input empty and you get one labelled sample row and nothing else, so you can look at the shape first.
📤 What you get back
A real row from a recent run, with the image link trimmed:
{
"ok": true,
"charged": true,
"recordType": "product",
"categoryName": "Electronics",
"categoryPath": "Electronics",
"listType": "bestsellers",
"marketplace": "amazon.com",
"inputUrl": "https://www.amazon.com/gp/bestsellers/electronics/",
"rank": 1,
"asin": "B08JHCVHTY",
"title": "blink plus plan with monthly auto-renewal",
"brand": null,
"price": "$11.99",
"priceValue": 11.99,
"currency": "USD",
"rating": 4.4,
"reviewCount": 280370,
"image": "https://images-na.ssl-images-amazon.com/images/I/31YHGbJsldL._AC_UL900...",
"productUrl": "https://www.amazon.com/dp/B08JHCVHTY",
"previousRank": null,
"rankChangePercent": null,
"page": 1,
"scrapedAt": "2026-09-21T01:27:53.306Z"
}
| Field | What it is |
|---|---|
rank | The number Amazon prints on the badge, not a counter. That is why page 2 starts at 51. |
asin | Amazon's product id, and the right key for diffing one run against the next. |
brand | The byline on the card: author for a book, studio for a film. Hard goods carry no byline, so this is null for most of Electronics and Home & Kitchen. |
price / priceValue | The card text exactly as printed, and the same figure as a number with the local separators resolved, so 1 234,56 zł becomes 1234.56. |
currency | Read from the price text when it names one, otherwise from the marketplace. It always describes the price in the same row. |
rating, reviewCount | Stars out of five and the ratings count, both null when nothing has been rated yet. |
categoryPath | The ancestor chain down to the list you asked for, like Electronics > Headphones. Just the name for a top-level department. |
previousRank, rankChangePercent | Movers & Shakers fields. null on Best Sellers and New Releases, which publish no rank movement. |
page | 1 for ranks 1 to 30, 2 for ranks 51 to 80. |
🧾 Reading the output
Three kinds of row can land in your dataset.
| Row | How to spot it | Billed |
|---|---|---|
| A ranked product | ok: true and recordType: "product" | yes |
| The sample row | _sample: true and charged: false | no |
| A diagnostic | ok: false, _diagnostic: true and an errorCode | no |
The charged field tells product rows apart from sample and diagnostic rows. It is stamped when the row is built rather than after the money moves, so read it as a row-kind marker and reconcile against the charged events on the run itself if you need an exact count.
| Code | What it means |
|---|---|
NO_RESULTS | Amazon served the list page with no products on it. Most Movers & Shakers and Most Wished For categories answer this way. |
BAD_INPUT | A link that is not an Amazon list link, or a department name that matched nothing on that marketplace's menu. |
NOT_FOUND | Amazon has no such list, or answered with a different list from the one you asked for. |
BLOCKED | Amazon refused that page. Re-run it, or use the link form instead of the name. |
NETWORK | Amazon was unreachable or answered badly. |
TIME_BUDGET | The run ran out of time before it finished that category. |
CHARGE_ERROR | Written once at the end if a charge did not go through. |
PROXY_INPUT_ADJUSTED | Part of the advanced network settings you sent could not be used as given, so the run adjusted them and carried on. |
One bad category never stops the others, and a diagnostic row never fails the run.
▶️ How to run it
1. Open Amazon Bestsellers Scraper and click Try for free. 2. Paste your list links into Category URLs, replacing the example. Or clear that box and type department names into Category names or slugs instead. 3. If you are using names, set Marketplace and Which list. 4. Set Products per category. Start around 10 while you look at the rows, then raise it. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$0.26 per 1,000 products. Flat on every Apify plan, with no volume tiers.
Nothing else is metered per row. The sample row is not billed, diagnostic rows are not billed, a category Amazon returns empty produces no billed rows, and a product id repeated inside one category list is dropped before it gets that far.
💡 What people use it for
- Pulling the top 60 of a category every morning and watching which ASINs enter and leave.
- Tracking one ASIN's position across a category and its subcategories over weeks.
- Price-band research.
priceValueandcurrencycome typed, so the median price of a category is
one spreadsheet formula.
- Catching new entrants early on the New Releases list, which is the same run with one field
changed.
- Comparing the same category across marketplaces. Every row says which marketplace it came from.
🚧 What it does not do
- It cannot go past 60 per list. Amazon renders 30 per page over two pages, so ranks 31 to 50
and 81 onward do not exist on the page being read.
- Movers & Shakers and Most Wished For are usually empty. Amazon answers most categories on
both with nothing on the page, and you get an uncharged NO_RESULTS row. In September 2026 Most Wished For had products on amazon.co.jp and on no other marketplace we tried.
- No Gift Ideas list. Amazon showed it empty on every marketplace we tried.
brandis null for most hard goods, because Amazon prints no byline on those cards. Filling
it would mean opening every product page.
- Only what the ranking card shows. Descriptions, variations, seller, stock and shipping live
on the product page and are out of scope here.
- Names resolve to departments, not deep subcategories.
Headphonesis not on that menu. Use
its link, or the slug/node form.
- Prices are a snapshot. A book showing several formats gives the lowest "offers from" price,
which is not always the format sitting at that rank.
- Two runs an hour apart can disagree, and both be right. Best Sellers is recalculated hourly.
- Kindle, Audible, Apps and Digital Music cards read thinner. Some carry no price at all.
- A big run can come back short. Amazon rate-limits hard, and a page it will not serve becomes
an uncharged diagnostic rather than a half-filled list passed off as complete. Only delivered product rows are billed.
🧭 Which Amazon scraper do you need?
| If you want | Use |
|---|---|
| The ranking for a category, by link or by name | This one |
| Search results or full product pages by keyword or ASIN | Amazon Scraper |
| Reviews for a product | Amazon Reviews Scraper |
| The same idea on AliExpress | AliExpress Products Scraper |
| Wholesale suppliers and their prices | Alibaba.com Scraper |
❓ Questions people ask
Why do the ranks jump from 30 to 51? Because Amazon's own pages do. Page one shows 30 of its 50-product block and page two starts again at 51. Open a list in a browser and you will see the same gap.
Can I get more than 60 from one category? Not from this page. Run the subcategories instead. categoryPath tells you which row came from which.
What happens when a category returns nothing? One uncharged diagnostic row naming the reason, and the run carries on to the others.
Can I schedule it? Yes. Nothing is kept between runs. Diff on asin for what entered or left, and on rank for what moved.
Is this legal? These are public ranking pages with no account behind them. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the link or the department name you used and the run ID. The errorCode on the diagnostic row usually names the problem on its own.