ASINSpotlight

Scraping API Documentation

Complete API reference for the ASINSpotlight Amazon Scraping API

Base URL

https://api.asinspotlight.com/v1

Authentication

All requests require an API key passed in the x-api-key header:

curl -H "x-api-key: YOUR_API_KEY" "https://api.asinspotlight.com/v1/product?asin=B0B3ZD8QXJ"
Header Required Description
x-api-key Yes Your API key

Response Metadata

Every successful response carries a meta object with per-request metadata. The meta.usage block lets you drive quota-aware loops without polling a separate endpoint:

"meta": {
  "marketplace": "us",
  "timing_ms": 1842,
  "request_url": "https://www.amazon.com/dp/B0B3ZD8QXJ",
  "timestamp": "2026-05-03T10:14:22.318Z",
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "usage": { "requests_consumed": 1, "requests_remaining": 49999 }
}

requests_consumed is 1 for any successful scrape (HTTP 200) — including not-found results where found is false, since the page was still fetched and parsed; 0 for any failure. meta.usage is also included on 429 rate-limit and quota-exceeded errors so you can read remaining credits even when a request is rejected.

Found vs. Not Found

Status codes reflect our service health, not what's on Amazon. Every successful response carries a top-level found boolean:

  • found: true — the entity was found; data holds the payload.
  • found: false — the scrape succeeded but the entity isn't on Amazon (invalid ASIN/seller, removed listing). data is null, the HTTP status is still 200, and the request still counts as one credit.

Branch on found, not on the HTTP status, to tell "found" from "not found". Reserve 4xx for your request errors and 5xx for our failures.

Endpoints

GET /v1/product

Retrieve product details by ASIN.

Parameters

Parameter Type Required Default Description
asin string Yes Amazon product ASIN (10-character pattern ^[A-Z0-9]{10}$)
marketplace string No us Marketplace code (see below)

Example

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/product?asin=B0B3ZD8QXJ&marketplace=us"

Response

{
  "success": true,
  "found": true,
  "page_type": "product",
  "data": {
    "asin": "B0B3ZD8QXJ",
    "title": "Product Title",
    "buybox": true,
    "bb_price": 29.99,
    "rating": 4.5,
    "reviews": 1234,
    "bsr": 5678,
    "in_stock": true,
    "is_prime": true,
    "brand": { "name": "BrandName", "url": "/stores/BrandName" },
    "category": { "name": "Electronics", "url": "/b?node=123" },
    "image_url": "https://m.media-amazon.com/images/I/...",
    "sellers_all": 5,
    "bought_past_month": 1000
  },
  "meta": {
    "marketplace": "us",
    "timing_ms": 2340,
    "request_url": "https://www.amazon.com/dp/B0B3ZD8QXJ",
    "timestamp": "2026-04-03T12:00:00.000Z",
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "usage": { "requests_consumed": 1, "requests_remaining": 49999 }
  }
}

bought_past_month is coerced from Amazon's Xk+ bought in past month label to an integer (e.g. 2K+2000).


GET /v1/offers

Retrieve every seller offer for a product — the full Buy Box panel and All Offers Display — with each offer's condition, price, shipping, fulfillment method, seller rating, and stock.

Parameters

Parameter Type Required Default Description
asin string Yes Amazon product ASIN
marketplace string No us Marketplace code
condition string No all Filter offers by condition (see below)

Filtering by condition

By default (condition=all) offers of every condition are returned. Pass condition to narrow the result to a single condition or used tier:

Value Returns
all All conditions (default)
new New offers only
used Any used tier (Like New / Very Good / Good / Acceptable)
used_like_new Used – Like New only
used_very_good Used – Very Good only
used_good Used – Good only
used_acceptable Used – Acceptable only
collectible Collectible offers only

The filter is applied to each offer's resolved condition, so the response contains only offers of the requested condition, and fba_count / fbm_count / sold_by_amazon reflect the filtered set. Each request counts as one credit regardless of the filter.

Example

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/offers?asin=B0B3ZD8QXJ&marketplace=us"

Example (used offers only)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/offers?asin=B0B3ZD8QXJ&marketplace=us&condition=used"

Response

Each entry in product_sellers_info carries a normalized condition (new, used_like_new, used_very_good, used_good, used_acceptable, or collectible) and the verbatim condition_text heading Amazon shows for that offer. condition is null when Amazon's heading is absent or not recognized (e.g. Renewed/Refurbished, or some non-English wordings) — the raw label is still available in condition_text. seller_id is null for offers sold directly by Amazon.

{
  "success": true,
  "found": true,
  "page_type": "offers",
  "data": {
    "sold_by_amazon": true,
    "fba_count": 3,
    "fbm_count": 2,
    "product_sellers_info": [
      {
        "name": "Amazon.com",
        "price": 29.99,
        "shipping_price": 0,
        "is_fba": true,
        "is_amazon": true,
        "stock_qty": 100,
        "rating_percent": 95,
        "reviews_count": 50000,
        "condition": "new",
        "condition_text": "New",
        "seller_id": null,
        "domain": "com",
        "is_just_launched": false
      },
      {
        "name": "ThriftBooks",
        "price": 18.50,
        "shipping_price": 3.99,
        "is_fba": false,
        "is_amazon": false,
        "stock_qty": 5,
        "rating_percent": 97,
        "reviews_count": 4200,
        "condition": "used_like_new",
        "condition_text": "Used - Like New",
        "seller_id": "A3XYZ123456",
        "domain": "com",
        "is_just_launched": false
      }
    ]
  },
  "meta": { "..." : "..." }
}

