Skip to content
NewWatchlists on every live retailer

Product, price and stock data from the retailers you sell on.

One API for Amazon, Walmart, Target and Best Buy: send a platform and its item ids, get one response shape back, and pay per item. Hand us a watchlist and get a signed webhook when a price or stock level moves. Failed lookups are refunded; credits never expire.

  • No card required
  • No subscription
  • Live in US

Example: a POST /v1/products call for Amazon (Amazon US · 3 ASINs), answered with status 200 in 1.20s for 3 credits, returning product JSON.

What every account gets, from the first call

4

Retailers live

Amazon, Walmart, Target and Best Buy · 3 more coming

4

Live marketplaces

25 more announced

10,000

Items per call

Amazon; 100–1,000 on the others

0.25 credit

Per item, from

Amazon's cheapest tier; 1 credit elsewhere · failures refunded

Platforms

Every retailer you sell on, one endpoint

Name the platform and marketplace, send its item ids, get the same response back. Live retailers are ready today; Google, eBay and AliExpress are on the way.

All platforms

One response shape

Different retailer. Same JSON.

Every platform answers with the same envelope and the same core fields: id, status, title, price with its currency, availability, and seller and fulfilment where the retailer publishes them. Write the parser once.

POST /v1/products · "platform": "amazon"
{
  "platform": "amazon",
  "marketplace": "us",
  "results": [
    {
      "id": "B0009KNLV6",
      "status": "ok",
      "fetchedAt": "2026-10-16T14:02:11.482Z",
      "title": "Stainless steel pour-over kettle, 1 L",
      "price": {
        "amount": 34.99,
        "currency": "USD"
      },
      "availability": {
        "inStock": true,
        "message": "In stock"
      },
      "seller": {
        "name": "Northline Goods"
      },
      "fulfillment": {
        "byPlatform": true,
        "name": "Amazon"
      }
      // + Amazon's own fields
    }
  ],
  "stats": { … }, "credits": 1
}
POST /v1/products · "platform": "walmart"
{
  "platform": "walmart",
  "marketplace": "us",
  "results": [
    {
      "id": "5129928603",
      "status": "ok",
      "fetchedAt": "2026-10-16T14:02:11.482Z",
      "title": "Stainless steel pour-over kettle, 1 L",
      "price": {
        "amount": 34.99,
        "currency": "USD"
      },
      "availability": {
        "inStock": true,
        "message": "In stock"
      },
      "seller": {
        "name": "Northline Goods"
      },
      "fulfillment": {
        "byPlatform": true,
        "name": "Walmart"
      }
      // + Walmart's own fields
    }
  ],
  "stats": { … }, "credits": 1
}

Trimmed to the shared fields; values are illustrative. Each result keeps what only its retailer has on top (Amazon also keeps its historical fields, such as asin and buybox). Statuses mean the same everywhere: ok and not_found are billed, partial and unavailable are refunded.

Watchlists

Track prices across retailers. Get webhooks on change.

Give us item ids, a platform, a cadence and a webhook URL. We check them on schedule, diff every tracked field, delist dead items and POST you a signed event for each change — the same event on every retailer. No scheduler, no diffing, no queue to run.

How watchlists work
  • Any live retailer

    One watchlist per platform and marketplace, all on the same API, the same events and the same balance.

  • Any cadence from 5 minutes

    Every 5 minutes or once a day — up to every 7 days. We schedule, batch and retry.

  • Cheap sweep, detail on change

    Each run checks every item at the platform’s sweep tier and re-fetches only what moved. One-tier platforms are simply fetched and diffed.

  • Dead items delisted

    When the retailer says an item is gone, we tell you once and stop paying for it.

  • Signed webhooks

    Every event carries an HMAC signature you verify with your webhook secret. Or pull changes any time.

  • Billed as the calls it runs

    No watchlist fee. You pay the per-item credits each run spends, and every run shows them.

1 · create it once (Walmart)
curl -X POST "https://api.scrapelyserp.com/v1/watchlists"   -H "Authorization: Bearer $SCRAPELY_API_KEY"   -H "Content-Type: application/json"   -d '{
    "name": "Kitchen catalogue",
    "platform": "walmart",
    "marketplace": "us",
    "ids": ["5129928603", "5129936522", "5129944441"],
    "every": "15m",
    "webhook_url": "https://hooks.yourapp.com/scrapely"
  }'
2 · we POST this when something moves
// POST https://hooks.yourapp.com/scrapely
// Scrapely-Signature: t=1760623331,v1=5257a869e7…
{
  "type": "watchlist.product.changed",
  "data": {
    "watchlist_name": "Kitchen catalogue",
    "platform": "walmart", "marketplace": "us", "currency": "USD",
    "changes": [{
      "id": "5129936522",
      "tier": "standard",
      "changes": {
        "price": { "before": 24.99, "after": 21.49 },
        "inStock": { "before": false, "after": true }
      },
      "snapshot": { "price": 21.49, "inStock": true, … }
    }]
  }
}

Deepest on Amazon

Sweep wide on pulse. Climb where it moved.

