curl --request POST \
--url https://api.scrapeunblocker.com/marketplace/amazon-bestsellers \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/marketplace/amazon-bestsellers"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/marketplace/amazon-bestsellers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Scrape Amazon Best Sellers lists
Returns an Amazon ranked list for a category on any regional marketplace: Best Sellers (default), New Releases, Movers & Shakers, Most Wished For or Gift Ideas (list_type). The response carries the category (name, slug, nodeId, url, parents, subcategories - each with a url you can pass back as category) and up to max_results ranked items: rank, asin, title, url, image, price + currency, offersCount, rating, reviewsCount, and on Movers & Shakers salesRank, previousSalesRank and salesRankChangePct.
Pass category as a department slug (electronics), slug plus browse-node id (electronics/172541) or a pasted Amazon list url; leave it empty for the all-departments root (department list, no items). A list holds up to 100 items over two pages of 50, and each page fetched is billed as one request. When Amazon has no list for a category it says so, and that text is returned in message with an empty items array. An item whose card Amazon did not load (it loads ranks 31-50 of each page lazily) comes back with only rank, asin and url; itemsWithDetails counts the complete ones.
proxy_country defaults to the marketplace’s home country (amazon.com -> US) so prices are in the store’s currency.
curl --request POST \
--url https://api.scrapeunblocker.com/marketplace/amazon-bestsellers \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/marketplace/amazon-bestsellers"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/marketplace/amazon-bestsellers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your ScrapeUnblocker API key. Apply on every request.
Query Parameters
Which category: a department slug ('electronics', 'books', 'toys-and-games'), a slug plus browse-node id ('electronics/172541' = Headphones), or any Amazon Best Sellers / New Releases / Movers & Shakers / Most Wished For / Gift Ideas url (its marketplace and list type are then used). Empty = the all-departments root, which returns the department list (category.subcategories) and no items.
Which ranked list: bestsellers, new_releases, movers_and_shakers, most_wished_for, gift_ideas. Ignored when category is a list url.
Regional Amazon site. Ignored when category is a url. One of: amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.nl, amazon.se, amazon.pl, amazon.com.be, amazon.com.tr, amazon.ca, amazon.com.mx, amazon.com.br, amazon.co.jp, amazon.in, amazon.ae, amazon.sa, amazon.sg, amazon.com.au.
How many ranked items to return (1-100). Amazon lists hold up to 100 items, 50 per page; each page fetched is billed as one request. Amazon's page HTML carries full details for the first 30 of each page; the rest load while scrolling, so asking for them adds a browser render (slower, ~10-25 s).
1 <= x <= 100Exit-IP country (ISO-2). Defaults to the marketplace's home country so prices come back in the store's currency.
Response
JSON with category and a ranked items array.