GET /v1/search

Search products by keyword.

Parameters

Parameter Type Required Default Description
keyword string Yes Search keyword. URL-encode multi-word queries (e.g. wireless+headphones)
marketplace string No us Marketplace code
page integer No 1 Page number to retrieve (1-based). Amazon caps search results at ~7 pages

Pagination

Pass page=N to fetch deeper pages of the same query. The response's data.current_page and data.last_page_number tell you where you are and how many pages Amazon exposes for that query. Each paginated request counts as one credit.

Example

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/search?keyword=wireless+headphones&marketplace=us"

Example (page 2)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/search?keyword=wireless+headphones&marketplace=us&page=2"

Response

{
  "success": true,
  "found": true,
  "page_type": "search",
  "data": {
    "title": "wireless headphones",
    "current_page": 1,
    "last_page_number": 20,
    "total_results_count": 10000,
    "shallow_parts": [
      {
        "asin": "B0CQXMXJC5",
        "title": "Soundcore Q20i Headphones",
        "price": 39.99,
        "rating": 4.6,
        "reviews": 58800,
        "bought_past_month": 20000,
        "in_stock": true,
        "image_url": "https://m.media-amazon.com/images/I/..."
      }
    ]
  },
  "meta": { "..." : "..." }
}

GET /v1/seller

Retrieve a seller storefront profile by seller ID.

Parameters

Parameter Type Required Default Description
sellerId string Yes Amazon seller (merchant) ID — the A… token from a storefront URL (/sp?seller=<sellerId>)
marketplace string No us Marketplace code

Example

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/seller?sellerId=A1PXYTJNWCR133&marketplace=us"

Response

Returns the seller name, feedback rating and positive-feedback percentage over the last 12 months, total rating count, the storefront link, and the Detailed Seller Information block (legal business name and address) when Amazon publishes it. An invalid seller ID returns 200 with found: false and data: null.

{
  "success": true,
  "found": true,
  "page_type": "seller",
  "data": {
    "seller_id": "A1PXYTJNWCR133",
    "name": "Lovinio",
    "storefront_url": "/s?ie=UTF8&marketplaceID=ATVPDKIKX0DER&me=A1PXYTJNWCR133",
    "rating": 3.4,
    "positive_percent": 59,
    "ratings_count": 217,
    "business_name": "Lovinio Inc",
    "business_address": ["4652 Eagle Falls Pl", "Tampa", "FL", "33619", "US"]
  },
  "meta": { "..." : "..." }
}

POST /v1/scrape

Scrape any Amazon URL. The page type is auto-detected.

Body (JSON)

Field Type Required Default Description
url string Yes Full Amazon URL
marketplace string No us Marketplace code

Example

curl -X POST -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.amazon.com/s?k=laptop+stand", "marketplace": "us"}' \
  "https://api.asinspotlight.com/v1/scrape"

Response

The data shape matches the detected page_type. For product, search, offers, and seller it matches the typed-endpoint payloads above. category, bestseller, storefront, and reviews return a structured payload tailored to the page. A not-found page returns found: false and data: null.

{
  "success": true,
  "found": true,
  "page_type": "search",
  "data": { "...": "..." },
  "meta": { "...": "..." }
}

Supported Marketplaces

Code Country Domain
us United States amazon.com
uk United Kingdom amazon.co.uk
de Germany amazon.de
fr France amazon.fr
it Italy amazon.it
es Spain amazon.es
ca Canada amazon.ca
au Australia amazon.com.au
jp Japan amazon.co.jp
in India amazon.in
mx Mexico amazon.com.mx
br Brazil amazon.com.br
tr Turkey amazon.com.tr
sa Saudi Arabia amazon.sa
ae UAE amazon.ae
sg Singapore amazon.sg
nl Netherlands amazon.nl
pl Poland amazon.pl
se Sweden amazon.se
be Belgium amazon.com.be

Error Responses

All errors follow a consistent format:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable description"
  }
}

429 rate-limit and quota responses also include a top-level meta.usage block so you can read remaining credits even when the request is rejected.

A missing entity (invalid ASIN/seller, removed listing) is not an error — it returns 200 with found: false and data: null, and counts as one credit. See Found vs. Not Found.

HTTP Status Code Description
400 validation Missing required parameter, invalid marketplace code, or unrecognized field. Returned by the framework's validation pipe; payload shape may differ from the standard error envelope.
401 MISSING_API_KEY No x-api-key header provided
401 INVALID_API_KEY API key is not valid
429 RATE_LIMIT_EXCEEDED Too many parallel in-flight requests for your API key
429 MONTHLY_QUOTA_EXCEEDED No active API request credits available
500 SCRAPE_FAILED Parser reached the page but could not extract structured data
500 INTERNAL_ERROR Internal service failure or transport error to the parser worker
503 CAPTCHA_DETECTED Amazon returned a captcha page. Retry after a short delay
503 API_USAGE_UNAVAILABLE Usage tracking is temporarily unavailable. Retry after a short delay