Endpoints
Products
POST /v1/products returns price, stock, seller and product details for a list of item ids on one platform and marketplace.
Request
POST https://api.scrapelyserp.com/v1/products
Authorization: Bearer $SCRAPELY_API_KEY
Content-Type: application/json
{
"platform": "amazon" | "walmart" | "target" | "bestbuy",
"marketplace"?: "us",
"ids": string[],
"tier"?: string
}| Field | Type | Description |
|---|---|---|
platform | string | The retailer: amazon, walmart, target, bestbuy. Default amazon; send it explicitly. |
marketplace | string | The storefront. Default us. See Platforms & marketplaces. |
ids | string[], required | The platform's item ids. Duplicates are fetched and charged once. On Amazon, asins is accepted instead. |
tier | string | The level of detail (Tiers). Required on Amazon (pulse, lite, full); elsewhere optional, default standard. |
include | string[] | Amazon only, kept for compatibility: ["delivery"] is accepted and echoed back. Delivery dates are part of lite and full. |
Example
curl -X POST "https://api.scrapelyserp.com/v1/products" \
-H "Authorization: Bearer $SCRAPELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platform":"target","ids":["83887639","54191097"]}'{
"platform": "target",
"marketplace": "us",
"tier": "standard",
"results": [
{
"id": "83887639",
"status": "ok",
"fetchedAt": "2026-10-16T21:27:22.940Z",
"title": "Nintendo Switch - OLED Model with White Joy-Con",
"url": "https://www.target.com/p/nintendo-switch-oled-model-with-white-joy-con/-/A-83887639",
"price": {
"amount": 399.99,
"currency": "USD"
},
"availability": {
"inStock": true,
"message": "In stock"
},
"target": {
"tcin": "83887639",
"regularPrice": 399.99,
"…": "…"
}
},
{
"id": "54191097",
"status": "not_found",
"fetchedAt": "2026-10-16T21:27:22.940Z"
}
],
"stats": {
"requested": 2,
"ok": 1,
"partial": 0,
"notFound": 1,
"unavailable": 0,
"elapsedMs": 1345
},
"credits": 2
}Results come back in the order you sent the ids, one per unique id. The envelope, statuses and common fields are described in Responses & statuses; what each platform adds is on its own page.
Per platform
| Platform | platform | Item id | Tiers (credits per item) | Ids per call | Typical full-size call |
|---|---|---|---|---|---|
| Amazon | amazon | ASIN | pulse (0.25), lite (1), full (5) | 10,000 at pulse, 2,000 at lite, 2,000 at full | pulse: 10–20 s for 10,000 ASINs; lite: 35–45 s for 2,000 ASINs; full: 60–90 s for 2,000 ASINs |
| Walmart | walmart | item id | standard (1) | 100 | 3–10 s for 100 items |
| Target | target | TCIN | standard (1) | 1,000 | 5–15 s for 1,000 TCINs |
| Best Buy | bestbuy | SKU | standard (1) | 1,000 | 10–15 s for 1,000 SKUs |
More ids than the limit is a 400; split the list across calls. Each call uses one concurrency slot, so for the lowest latency send several smaller calls in parallel. Allow 300 seconds client-side.
Billing
The call reserves unique ids × the tier rate up front (402 if your balance cannot cover it), then refunds every partial and unavailable item. You pay for ok and not_found. See What you pay for.
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | MISSING_PARAM | ids (or Amazon's tier) is missing. |
| 400 | INVALID_PARAM | An unknown platform, marketplace or tier; ids empty or over the limit; an entry that is not a valid id (param is ids[i]). |
| 401 | UNAUTHORIZED | Missing or invalid API key. |
| 402 | INSUFFICIENT_CREDITS | Your balance cannot cover the reservation. Nothing was charged. |
| 429 | CONCURRENCY_LIMIT, RATE_LIMITED | All your slots are busy, or too many calls per second. Honour Retry-After. |
| 501 | NOT_IMPLEMENTED | The platform or marketplace is coming soon ("coming_soon": true). Nothing was charged. |
An item we could not read is never an HTTP error: it comes back unavailable inside a 200.