Amazon API endpoint
Search Amazon products
Returns normalized Amazon search result cards for `amazon.com`.
GETapiKey3 credits/requestamazon.searchResponseDoc
/amazon/searchParameters
| Name | In | Type | Required | Enum | Example | Description |
|---|---|---|---|---|---|---|
| k | query | string | Yes | apple watch | Search keyword | |
| s | query | string | No | review-rank | Sort order | |
| page | query | integer | No | 1 | 1-based page number | |
| x-api-key | header | string | Yes | API key required |
Authentication
Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.
Billing
Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.
- Credit cost
- 3 credits/request
- Charged response
- Successful 2xx responses
| Plan | Price | Included credits | Daily cap | Rate limit | Overage |
|---|---|---|---|---|---|
| Free | $0/mo | 2,000 | 500 daily credits | 5/min | No overage |
| Starter | $9/mo | 20,000 | 5,000 daily credits | 15/min | $0.75/1,000 overage credits when enabled |
| Growth | $29/mo | 100,000 | 25,000 daily credits | 45/min | $0.45/1,000 overage credits when enabled |
| Pro | $79/mo | 400,000 | No daily cap | 120/min | $0.30/1,000 overage credits |
| Business | $199/mo | 1,200,000 | No daily cap | 300/min | $0.20/1,000 overage credits |
| Enterprise | $499/mo | 5,000,000 | No daily cap | 1,000/min | $0.12/1,000 overage credits |
Failure responses
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 502 | Bad Gateway | #/definitions/app.Response |
Example response
{
"code": 200,
"msg": "OK",
"data": [
{
"asin": "142325113X",
"title": "ChatGPT Uses & Prompts: a QuickStudy Laminated Reference Guide",
"is_sponsored": false,
"link": "https://www.amazon.com/ChatGPT-Uses-Prompts-QuickStudy-Laminated/dp/142325113X/",
"image": "https://m.media-amazon.com/images/I/71qzQ91Qe0L._AC_UL320_.jpg",
"rating": 4.4,
"review_count": 223,
"price": 8.34,
"list_price": 8.95,
"number_of_bought_in_last_month": 0,
"is_free_delivery": false,
"more_choice": "https://www.amazon.com/gp/offer-listing/142325113X/"
}
]
}Request schema
No body schema
Response schema
#/definitions/amazon.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | array | No | ||||
| data[].asin | string | No | B0DGJ736JM | |||
| data[].image | string | No | https://m.media-amazon.com/images/I/61eE8SSyPWL._AC_UY545_FMwebp_QL65_.jpg | |||
| data[].is_free_delivery | boolean | No | true | |||
| data[].is_sponsored | boolean | No | true | |||
| data[].link | string | No | https://www.amazon.com/Apple-Smartwatch-Midnight-Aluminium-Detection/dp/B0DGJ736JM/ | |||
| data[].list_price | number | No | 249 | |||
| data[].more_choice | string | No | https://www.amazon.com/gp/offer-listing/B08KYJPTB6/ | |||
| data[].number_of_bought_in_last_month | integer | No | 1000 | |||
| data[].price | number | No | 189 | |||
| data[].rating | number | No | 4.4 | |||
| data[].review_count | integer | No | 1055 | |||
| data[].title | string | No | Watch SE (2nd Gen) [GPS 40mm] Smartwatch with Midnight Aluminium Case with Midnight Sport Band S/M. Fitness and Sleep Trackers, Crash Detection, Heart Rate Monitor, Retina Display | |||
| msg | string | No | OK |
Example request
curl -X GET "https://api.crawlora.net/api/v1/amazon/search?k=apple+watch&s=review-rank&page=1" -H "x-api-key: <api-key>"
TypeScript fetch
const url = new URL("https://api.crawlora.net/api/v1/amazon/search");
url.searchParams.set("k", "apple watch");
url.searchParams.set("s", "review-rank");
url.searchParams.set("page", "1");
const headers = new Headers();
headers.set("x-api-key", "<api-key>");
const response = await fetch(url, {
method: "GET",
headers,
});
const payload = await response.json();