On Amazon, pick the detail you pay for: a pulse sweep of up to 10,000 ASINs a call for 0.25 credit each, then lite or full only for what changed or is new. Pulse reports the lowest new price, which matches the buy box about 92% of the time — act on lite data, not pulse.

Everything Amazon returns
  1. 01/v1/products · pulse

    Pulse

    0.25credit / ASIN

    Every sweep, every ASIN

    New-offer count and lowest new price, up to 10,000 ASINs a call. Did anything move?

  2. 02/v1/products · lite

    Lite

    1credit / ASIN

    Only what pulse saw change

    Title, brand, buy-box price and list price, stock, seller, FBA, rating and delivery dates. What exactly moved?

  3. 03/v1/products · full

    Full

    5credits / ASIN

    Once per new listing

    Lite plus description, images, attributes and other editions. Enough to build the listing.

  4. 04/v1/offers

    Offers

    3credits / ASIN

    When you need the whole field

    Every offer on the listing: seller and rating, price plus shipping, FBA, and which one holds the buy box. 1 credit when the listing has a single offer.

  • 3 tiers, one call shape

    Pulse 0.25 · Lite 1 · Full 5 credits per ASIN.

  • Every offer on a listing

    /v1/offers: each seller, price plus shipping, FBA and the buy-box flag. 3 credits an ASIN, 1 credit when the listing has a single offer.

  • Delivery dates included

    Lite and full carry the delivery promise under the buy box (standard and fastest, cost, order-by time, Prime) at no extra cost.

  • US live, 14 regions next

    Announced: UK, Germany, France, Italy, Spain, Canada, Mexico, Japan, Australia, India, Brazil, Netherlands, Sweden, Poland.

Pay as you go

Pay per item, not per month

No recurring bill and no use-it-or-lose-it quota. Size a pack to your catalogue and refresh cadence on any retailer; your balance waits for you between runs.

  • Buy credits once — they never expire
  • Partial and unavailable items are refunded automatically
  • Every retailer, tier and product runs on the same credits
  • Bigger packs cost up to 63% less per credit
Compare every pack
Retailer
10,000
10010K1M
Refresh cadence
pulse sweep · lite on 5% changed

Pulse reports the lowest new price, which matches the buy box about 92% of the time; changes are confirmed on lite.

A month costs

$596.00

4 × Growth pack · 2.16M credits needed

Item checks / month
7.2M
Per 1,000 checks
$0.07
  1. Starter$10
  2. Builder$49
  3. Growth$149
  4. Scale$399
  5. Volume$1,499
Mix retailers, tiers and cadences

Platform

The whole scraping stack, one parameter at a time

Every feature is available on every credit. Turn things on per request; pay only for what that request used.

Rotating proxy pools

Datacenter, residential and mobile IPs across 64 countries. The router learns which pool works for each site and rotates on every block — you never manage a list.

JavaScript rendering

render=true loads the page in a real headless browser and waits for the network to settle.

CAPTCHA & bot walls

Challenges are detected and cleared automatically. Hard targets go to the ultra-premium pipeline.

Geotargeting

See the page a shopper in Munich or Osaka sees. One parameter, residential IPs in-country, localised currency and results.

Async jobs & batches

Queue 10,000 URLs in one call. We schedule against your concurrency and retry what fails.

Retail product data

Item ids in, one typed record per item out, in the same shape on every retailer: price, stock, seller and a status you can act on.

Signed webhooks

Results pushed to your endpoint, HMAC-signed with replay protection, retried with backoff.

Scraping API · anything else

Everything between you and the page, handled

For every site that is not on the platform list. Scraping at scale is mostly failure handling: Scrapely does the rotating, rendering and retrying, and shows you exactly what happened on every request.

  1. 01

    Send a URL

    One GET with your key and the page you want. Add render, premium or country_code only when a target needs them.

    GET /v1/scrape?url=…

  2. 02

    We get through

    The router picks a proxy pool that is working for that site right now, fingerprints a real browser, retries blocks on fresh IPs and validates what comes back.

    rotate · render · retry

  3. 03

    You get clean data

    HTML, Markdown, text or parsed JSON in the response. Only successful responses spend credits — the rest are refunded automatically.

    200 OK · 10 credits

Request trace · req_8KQ2v7mXcN200 OK

Your app

GET

Scrapely

route · retry

Target

any site

0 ms1384 ms
  • Authenticate

    key ok · 5 of 20 slots

    0 to 14 milliseconds
  • Route

    pool: us residential

    14 to 46 milliseconds
  • Attempt 1

    403 · bot wall

    46 to 520 milliseconds
  • Rotate

    new IP + fingerprint

    520 to 566 milliseconds
  • Attempt 2

    200 · 184 KB

    566 to 1062 milliseconds
  • Render JS

    headless · networkidle

    1062 to 1288 milliseconds
  • Parse

    autoparse → JSON

    1288 to 1346 milliseconds
  • Deliver

    gzip · 9.2 KB

    1346 to 1384 milliseconds

Total

1.38 s

Billed

10 credits

Attempt 1

free

For developers

Integrate in the time it takes to read this

