Billing policy
Exactly which response types cost credits. Simple rule - only successful (2xx) responses are billed.
Billing policy
Only successful (HTTP 2xx) requests cost credits. Everything else is free.
The rule set
| Outcome | Bill? |
|---|---|
| Auth failure (401) | ❌ Free |
| Bad params (400) | ❌ Free |
| Rate limit from us (429) | ❌ Free |
Roadmap param (501 render_js/screenshot) | ❌ Free |
| Amazon timeout or network failure | ❌ Free |
| Amazon 503 / challenge page detected | ❌ Free |
| Amazon 302 to login or 404 | ❌ Free |
Amazon served something, extractor found nothing (502 extraction_failed) | ❌ Free |
ASIN mismatch - requested B1, got B2 (502 asin_mismatch) | ❌ Free |
| Partial product (title + buybox present, some optional fields missing) | ✅ Billed |
| Full product | ✅ Billed |
Why so generous?
Because you shouldn’t pay for our failures. When Amazon blocks a request, we absorb the infrastructure cost and return a clean error to you. You get what you paid for or you pay nothing.
Our current success rate is ~97 %, and the cost of the failed 3 % is a rounding error on our margins. The simpler rule - “only 2xx costs credits” - is worth more to us in customer trust than the pennies we’d save by billing borderline cases.
Credit cost per request
A basic Amazon product or search request costs 5 credits. When JS-rendered calls ship, those will cost 15 credits each. The credit unit is just the internal accounting unit - customer-facing pricing is still $0.90 per 1,000 basic requests on PAYG, and cheaper on subscriptions.
The one edge case worth flagging
If a product returns valid fields but some optional ones are missing (e.g. price: null for a book with multiple format editions, variations: [] for a single-variant product), you’re billed. The response IS the product - nothing is missing because the extractor failed; it’s missing because Amazon didn’t publish it. A successful 2xx with real data costs 5 credits.
Retries
Our orchestrator handles retries internally - you send one request, we do the work of getting it through. You’re billed at most once per request, only if the final result is a successful 2xx. The number of internal attempts used is surfaced in the Asa-Attempts response header for your own debugging.
Batch billing
Each item in a batch is billed independently. 800/1000 successes at 5 credits each = 4,000 credits charged. Failures in the batch are free. The failure reason is in each item’s error field.
Checking your usage
Every request, successful or not, appears in your dashboard at /app/usage. Failed requests display $0 for Cost and a clear reason code. Use them to debug, not worry.
Versioning
Any change to this billing policy is announced 14 days in advance via email and reflected in both this page and the pricing FAQ simultaneously. In-flight requests are settled under the old policy.