---
title: Billing policy
description: Exactly which response types cost credits. Simple rule  -  only successful (2xx) responses are billed.
order: 50
---

# 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](https://amazonscraperapi.com/pricing#faq) simultaneously. In-flight requests are settled under the old policy.
