Docs / Products

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
}
FieldTypeDescription
platformstringThe retailer: amazon, walmart, target, bestbuy. Default amazon; send it explicitly.
marketplacestringThe storefront. Default us. See Platforms & marketplaces.
idsstring[], requiredThe platform's item ids. Duplicates are fetched and charged once. On Amazon, asins is accepted instead.
tierstringThe level of detail (Tiers). Required on Amazon (pulse, lite, full); elsewhere optional, default standard.
includestring[]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"]}'
Response
{
  "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

PlatformplatformItem idTiers (credits per item)Ids per callTypical full-size call
AmazonamazonASINpulse (0.25), lite (1), full (5)10,000 at pulse, 2,000 at lite, 2,000 at fullpulse: 10–20 s for 10,000 ASINs; lite: 35–45 s for 2,000 ASINs; full: 60–90 s for 2,000 ASINs
Walmartwalmartitem idstandard (1)1003–10 s for 100 items
TargettargetTCINstandard (1)1,0005–15 s for 1,000 TCINs
Best BuybestbuySKUstandard (1)1,00010–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

HTTPCodeWhen
400MISSING_PARAMids (or Amazon's tier) is missing.
400INVALID_PARAMAn unknown platform, marketplace or tier; ids empty or over the limit; an entry that is not a valid id (param is ids[i]).
401UNAUTHORIZEDMissing or invalid API key.
402INSUFFICIENT_CREDITSYour balance cannot cover the reservation. Nothing was charged.
429CONCURRENCY_LIMIT, RATE_LIMITEDAll your slots are busy, or too many calls per second. Honour Retry-After.
501NOT_IMPLEMENTEDThe 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.