Not every site is on the platform list. The Scraping API fetches any other page through rotating proxies and real browsers. Toggle a parameter and watch the request — and its price — change.

Full API reference
output_format
Cost per successful request1 credit
curl -G "https://api.scrapelyserp.com/v1/scrape" \
  --data-urlencode "api_key=$SCRAPELY_API_KEY" \
  --data-urlencode "url=https://shop.example.com/p/aeron-chair"

Why credits

Built for how scraping actually happens

Crawls are bursty. Targets fail. Pricing should not punish either. Here is how Scrapely compares with the typical scraping API.

Billing
Scrapely: Credit packs, pay as you go
Typical APIs: Recurring subscription tiers
Unused balance
Scrapely: Credits never expire
Typical APIs: Resets at the end of each cycle
Failed requests
Scrapely: Always free — auto-refunded
Typical APIs: Often counted against quota
Features
Scrapely: Every feature on every credit
Typical APIs: Rendering & geo gated by tier
Concurrency
Scrapely: Grows with lifetime purchases
Typical APIs: Locked to the tier you pay for
Getting started
Scrapely: 5,000 free credits, no card
Typical APIs: 7-day trial, card up front
Overage
Scrapely: None — you only spend what you hold
Typical APIs: Surprise overage invoices

Built for

The jobs product data is for

Five workloads the API is designed around, and the part of it each one runs on.

  • Repricing

    Sweep your competitors' prices on a schedule and react only to what moved. A watchlist diffs every run and posts a signed event per change.

    Runs onwatchlists · /v1/products

  • Arbitrage sourcing

    Check the same products across retailers in one response shape, so price gaps line up field for field instead of parser by parser.

    Runs on/v1/products on every live retailer

  • MAP monitoring

    Watch the listings that carry your products. Every price change arrives as a signed event, so a drop below your floor is caught on the next run, not the next audit.

    Runs onwatchlists · signed webhooks

  • Catalog enrichment

    Fill in titles, images, prices, sellers and stock for item ids you already hold, on the tier that returns the fields you need and no more.

    Runs on/v1/products tiers

  • Stock alerts

    Know when an item goes out of stock, comes back, or is gone for good. Delisted items are reported once and then no longer billed.

    Runs onwatchlists · delist events

FAQ

Questions, answered

Something else? Email — a developer will answer, usually within the hour.

Which retailers and regions can I use today?

Amazon (US), Walmart (US), Target (US) and Best Buy (US), all through POST /v1/products with "platform" and "marketplace" in the body. Announced next: Amazon UK, DE, FR, IT, ES, CA, MX, JP, AU, IN, BR, NL, SE and PL and Best Buy CA. Google, eBay and AliExpress are coming soon. Anything else goes through the Scraping API.

How do credits work per platform?

Per unique item that comes back ok or not_found, at the platform's rate — Amazon: 0.25 on pulse, 1 on lite, 5 on full; Walmart: 1 credit per item id; Target: 1 credit per TCIN; Best Buy: 1 credit per SKU. partial and unavailable items are refunded automatically, and one call is rounded up once, not per item. Every platform spends the same credits from the same balance. On Amazon, pulse reports the lowest new price, which matches the buy box about 92% of the time: re-fetch what moved on lite before you act on it.

Is the response really the same everywhere?

Yes. Every platform answers with the same envelope — platform, marketplace, results, stats, credits — and every result carries the same core fields: id, status, title, price with its currency, availability, and seller and fulfilment where the retailer publishes them. What only one retailer has sits under a field named after it, so your parser handles every platform with one code path.

Can watchlists track more than one retailer?

Yes. A watchlist follows items on one platform and marketplace; create one per catalogue on Amazon, Walmart, Target or Best Buy, each with its own cadence and webhook. Every change arrives as a signed event in the same format.

Why did an item come back not_found or unavailable?

not_found means the retailer itself says the product does not exist: delist it, do not retry. unavailable means we could not get an answer for that item this time; it is not evidence the item is gone, it is free, and you should retry it later.

Is there a subscription or a minimum commitment?

Neither. Scrapely is pay-as-you-go. There is no recurring charge, no seat fee and no tier that locks features. Optional auto top-up refills your balance when it runs low — and you can switch it off at any time.

What do I get for free?

5,000 credits when you create an account, no card required — enough for 5,000 ASINs on Amazon, or a mix across retailers. The Scraping API runs on the same credits.

Can I scrape sites that are not on the list?

Yes. The Scraping API fetches any URL with rotating proxies, headless rendering and CAPTCHA handling, from 1 credit a page, and accepts the familiar api_key, url, render and country_code parameters. Tell us which retailer you want next — requests decide what ships first.

Is web scraping legal?

Collecting publicly available data is lawful in many jurisdictions, but it depends on what you collect and how you use it. Our acceptable use policy forbids scraping behind logins without authorisation, personal data misuse and abusive request rates. Ask your counsel about your specific case.

Your first 5,000 credits are on us

Create an account, copy your key, fetch your first products from any live retailer. No card, no subscription, no expiry date on what you buy later.

POST api.scrapelyserp.com/v1/products { "platform", "marketplace", "ids": […] }