---
title: Pricing & quotas
description: Credits per engine, monthly plans, concurrency caps, and the 402 / 429 responses you get when you hit a limit.
---

Every `/scrape` and `/analyse` request spends **credits** from a monthly pool tied to your plan. Each plan also caps how many requests you can run **at once**. Both limits are enforced on those hot paths. Map is not metered.

## Credit cost per engine

Cost is charged **per URL**, keyed by the engine you request (a multi-URL request costs the sum).

| Engine | Credits / URL |
|---|---|
| `html` | 1 |
| `analyse` | 3 |
| `browser` | 5 |

`analyse` is one fetch + one LLM pass. Map is not metered.

## Plans

`credits` is the monthly pool (reset at the start of each UTC month, **no rollover**); `concurrency` caps simultaneous in-flight scrapes per user. New accounts start on **free**.

| Plan | Price / mo | Monthly credits | Concurrency |
|---|---|---|---|
| `free` | $0 | 1,000 | 2 |
| `starter` | $49 | 25,000 | 5 |
| `growth` | $149 | 150,000 | 15 |
| `scale` | $499 | 750,000 | 40 |

Manage your subscription on the [billing](/billing) page. The same catalog is available programmatically at `GET /billing/plans`.

## Checking usage

`GET /usage` (Clerk-authenticated, like the rest of `/me/*`) returns the current period's quota state:

```ts
{
  plan:             'free' | 'starter' | 'growth' | 'scale';
  period:           string;   // UTC "YYYY-MM"
  creditsLimit:     number;
  creditsUsed:      number;
  creditsRemaining: number;
  concurrencyLimit: number;
}
```

The dashboard's [billing](/billing) page is a visual wrapper over this.

## Hitting a limit

| Status | Body | Cause |
|---|---|---|
| `402` | `{ "error": "credit quota exceeded", "creditsLimit", "creditsUsed", "creditsRemaining": 0 }` | The request would exceed your monthly credit pool. Upgrade your plan or wait for the next period. |
| `429` | `{ "error": "concurrency limit exceeded", "concurrencyLimit" }` | Too many scrapes already in flight for your account. A `Retry-After: 5` header is set — back off and retry. |
