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 successful scrapes and for PAGE_NOT_FOUND; 0 for any other 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.

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,
  "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 seller offers for a product.

Parameters

Parameter Type Required Default Description
asin string Yes Amazon product ASIN
marketplace string No us Marketplace code

Example

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

Response

{
  "success": 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
      }
    ]
  },
  "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,
  "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": { "..." : "..." }
}

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, and offers it matches the typed-endpoint payloads above. category, bestseller, storefront, and reviews return a structured payload tailored to the page.

{
  "success": 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.

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
404 PAGE_NOT_FOUND Amazon page does not exist. Counts against quota — Amazon-confirmed 404s are billable since the parser still ran.
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 INTERNAL_ERROR Internal service failure or transport error to the parser worker
502 SCRAPE_FAILED Parser reached the page but could not extract structured data
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