Skip to content

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:

ProductTypeProduct codeWhat it does
Amazon Search APIScraper API (synchronous)amazon_searchSearch a marketplace and get one page of results.
Amazon Product APIScraper API (synchronous)amazon_productGive one ASIN or product URL, get the product detail.
Amazon Best Sellers APIScraper API (synchronous)amazon_best_sellersGive a category, get one page of its top 100 (50 ranked products).
Amazon Search ScraperNo-code scraperamazon_searchSweep up to 20 search pages and export JSON, CSV or XML.
Amazon Product ScraperNo-code scraperamazon_productPaste up to 20 ASINs or URLs and export the products.
Amazon Best Sellers ScraperNo-code scraperamazon_best_sellersExport 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.

domainCountryCurrency
amazon.comUnited StatesUSD
amazon.co.ukUnited KingdomGBP
amazon.deGermanyEUR
amazon.frFranceEUR
amazon.itItalyEUR
amazon.esSpainEUR
amazon.caCanadaCAD
amazon.com.auAustraliaAUD
amazon.co.jpJapanJPY
amazon.inIndiaINR

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
ParameterTypeExampleDescription
qstringwireless earbudsRequired. Search query, up to 200 characters.
domainstringamazon.deMarketplace from the table above. Defaults to amazon.com.
pagenumber2Results page, 1–20. Defaults to 1.
sortstringprice_low_to_highrelevance (default), price_low_to_high, price_high_to_low, avg_customer_review, newest, best_sellers.
departmentstringelectronicsSearch in one department: the marketplace's search alias (electronics, stripbooks, fashion...). All by default.
min_pricenumber10Lowest price to show, in the marketplace currency, up to two decimals.
max_pricenumber50Highest price to show, in the marketplace currency. Amazon applies the range to its own price, so a card just outside it can appear.
include_htmlbooleanfalseAlso 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"
    }
  }
}
FieldDescription
total_resultsNumber of products Amazon reports for the query; null when the page does not say.
results[].position1-based position among the cards of this page, sponsored cards included.
results[].asinAmazon product id; pass it to the Product API.
results[].subtitleThe key-specs line Amazon prints under the title.
results[].linkCanonical product URL (/dp/<asin>), without tracking parameters.
results[].priceCurrent price, or null when the card shows none (no offer for the marketplace's country).
results[].list_priceStruck-through "List" / "Typical" price when the card shows a discount.
results[].currencyISO 4217 code of the prices.
results[].unit_pricePer-unit price for goods sold by count, weight or volume: { "price": 0.38, "unit": "count" }.
results[].couponCoupon or subscribe-and-save offer as the card words it.
results[].ratingAverage rating out of 5.
results[].reviews_countNumber of ratings.
results[].bought_past_monthPurchases in the past month as the lower bound the card shows: "10K+ bought in past month" is 10000.
results[].deliveryDelivery promises as the card words them, for the marketplace's country.
results[].availabilityStock 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[].sponsoredtrue for a paid placement.
results[].primetrue when the card carries the Prime badge or offers Prime delivery ("Join Prime to get FREE delivery").
results[].badgesCard badges, e.g. Best Seller, Overall Pick, Limited time deal.
pagination.total_pagesLast page the pagination strip shows. null when Amazon served its scrolling layout, which has no strip.
pagination.next_page_urlNext 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
ParameterTypeExampleDescription
asinstringB00FLYWNYQTen-character product id, e.g. B08G84P8ZX. Send either asin or url.
urlstringhttps://www.amazon.com/dp/B00FLYWNYQProduct page URL on a supported marketplace, e.g. https://www.amazon.de/dp/B08G84P8ZX. Its host picks domain.
domainstringamazon.deMarketplace for an asin. With a url it must match the URL's host. Defaults to amazon.com.
include_htmlbooleanfalseAlso 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"]
  }
}
FieldDescription
asinThe ASIN the page shows - a parent ASIN lands on one of its child variants.
parent_asinThe variation family the product belongs to; null for a product without variations.
subtitleThe key-specs line Amazon prints under the title.
pricePrice to pay in the buy box; null when the page offers none (e.g. "Currently unavailable").
list_priceStruck-through "List" / "Typical" price when the page shows a discount.
unit_pricePer-unit price for goods sold by count, weight or volume: { "price": 0.38, "unit": "count" }.
rating_histogramShare of the ratings per star, in percent.
bought_past_monthPurchases in the past month as the lower bound the page shows: "10K+ bought" is 10000.
badgesPage badges, e.g. Amazon's Choice, #1 Best Seller.
availabilityAvailability text as the marketplace words it.
deliveryDelivery promises of the buy box as the marketplace words them, for the marketplace's country.
returnsReturn policy of the buy-box offer.
imagesProduct images, largest size available.
videosGallery videos: title, URL (an HLS .m3u8 playlist or an MP4 file), duration in seconds and poster image.
features"About this item" bullet points.
aplus_contentText of the brand's "From the manufacturer" (A+) section.
specificationsEvery row of the product overview and details tables as { "name", "value" }, one per name.
dimensionsProduct (or, failing it, package) dimensions as the details word them.
weightItem (or, failing it, package) weight as the details word it.
variantsOne entry per option of each variation (dimension is e.g. color, size); selected marks the shown one.
variationsEvery child of the variation family with its value in each dimension, e.g. { "color": "Black", "size": "M" }.
sellerBuy-box seller and the party that ships it, when the page shows them.
best_sellers_rankRank and category of each Best Sellers Rank entry.
categoriesCategory breadcrumbs, outermost first.
frequently_bought_togetherASINs 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
ParameterTypeExampleDescription
categorystringelectronics/172541Category path after /gp/bestsellers/: a department, optionally with a node id - electronics, electronics/172541. Send either category or url.
urlstringhttps://www.amazon.com/gp/bestsellers/electronics/281407A Best Sellers page URL on a supported marketplace (/gp/bestsellers/… or /…/zgbs/…). Send either category or url.
domainstringamazon.deMarketplace for a category, e.g. amazon.de. Defaults to amazon.com; with a url it must match the URL's host.
pagenumber21 (ranks 1–50, default) or 2 (ranks 51–100).
include_htmlbooleanfalseAlso 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"
    }
  }
}
FieldDescription
category_nameThe list title as Amazon prints it.
breadcrumbsParent categories, department first, as { name, category, node_id, url }; empty on a department's own list. Pass a category back as the category parameter.
subcategoriesSub-categories of this one, in the same shape; empty on a category with none.
results[].rankRank in the category, 1–100.
results[].author, formatThe author (books) or artist the card names, and the edition it ranks, e.g. Sarah J. Maas, Hardcover.
results[].imageFull-size product image: the card's thumbnail without its size suffix.
results[].priceThe lowest price the card shows; null when it shows none.
results[].offers_countSet when the card shows no featured price, only "12 offers from $17.87": the number of offers price is the lowest of.
results[].reviews_countRatings count shown next to the stars.
pagination.next_page_urlThe 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}ParametersOne record per
Amazon Search Scraperamazon-searchq (required), domain, sort, max_pages (1–20, default 5), include_detail, output_formatsearch result
Amazon Product Scraperamazon-productproducts (required: up to 20 ASINs or product URLs), domain (for ASINs), output_formatproduct
Amazon Best Sellers Scraperamazon-best-sellerscategory or url (one required), domain, max_pages, output_formatranked product (up to 100)
ParameterTypeExampleDescription
qstringwireless earbudsSearch Scraper: required search query.
domainstringamazon.deMarketplace from the table above. Defaults to amazon.com; a product or Best Sellers URL names its own.
sortstringprice_low_to_highSearch Scraper: result ordering, as in the Search API.
productsarray["B00FLYWNYQ"]Product Scraper: required, up to 20 ASINs or product URLs.
categorystringelectronics/172541Best Sellers Scraper: category path. Send either category or url.
urlstringhttps://www.amazon.com/gp/bestsellers/electronics/281407Best Sellers Scraper: a Best Sellers page URL. Send either category or url.
max_pagesnumber10Search and Best Sellers Scrapers: pages to sweep, 1–20 (Best Sellers has two). Defaults to 5.
include_detailbooleantrueSearch 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_formatarray["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 ​

CodeHTTPMeaning
VALIDATION_ERROR400Missing 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_FOUND404Amazon has no product page for this ASIN, or no Best Sellers list for this category, on this marketplace.
TARGET_BLOCKED502Every 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 page to 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.

ScrapeIt Web Scraping API documentation. Managed web scraping services: www.scrapeit.io.