Amazon product data, 2,000 ASINs a call.
Hand us a list of ASINs and get a signed webhook when anything changes. Or call it yourself: sweep the catalogue on pulse for 0.25 credit an ASIN, then pay for the buy box, the full listing or every seller's offer only where something moved. Failed lookups are refunded; credits never expire.
- No card required
- No subscription
- Amazon US, any ASIN
Example: a cURL call to the Scrapely Amazon Product API (pulse · 10,000 ASINs · 2 refunded), answered with status 200 in 9.86s for 2500 credits, returning product JSON.
Data teams at fast-moving companies collect the web with Scrapely
- Halcyon
- kestrel/data
- ORDINAL
- Fernwood
- tidewater
- Parallax Labs
- BASALT
- quarry.io
- Meridian Grid
- saltmarsh
- Corvid
- ARCLIGHT
10,000
ASINs per pulse call
2,000 on the other tiers
2,500
ASINs per upstream request
pulse; lite and standard 800, full 200
33 B
Raw data per ASIN
on pulse; standard is ~3 KB
0.25 credit
Per ASIN on pulse
partial and unavailable are refunded
Watchlists · the easiest way in
Hand us a list. Get webhooks when anything changes.
Give us ASINs, a cadence and a webhook URL. We sweep them on pulse, re-fetch what changed on standard, run full once for new ASINs, delist dead ones, and POST you a signed event for each. No scheduler, no diffing, no queue to run.
Any cadence from 5 minutes
Every 5 minutes or once a day — up to every 7 days. We schedule, chunk and retry.
Pulse first, standard on change
Every ASIN is swept on pulse; only what moved is re-fetched on standard, plus a standard pass every 8th run to catch seller swaps.
Full once for new ASINs
Every ASIN gets one full fetch as its baseline, then joins the sweep.
Dead ASINs delisted
When Amazon says an ASIN is gone, we tell you 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 pulse, standard and full credits it spends.
curl -X POST "https://scrapely.15.204.158.166.sslip.io/v1/watchlists" \
-H "Authorization: Bearer $SCRAPELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Kitchen catalogue",
"asins": ["B0009KNLV6", "B074PVTPBW", "B08N5WRWNW"],
"every": "15m",
"webhook_url": "https://hooks.yourapp.com/scrapely"
}'// POST https://hooks.yourapp.com/scrapely
// Scrapely-Signature: t=1760623331,v1=5257a869e7…
{
"type": "watchlist.product.changed",
"data": {
"watchlist_id": "wl_7Hq2xN4p",
"watchlist_name": "Kitchen catalogue",
"run_number": 412,
"changes": [{
"asin": "B074PVTPBW",
"tier": "standard",
"changes": {
"price": { "before": 18.99, "after": 17.49 },
"merchant": { "before": { "name": "Brightwell Supply", … },
"after": { "name": "Northline Goods", … } }
},
"snapshot": { "price": 17.49, "inStock": true, "isFba": true, … }
}]
}
}product.changed
Pulse saw a change; we re-fetched it on standard. Carries each field before and after.
product.delisted
Amazon says the ASIN no longer exists. We stop sweeping it.
run.completed
A run ended: what it checked, changed and delisted, and the credits it spent.
One ladder
Pay for the detail you need
Sweep everything on pulse for 0.25 credit an ASIN, then climb only where it pays: standard for what changed, full for what is new, every offer when you need the whole field, and an offer check right before you buy.
- 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?
- 02/v1/products · standard
Standard
3credits / ASIN
Only what pulse saw change
Buy-box price, stock, seller, condition and offer listing id. What exactly moved?
- 03/v1/products · full
Full
10credits / ASIN
Once per new listing
Images, attributes, variations, list price and reviews. Enough to build the listing.
- 04/v1/offers
Offers
5credits / 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.
- 05/v1/offers/check
Offer check
1credit / offer
Right before you buy
Is this exact offer still available to buy? Buyable, not buyable or unavailable. No price, and not a stock count.
What each /v1/products tier returns
| Tier | "pulse"Pulse0.25credit / ASIN | "lite"Lite1credit / ASIN | "standard"Standard3credits / ASIN | "full"Full10credits / ASIN |
|---|---|---|---|---|
| ASINs per upstream request | 2,500 | 800 | 800 | 200 |
| Upstream time per request | — | 7–9 s | 8–10 s | 4.5–6 s |
| Raw response per ASIN | ~33 B | ~0.2 KB | ~3 KB | ~30 KB |
| Fields returned | ||||
| New-offer count & lowest new pricelowest new price = buy-box price ~92% of the time | ||||
| Buy-box price | ||||
| Availability type (IN_STOCK, OUT_OF_STOCK) | ||||
| Fulfiller name & isFba | ||||
| Availability message | ||||
| Condition (NEW, USED, PARENT_ASIN) | ||||
| Merchant id & name | ||||
| Buy-box offer listing id | ||||
| Title & description | ||||
| Used offer count & min price | ||||
| Refurbished & collectible offers | ||||
| List (basis) price | ||||
| Images, all variants | ||||
| Attributes (brand, size, weight…) | ||||
| Variation children | ||||
| Binding | ||||
| Review count & rating | ||||
| Delivery datesinclude: ["delivery"] · +3 credits / ASIN | add-on | add-on | add-on | add-on |
| Use it for | Sweeping the whole catalogue for change, as often as you like | Buy-box price and stock on every sweep | Repricing an ASIN whose price or stock moved | First scrape of a new ASIN, building a listing |
Up to 10,000 ASINs per call on pulse and 2,000 on the other tiers; Scrapely chunks them into upstream requests and de-duplicates for you. Pulse reports offers, not the buy box: its lowest new price equals the buy-box price about 92% of the time. Timings were measured against Amazon US and drift through the day; pulse timings are still being measured. Sellers other than the buy-box winner come from /v1/offers. No tier returns feature bullets.
Every requested ASIN comes back exactly once, with a status.
- okbilled
Product returned cleanly. Use it.
- partialrefunded
A sub-field errored. Re-fetch at a higher tier.
- not_foundbilled
Amazon says the ASIN does not exist. Delist it.
- unavailablerefunded
Upstream failed. Retry later; not evidence it is dead.
Call strategy
Sweep on pulse. Spend where it moved.
Most of a catalogue does not change between sweeps. Watch everything at 0.25 credit an ASIN and spend standard, full and offer credits only on the ASINs that need them.
Write back to marketplace listings from standard or full data, never from pulse alone. A watchlist runs the first two lanes for you →
Structured data
Skip the parser. Get typed JSON.
Send ASINs, get one typed record per ASIN back, in request order, with a status you can act on. Amazon is live today; Google, Walmart and eBay endpoints are next.
Live · Amazon Product API
Coming soon
- Amazon SearchSoon
- Google Search (SERP)Soon
- Google ShoppingSoon
- Walmart ProductSoon
- eBay SearchSoon
POST/v1/products
{ "tier": "pulse", "asins": ["B0009KNLV6", …] }
New-offer count and lowest new price, ~33 bytes per ASIN. The cheapest way to sweep a whole catalogue for change.
{
"asin": "B0009KNLV6",
"status": "ok",
"fetchedAt": "2026-10-15T14:02:11.482Z",
"offers": { "newCount": 14, "newMinPrice": 4.74 }
}scrapely.15.204.158.166.sslip.io/v1/products · sample values are illustrative
Pay as you go
Pay per ASIN, not per month
No recurring bill and no use-it-or-lose-it quota. Size a pack to your catalogue and sweep cadence; your balance waits for you between runs.
- Buy credits once — they never expire
- Partial and unavailable ASINs are refunded automatically
- Every product and tier runs on the same credits
- Bigger packs cost up to 63% less per credit
A month costs
$745.00
5 × Growth pack · 2.88M credits needed
- ASIN checks / month
- 7.2M
- Per 1,000 checks
- $0.10
- Starter$10
- Builder$49
- Growth$149
- Scale$399
- Volume$1,499
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.
Amazon Product API
Up to 2,000 ASINs per call as typed JSON, in three tiers. Google, Walmart and eBay endpoints are coming soon.
Signed webhooks
Results pushed to your endpoint, HMAC-signed with replay protection, retried with backoff.
Scraping API
Everything between you and the page, handled
For every page that is not an Amazon product. Scraping at scale is mostly failure handling: Scrapely does the rotating, rendering and retrying, and shows you exactly what happened on every request.
- 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=…
- 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
- 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
Your app
GET
Scrapely
route · retry
Target
any site
Authenticate
key ok · 5 of 20 slots
0 to 14 millisecondsRoute
pool: us residential
14 to 46 millisecondsAttempt 1
403 · bot wall
46 to 520 millisecondsRotate
new IP + fingerprint
520 to 566 millisecondsAttempt 2
200 · 184 KB
566 to 1062 millisecondsRender JS
headless · networkidle
1062 to 1288 millisecondsParse
autoparse → JSON
1288 to 1346 millisecondsDeliver
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 everything is on Amazon. The Scraping API fetches any other page through rotating proxies and real browsers. Toggle a parameter and watch the request — and its price — change.
curl -G "https://scrapely.15.204.158.166.sslip.io/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.
| Aspect | Scrapely | Typical scraping APIs |
|---|---|---|
| Billing | Credit packs, pay as you go | Recurring subscription tiers |
| Unused balance | Credits never expire | Resets at the end of each cycle |
| Failed requests | Always free — auto-refunded | Often counted against quota |
| Features | Every feature on every credit | Rendering & geo gated by tier |
| Concurrency | Grows with lifetime purchases | Locked to the tier you pay for |
| Getting started | 5,000 free credits, no card | 7-day trial, card up front |
| Overage | None — you only spend what you hold | Surprise overage invoices |
- 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
From the teams
Fewer pagers. Cleaner data.
What engineers say after they stop maintaining their own proxy fleets.
We replaced four proxy vendors and a fleet of headless boxes with one GET. Our nightly price crawl went from a babysat job to something nobody thinks about.
The credits model is the reason we switched. We scrape hard for two weeks around launches and barely at all otherwise — nothing resets, nothing is wasted.
Failed requests being free sounds like a footnote until you look at a retry-heavy target. Our effective cost per page dropped by a third.
Async jobs with signed webhooks let us push two million SERP lookups a day through a queue we never had to build.
Geotargeting is just country_code=de. Our localisation QA used to need a VPN rota; now it is a test suite.
Docs that are actually correct, a dashboard that shows every request, and support that answers with a curl command. Rare.
How is the Amazon Product API billed?
Per unique ASIN, by tier: 0.25 credit on pulse, 1 on lite, 3 on standard, 10 on full, plus 3 for delivery dates. /v1/offers is 5 credits an ASIN and an offer check 1 credit an offer. Watchlists are billed as the calls they run. ok and not_found are billed; partial and unavailable are refunded automatically.
Where should I start?
With a watchlist: hand us the ASINs, a cadence and a webhook URL, and we sweep them on pulse, re-fetch what changed on standard, run full once for new ASINs and send you signed events. If you would rather run the loop yourself, call pulse on every sweep and standard on what changed. Pulse reports the lowest new price, which matches the buy box about 92% of the time — so act on standard data, not pulse.
Which marketplaces and products are supported?
Amazon US, for any ASIN — not only books. Up to 10,000 ASINs per pulse call and 2,000 on the other tiers. Delivery dates are an add-on; every seller's offer comes from /v1/offers.
Why did an ASIN come back not_found or unavailable?
not_found means Amazon itself says the product does not exist: delist it, do not retry. unavailable means Amazon or the network failed us after retries and splits; it is not evidence the ASIN is dead, 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 to pulse 20,000 ASINs, or fetch a few hundred full listings. The Scraping API runs on the same credits.
Can I scrape pages that are not on Amazon?
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. Google, Walmart and eBay structured endpoints are coming soon.
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 ASINs
are on us
Create an account, copy your key, sweep your first ASINs. No card, no subscription, no expiry date on what you buy later.
POST scrapely.15.204.158.166.sslip.io/v1/products { "tier": "pulse", "asins": […] }