> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reader.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Credits and billing

> What each Reader operation costs and how to check your balance.

Reader is metered in **credits**. Every successful scrape consumes credits according to the proxy mode that actually ran; failures and cache hits are free.

## Cost table

| Operation                                      | Cost                                     |
| ---------------------------------------------- | ---------------------------------------- |
| Scrape in `standard` mode                      | **1 credit** per page                    |
| Scrape in `premium` mode                       | **3 credits** per page                   |
| Cache hit                                      | **0 credits** (any mode)                 |
| Failed scrape (timeout, upstream error, block) | **0 credits**                            |
| Crawl                                          | 1 credit per page discovered and scraped |

The resolved mode is reported in every response under `metadata.proxyMode`. Your usage history also tracks it; see `/v1/usage/history`.

## Monthly allowance

Every account gets **1,000 credits per month**. Credits reset at the start of each billing period. Unused credits do not roll over.

## Checking your balance

```bash theme={null}
curl https://api.reader.dev/v1/usage/credits -H "x-api-key: $READER_KEY"
```

```json theme={null}
{
  "success": true,
  "data": {
    "balance": 955,
    "limit": 1000,
    "used": 45,
    "resetAt": "2026-05-01T00:00:00Z"
  }
}
```

Check programmatically from the SDK:

```ts theme={null}
const credits = await reader.getCredits();
if (credits.balance < 100) {
  console.warn("Low credits, resets at", credits.resetAt);
}
```

## When billing runs

Reader charges credits **after** a scrape succeeds, not before. The pre-flight check only verifies you have enough to *start* the request; the actual deduction happens once the content is in your response.

The pre-flight check verifies you have the correct number of credits for the mode you selected: 1 credit for `standard`, 3 credits for `premium`.

## Insufficient credits

```json theme={null}
{
  "success": false,
  "error": {
    "code": "insufficient_credits",
    "message": "You need 50 credits but only 10 are available.",
    "details": { "required": 50, "available": 10, "resetAt": "2026-05-01T00:00:00Z" },
    "docsUrl": "https://reader.dev/docs/home/concepts/errors#insufficient-credits"
  }
}
```

See the [Credit exhaustion guide](/home/guides/production/credit-exhaustion) for how to handle this gracefully.

## Estimating batch costs

Before running a large batch, estimate the bill:

```
cost = (number of URLs) × (credits per page for the mode you expect)
```

Know your target sites before running large batches. Standard works for 90%+ of the web. Sites known to require bot bypass (Amazon, LinkedIn, booking sites) need `premium`. See [Cost estimation](/home/guides/production/cost-estimation).

## Browser session costs

Browser sessions are billed at **1 credit per minute**, charged in real-time:

* First minute charged on session creation
* Each additional minute charged via interval timer
* Session auto-stops if credits run out
* No reconciliation needed on close - already charged

A 10-minute session costs 10 credits.

## Next

* [Browser sessions](/home/concepts/browser-sessions): full browser automation
* [Proxy modes](/home/concepts/proxy-modes): what drives cost
* [Caching](/home/concepts/caching): free cache hits
* [Rate limits](/home/concepts/rate-limits): requests per minute, not credits
