Appearance
Amazon Scraper API
Turn Amazon search results and product pages into structured data. Send a query, get back one normalized results page - ASIN, title, price and unit price, rating, review count, purchases last month, coupon, delivery, sponsored flag, badges - or send one ASIN and get the full product: price and list price, availability, delivery and returns, images and videos, "About this item" bullets, description, A+ text, specifications, every variation, rating histogram, seller, Best Sellers Rank and category breadcrumbs. No proxy pool, captcha handling or parser maintenance on your side.
It ships as three synchronous Scraper APIs and three no-code scrapers:
| Product | Type | Product code | What it does |
|---|---|---|---|
| Amazon Search API | Scraper API (synchronous) | amazon_search | Search a marketplace and get one page of results. |
| Amazon Product API | Scraper API (synchronous) | amazon_product | Give one ASIN or product URL, get the product detail. |
| Amazon Best Sellers API | Scraper API (synchronous) | amazon_best_sellers | Give a category, get one page of its top 100 (50 ranked products). |
| Amazon Search Scraper | No-code scraper | amazon_search | Sweep up to 20 search pages and export JSON, CSV or XML. |
| Amazon Product Scraper | No-code scraper | amazon_product | Paste up to 20 ASINs or URLs and export the products. |
| Amazon Best Sellers Scraper | No-code scraper | amazon_best_sellers | Export the whole top 100 of a category. |
Every field is snake_case, the same convention as the Web Scraping API.
Marketplaces
Pass the marketplace as domain. Prices, stock and delivery on Amazon follow the visitor's location, so each marketplace is fetched through a residential exit in its own country.
domain | Country | Currency |
|---|---|---|
amazon.com | United States | USD |
amazon.co.uk | United Kingdom | GBP |
amazon.de | Germany | EUR |
amazon.fr | France | EUR |
amazon.it | Italy | EUR |
amazon.es | Spain | EUR |
amazon.ca | Canada | CAD |
amazon.com.au | Australia | AUD |
amazon.co.jp | Japan | JPY |
amazon.in | India | INR |
domain defaults to amazon.com. Free text (titles, availability, seller names) stays in the marketplace's language; prices, ratings and counts are numbers.
Amazon Search API
GET https://api.scrapeit.io/api/v1/scrape/amazon/search
x-api-key: YOUR_SCRAPEIT_API_KEY| Parameter | Type | Example | Description |
|---|---|---|---|
q | string | wireless earbuds | Required. Search query, up to 200 characters. |
domain | string | amazon.de | Marketplace from the table above. Defaults to amazon.com. |
page | number | 2 | Results page, 1–20. Defaults to 1. |
sort | string | price_low_to_high | relevance (default), price_low_to_high, price_high_to_low, avg_customer_review, newest, best_sellers. |
department | string | electronics | Search in one department: the marketplace's search alias (electronics, stripbooks, fashion...). All by default. |
min_price | number | 10 | Lowest price to show, in the marketplace currency, up to two decimals. |
max_price | number | 50 | Highest price to show, in the marketplace currency. Amazon applies the range to its own price, so a card just outside it can appear. |
include_html | boolean | false | Also return the results page HTML in html. The full page is then fetched, which transfers more data. |
Example request
bash
curl -G 'https://api.scrapeit.io/api/v1/scrape/amazon/search' \
-H 'x-api-key: YOUR_SCRAPEIT_API_KEY' \
--data-urlencode 'q=wireless mouse' \
--data-urlencode 'domain=amazon.com' \
--data-urlencode 'department=electronics' \
--data-urlencode 'max_price=30' \
--data-urlencode 'sort=avg_customer_review'js
const response = await fetch(
'https://api.scrapeit.io/api/v1/scrape/amazon/search?' +
new URLSearchParams({ q: 'wireless mouse', domain: 'amazon.com' }),
{ headers: { 'x-api-key': 'YOUR_SCRAPEIT_API_KEY' } },
);
const { data } = await response.json();
for (const item of data.results) console.log(item.position, item.asin, item.price, item.sponsored);python
import requests
response = requests.get(
"https://api.scrapeit.io/api/v1/scrape/amazon/search",
headers={"x-api-key": "YOUR_SCRAPEIT_API_KEY"},
params={"q": "wireless mouse", "domain": "amazon.com"},
timeout=120,
)
for item in response.json()["data"]["results"]:
print(item["position"], item["asin"], item["price"], item["sponsored"])Search response
json
{
"data": {
"domain": "amazon.com",
"query": "wireless mouse",
"search_url": "https://www.amazon.com/s?k=wireless+mouse",
"total_results": 46276,
"results": [
{
"position": 1,
"asin": "B004YAVF8I",
"title": "Logitech M185 Compact Ambidextrous 2.4 GHz Wireless Mouse - Swift Grey",
"subtitle": "Ambidextrous mouse with 2.4 GHz USB-A Nano Receiver, Optical Tracking, 12-Months Battery Life",
"link": "https://www.amazon.com/dp/B004YAVF8I",
"image": "https://m.media-amazon.com/images/I/51WN5aXZWIL._AC_UY218_.jpg",
"price": 12.99,
"list_price": 17.99,
"currency": "USD",
"unit_price": null,
"coupon": null,
"rating": 4.4,
"reviews_count": 45598,
"bought_past_month": 10000,
"delivery": [
"Join Prime to get FREE delivery Tomorrow, Oct 31",
"Or Non-members get FREE delivery Wed, Nov 4 on $35 of items shipped by Amazon"
],
"availability": null,
"other_offers": { "lowest_price": 8.05, "offers_count": 10 },
"sponsored": false,
"prime": true,
"badges": ["Overall Pick", "Limited time deal"]
}
],
"pagination": {
"current_page": 1,
"total_pages": 20,
"next_page_url": "https://www.amazon.com/s?k=wireless+mouse&page=2"
}
}
}| Field | Description |
|---|---|
total_results | Number of products Amazon reports for the query; null when the page does not say. |
results[].position | 1-based position among the cards of this page, sponsored cards included. |
results[].asin | Amazon product id; pass it to the Product API. |
results[].subtitle | The key-specs line Amazon prints under the title. |
results[].link | Canonical product URL (/dp/<asin>), without tracking parameters. |
results[].price | Current price, or null when the card shows none (no offer for the marketplace's country). |
results[].list_price | Struck-through "List" / "Typical" price when the card shows a discount. |
results[].currency | ISO 4217 code of the prices. |
results[].unit_price | Per-unit price for goods sold by count, weight or volume: { "price": 0.38, "unit": "count" }. |
results[].coupon | Coupon or subscribe-and-save offer as the card words it. |
results[].rating | Average rating out of 5. |
results[].reviews_count | Number of ratings. |
results[].bought_past_month | Purchases in the past month as the lower bound the card shows: "10K+ bought in past month" is 10000. |
results[].delivery | Delivery promises as the card words them, for the marketplace's country. |
results[].availability | Stock note when the card shows one, e.g. "Only 2 left in stock - order soon." |
results[].other_offers | "More Buying Choices": the cheapest other offer and how many there are (a lower bound, "10+" is 10). |
results[].sponsored | true for a paid placement. |
results[].prime | true when the card carries the Prime badge or offers Prime delivery ("Join Prime to get FREE delivery"). |
results[].badges | Card badges, e.g. Best Seller, Overall Pick, Limited time deal. |
pagination.total_pages | Last page the pagination strip shows. null when Amazon served its scrolling layout, which has no strip. |
pagination.next_page_url | Next page as Amazon links it, or null. Walk pages with page either way. |
Amazon Product API
GET https://api.scrapeit.io/api/v1/scrape/amazon/product
x-api-key: YOUR_SCRAPEIT_API_KEY| Parameter | Type | Example | Description |
|---|---|---|---|
asin | string | B00FLYWNYQ | Ten-character product id, e.g. B08G84P8ZX. Send either asin or url. |
url | string | https://www.amazon.com/dp/B00FLYWNYQ | Product page URL on a supported marketplace, e.g. https://www.amazon.de/dp/B08G84P8ZX. Its host picks domain. |
domain | string | amazon.de | Marketplace for an asin. With a url it must match the URL's host. Defaults to amazon.com. |
include_html | boolean | false | Also return the fetched page HTML in html. Paid add-on: +4 credits per request. |
A url is never fetched as given: ScrapeIt reads the ASIN and marketplace out of it and fetches the canonical product page.
Example request
bash
curl -G 'https://api.scrapeit.io/api/v1/scrape/amazon/product' \
-H 'x-api-key: YOUR_SCRAPEIT_API_KEY' \
--data-urlencode 'asin=B004YAVF8I' \
--data-urlencode 'domain=amazon.com'js
const response = await fetch(
'https://api.scrapeit.io/api/v1/scrape/amazon/product?' +
new URLSearchParams({ asin: 'B004YAVF8I', domain: 'amazon.com' }),
{ headers: { 'x-api-key': 'YOUR_SCRAPEIT_API_KEY' } },
);
const { data } = await response.json();
console.log(data.title, data.price, data.currency, data.availability);python
import requests
response = requests.get(
"https://api.scrapeit.io/api/v1/scrape/amazon/product",
headers={"x-api-key": "YOUR_SCRAPEIT_API_KEY"},
params={"asin": "B004YAVF8I", "domain": "amazon.com"},
timeout=120,
)
product = response.json()["data"]
print(product["title"], product["price"], product["currency"], product["availability"])Product response
json
{
"data": {
"asin": "B004YAVF8I",
"parent_asin": "B0H4LB8MPT",
"domain": "amazon.com",
"url": "https://www.amazon.com/dp/B004YAVF8I",
"title": "Logitech M185 Compact Ambidextrous 2.4 GHz Wireless Mouse - Swift Grey",
"subtitle": "Ambidextrous mouse with 2.4 GHz USB-A Nano Receiver, Optical Tracking, 12-Months Battery Life",
"brand": "Logitech",
"price": 12.99,
"list_price": 17.99,
"currency": "USD",
"unit_price": null,
"rating": 4.4,
"reviews_count": 45598,
"rating_histogram": {
"five_star": 76,
"four_star": 11,
"three_star": 5,
"two_star": 1,
"one_star": 7
},
"bought_past_month": 10000,
"badges": ["Amazon's Choice"],
"availability": "In Stock",
"delivery": [
"FREE delivery Wednesday, November 4 on orders shipped by Amazon over $35",
"Or Prime members get FREE delivery Tomorrow, October 31. Join Prime"
],
"returns": "FREE 30-day refund/replacement",
"images": ["https://m.media-amazon.com/images/I/51WN5aXZWIL._AC_SL1500_.jpg"],
"videos": [
{
"title": "M185 Mouse Product Video",
"url": "https://m.media-amazon.com/images/S/vse-vms-transcoding-artifact-us-east-1-prod/8ef630e6-c916-4a8a-abbb-00c99b6794de/default.jobtemplate.hls.m3u8",
"duration_seconds": 19,
"thumbnail": "https://m.media-amazon.com/images/I/31EFHNqXpeL.SX522_.jpg"
}
],
"features": [
"Compact Mouse: With a comfortable and contoured shape, this Logitech ambidextrous wireless mouse ..."
],
"description": "Logitech Wireless Mouse M185. A simple, reliable mouse with plug-and-play wireless ...",
"aplus_content": "COMFORTABLE SHAPE, COMPACT DESIGN The comfortable, contoured shape of M185 follows ...",
"specifications": [
{ "name": "Brand", "value": "Logitech" },
{ "name": "Model Number", "value": "910-002225" },
{ "name": "Item Weight", "value": "4.8 ounces" }
],
"dimensions": "1.54\"L x 3.89\"W",
"weight": "4.8 ounces",
"variants": [
{ "asin": "B004YAVF8I", "dimension": "color", "value": "Swift Grey", "selected": true },
{ "asin": "B00P43PCI8", "dimension": "color", "value": "Black", "selected": false }
],
"variations": [
{
"asin": "B004YAVF8I",
"dimensions": { "color": "Swift Grey", "number_of_items": "1" },
"selected": true
},
{
"asin": "B0G4S2NJ31",
"dimensions": { "color": "Graphite", "number_of_items": "4" },
"selected": false
}
],
"seller": { "name": "Amazon.com", "ships_from": "Amazon.com" },
"best_sellers_rank": [{ "rank": 1, "category": "Computer Mice" }],
"categories": [
"Electronics",
"Computers & Accessories",
"Computer Accessories & Peripherals",
"Keyboards, Mice & Accessories",
"Mice"
],
"frequently_bought_together": ["B09DV56338", "B005G2YP6M"]
}
}| Field | Description |
|---|---|
asin | The ASIN the page shows - a parent ASIN lands on one of its child variants. |
parent_asin | The variation family the product belongs to; null for a product without variations. |
subtitle | The key-specs line Amazon prints under the title. |
price | Price to pay in the buy box; null when the page offers none (e.g. "Currently unavailable"). |
list_price | Struck-through "List" / "Typical" price when the page shows a discount. |
unit_price | Per-unit price for goods sold by count, weight or volume: { "price": 0.38, "unit": "count" }. |
rating_histogram | Share of the ratings per star, in percent. |
bought_past_month | Purchases in the past month as the lower bound the page shows: "10K+ bought" is 10000. |
badges | Page badges, e.g. Amazon's Choice, #1 Best Seller. |
availability | Availability text as the marketplace words it. |
delivery | Delivery promises of the buy box as the marketplace words them, for the marketplace's country. |
returns | Return policy of the buy-box offer. |
images | Product images, largest size available. |
videos | Gallery videos: title, URL (an HLS .m3u8 playlist or an MP4 file), duration in seconds and poster image. |
features | "About this item" bullet points. |
aplus_content | Text of the brand's "From the manufacturer" (A+) section. |
specifications | Every row of the product overview and details tables as { "name", "value" }, one per name. |
dimensions | Product (or, failing it, package) dimensions as the details word them. |
weight | Item (or, failing it, package) weight as the details word it. |
variants | One entry per option of each variation (dimension is e.g. color, size); selected marks the shown one. |
variations | Every child of the variation family with its value in each dimension, e.g. { "color": "Black", "size": "M" }. |
seller | Buy-box seller and the party that ships it, when the page shows them. |
best_sellers_rank | Rank and category of each Best Sellers Rank entry. |
categories | Category breadcrumbs, outermost first. |
frequently_bought_together | ASINs of the "Frequently bought together" bundle, this product excluded. |
A missing field is null or an empty list, never an error.
Amazon Best Sellers API
GET https://api.scrapeit.io/api/v1/scrape/amazon/best-sellers
x-api-key: YOUR_SCRAPEIT_API_KEY| Parameter | Type | Example | Description |
|---|---|---|---|
category | string | electronics/172541 | Category path after /gp/bestsellers/: a department, optionally with a node id - electronics, electronics/172541. Send either category or url. |
url | string | https://www.amazon.com/gp/bestsellers/electronics/281407 | A Best Sellers page URL on a supported marketplace (/gp/bestsellers/… or /…/zgbs/…). Send either category or url. |
domain | string | amazon.de | Marketplace for a category, e.g. amazon.de. Defaults to amazon.com; with a url it must match the URL's host. |
page | number | 2 | 1 (ranks 1–50, default) or 2 (ranks 51–100). |
include_html | boolean | false | Also return the fetched page HTML in html. Paid add-on: +4 credits per request. |
Example request
bash
curl -G 'https://api.scrapeit.io/api/v1/scrape/amazon/best-sellers' \
-H 'x-api-key: YOUR_SCRAPEIT_API_KEY' \
--data-urlencode 'category=electronics'Best Sellers response
json
{
"data": {
"domain": "amazon.com",
"category": "electronics",
"category_name": "Best Sellers in Electronics",
"url": "https://www.amazon.com/gp/bestsellers/electronics",
"breadcrumbs": [],
"subcategories": [
{
"name": "Accessories & Supplies",
"category": "electronics/281407",
"node_id": "281407",
"url": "https://www.amazon.com/gp/bestsellers/electronics/281407"
},
{
"name": "Camera & Photo",
"category": "electronics/502394",
"node_id": "502394",
"url": "https://www.amazon.com/gp/bestsellers/electronics/502394"
}
],
"results": [
{
"rank": 1,
"asin": "B08JHCVHTY",
"title": "blink plus plan with monthly auto-renewal",
"author": null,
"format": null,
"link": "https://www.amazon.com/dp/B08JHCVHTY",
"image": "https://images-na.ssl-images-amazon.com/images/I/31YHGbJsldL.png",
"price": 11.99,
"currency": "USD",
"offers_count": null,
"rating": 4.4,
"reviews_count": 281569
}
],
"pagination": {
"current_page": 1,
"next_page_url": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
}
}
}| Field | Description |
|---|---|
category_name | The list title as Amazon prints it. |
breadcrumbs | Parent categories, department first, as { name, category, node_id, url }; empty on a department's own list. Pass a category back as the category parameter. |
subcategories | Sub-categories of this one, in the same shape; empty on a category with none. |
results[].rank | Rank in the category, 1–100. |
results[].author, format | The author (books) or artist the card names, and the edition it ranks, e.g. Sarah J. Maas, Hardcover. |
results[].image | Full-size product image: the card's thumbnail without its size suffix. |
results[].price | The lowest price the card shows; null when it shows none. |
results[].offers_count | Set when the card shows no featured price, only "12 offers from $17.87": the number of offers price is the lowest of. |
results[].reviews_count | Ratings count shown next to the stars. |
pagination.next_page_url | The page of ranks 51–100, null on page 2. |
Amazon renders the first 30 cards of a page and loads the other 20 with a second request of its own; ScrapeIt makes that request too, free, on the same call. If it fails, those ranks still come back with rank, asin and link, and the other fields null.
No-code Amazon scrapers
Prefer a dashboard run and a file? Scrapers without code has three Amazon scrapers. Each produces JSON, CSV and XML files and is also available over HTTP with an API key (x-api-key; scope scrapers:run to start, scrapers:read to poll):
POST https://api.scrapeit.io/api/v1/scrapers/{scraper}/jobs
GET https://api.scrapeit.io/api/v1/scrapers/{scraper}/jobs/{jobId}| Scraper | {scraper} | Parameters | One record per |
|---|---|---|---|
| Amazon Search Scraper | amazon-search | q (required), domain, sort, max_pages (1–20, default 5), include_detail, output_format | search result |
| Amazon Product Scraper | amazon-product | products (required: up to 20 ASINs or product URLs), domain (for ASINs), output_format | product |
| Amazon Best Sellers Scraper | amazon-best-sellers | category or url (one required), domain, max_pages, output_format | ranked product (up to 100) |
| Parameter | Type | Example | Description |
|---|---|---|---|
q | string | wireless earbuds | Search Scraper: required search query. |
domain | string | amazon.de | Marketplace from the table above. Defaults to amazon.com; a product or Best Sellers URL names its own. |
sort | string | price_low_to_high | Search Scraper: result ordering, as in the Search API. |
products | array | ["B00FLYWNYQ"] | Product Scraper: required, up to 20 ASINs or product URLs. |
category | string | electronics/172541 | Best Sellers Scraper: category path. Send either category or url. |
url | string | https://www.amazon.com/gp/bestsellers/electronics/281407 | Best Sellers Scraper: a Best Sellers page URL. Send either category or url. |
max_pages | number | 10 | Search and Best Sellers Scrapers: pages to sweep, 1–20 (Best Sellers has two). Defaults to 5. |
include_detail | boolean | true | Search Scraper: also fetch each product page and nest it under detail (the Product API fields), billed per product like the Product API. Defaults to false. |
output_format | array | ["json", "csv"] | One or more of json, csv, xml. Defaults to ["json"]; an empty list is rejected. |
A run of five pages or items or fewer without include_detail finishes inline and the POST already answers with the result-file ids; a larger one, or any run with include_detail, answers queued, so poll the GET endpoint until status is finished (or failed). Each page - or each listed product - is billed like one call of its API, and each product page of include_detail like one Product API call; a result whose product page fails keeps its search fields with detail: null and a detail_error code, and that page costs nothing. A listed product Amazon has no page for, or blocks on every attempt, becomes a row with its url and an error code (NOT_FOUND, TARGET_BLOCKED, …) and costs nothing; the other products still run.
Errors
| Code | HTTP | Meaning |
|---|---|---|
VALIDATION_ERROR | 400 | Missing q; both or neither of asin/url (or category/url); a URL that is not an https /dp/ (or Best Sellers) page of a supported marketplace; domain contradicting url. |
NOT_FOUND | 404 | Amazon has no product page for this ASIN, or no Best Sellers list for this category, on this marketplace. |
TARGET_BLOCKED | 502 | Every proxy attempt drew Amazon's bot check (captcha, the 503 "Sorry! Something went wrong!" page). Retry later. |
See Error codes for the shared error format.
Credits and billing
Every API bills per request under its own product code (billing & credits). Every request is scraped live - never served from the shared cache - so prices and stock are current.
Price per request: 15 credits, flat for the Search and Product APIs, 30 credits, flat for the Best Sellers API (its page is a few times larger). The proxy is included: a request costs the same whichever exit served it (request cost). A no-code job pays its API's price per page or listed product.
Limits and behavior
- One search request returns one results page. Use
pageto walk further; Amazon serves at most 20 pages per query. - Amazon's own layout decides how many cards a page has and whether sponsored cards appear.
- Each request is fetched with a fresh session, so no location or session cookie carries over between requests.
Related pages
- Google SERP API - search engine results with the same request style.
- Web Scraping API - the general single-URL scraper behind these APIs.
- Billing & credits - credit prices and plans.
- Managed Amazon scraping - ScrapeIt builds, runs and monitors the scraper for you and delivers ready-to-use data.