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 |