# Credits and billing

> SerpKite is prepaid. You buy credit packs that never expire, each call spends a known number of credits, and failed or empty calls are refunded automatically.

## How credits work

A credit is the unit every call is priced in. One credit buys one Google results page (up to 10 organic results) from [/v1/search](https://serpkite.com/docs/endpoints/search) or any core vertical. Other endpoints and options cost more or less, as listed below.

- **Prepaid, no subscription.** You buy a pack once and spend it down. There is no monthly fee and nothing renews.
- **Credits never expire.** Packs stack: buy a Starter today and a Pro next year, and both balances add up.
- **Decimal amounts.** Some calls cost half a credit, so balances and headers are decimal numbers such as `61499.5`.
- **You only pay for results.** Failed, empty and blocked requests cost nothing.

## What each call costs

| Endpoint or option | Credits | Notes |
| --- | --- | --- |
| `/v1/search`, `/v1/news`, `/v1/images`, `/v1/videos`, `/v1/maps`, `/v1/places`, `/v1/shopping`, `/v1/scholar`, `/v1/patents`, `/v1/webpage`, `/customsearch/v1` | 1 | Per results page (10 results). |
| `num=100` depth bundle | 7 | Top 100 results in one call instead of 10 pages. |
| `/v1/reviews` | 1 per 10 reviews | `num` up to 50. |
| `/v1/autocomplete` | 0.5 |  |
| `/v1/lens` | 2 |  |
| `include_content=N` | +1 per fetched page | Up to 5 pages. |
| `POST /v1/batches` | ×0.5 | Queued, delivered by poll or webhook. |
| Cache hit (`max_age`) | ×0.5 | Only when a fresh-enough cached result exists. |
| Failed, empty or blocked request | 0 | Reserved credits are refunded automatically. |
| `GET /v1/account`, `GET /v1/batches/{id}`, `GET /v1/status` | 0 |  |

A few worked examples:

| Request | Credits |
| --- | --- |
| `POST /v1/search` with `q` only | 1 |
| `POST /v1/search` with `page: 3` | 1 (each page is a separate call) |
| `POST /v1/search` with `num: 100` | 7 (instead of 10 for ten pages) |
| `POST /v1/search` with `include_content: 3` | 1 + 3 = 4 |
| One search queued with `POST /v1/batches` | 0.5 |
| `POST /v1/search` with `max_age: 3600`, cache hit | 0.5 |
| `POST /v1/reviews` with `num: 30`, 30 reviews returned | 3 (1 per 10 returned; 12 returned costs 2) |
| `POST /v1/autocomplete` | 0.5 |

The batch and cache discounts apply to the full price of the call. Half prices are rounded up to the nearest thousandth of a credit, so nothing ever rounds down to free. See [Pagination and depth](https://serpkite.com/docs/pagination-and-depth), [Caching](https://serpkite.com/docs/caching), [Batch requests](https://serpkite.com/docs/batch) and [Page content](https://serpkite.com/docs/include-content) for the details of each option.

## What is never billed

- **Errors.** Any `4xx` or `5xx` response costs 0 credits, including `503 upstream_error`, `503 upstream_blocked` and `503 upstream_timeout`. See [Errors](https://serpkite.com/docs/errors).
- **Empty results.** If Google returns no results for your query (`meta.parse_quality: "empty"`), the call is refunded.
- **Failed page fetches.** With `include_content`, you pay only for the pages we actually fetched. Pages that time out or refuse the fetch are refunded.
- **Bookkeeping endpoints.** [`GET /v1/account`](https://serpkite.com/docs/endpoints/account), [`GET /v1/batches/{id}`](https://serpkite.com/docs/endpoints/batches) and `GET /v1/status` are free.

### Reservation and refund

When a call starts, SerpKite reserves its maximum possible cost from your balance. When the call finishes, it settles to the real cost and refunds the difference. If the call fails, the whole reservation is refunded. You can see this in two places:

- The response headers: `X-Credits-Used` is the final cost (`0` for a refunded call) and `X-Credits-Remaining` is the balance after settlement. See [Response headers](https://serpkite.com/docs/response-headers).
- The credit ledger in the dashboard (**Billing**). It is append-only: every purchase, grant, usage and refund is a row, and refunds are separate compensating rows rather than edits. Ledger reasons are `grant`, `purchase`, `usage` and `refund`. Usage is aggregated per day.

If your balance is lower than the reservation, the call is rejected with `402 insufficient_credits` before anything runs.

## Free tier

- **1,000 credits** when you sign up and verify your email.
- **1,500 more** the first time you link a GitHub or Google account.
- **1,000 credits every month** after that, for verified accounts.
- **5 requests per second** per key.

No card is required. Free and purchased credits share one balance. A daily cap may apply to free accounts; if you hit it you get `429 daily_limit_reached`, and buying any pack removes it.

## Credit packs

| Pack | Price | Credits | Per 1,000 | Rate limit |
| --- | --- | --- | --- | --- |
| Free | $0 | 1,000 on signup, +1,500 for linking GitHub or Google, 1,000 every month |  | 5 req/s |
| Starter | $10 | 10,000 | $1.00 | 20 req/s |
| Growth | $50 | 62,500 | $0.80 | 50 req/s |
| Pro | $300 | 500,000 | $0.60 | 100 req/s |

Buying a pack also raises the [rate limit](https://serpkite.com/docs/rate-limits) of all your keys to that pack's rate. The rate comes from the largest pack you have ever bought, so it doesn't drop when your balance runs down.

Committed volume above these packs (from $0.18 per 1,000) is available on [Enterprise](https://serpkite.com/enterprise) plans.

## Paying

Packs are one-time purchases through Paddle, our merchant of record. Paddle handles the checkout, card processing, VAT and sales tax, and issues the invoice. Listed prices include VAT or GST in the EU, UK and most other countries; in the US, Canada and India, sales tax is added on top at checkout.

1. ### Open Billing

   In the dashboard, go to **Billing** and pick a pack.

2. ### Check out

   You are taken to the Paddle checkout. Pay by card or any method Paddle offers in your country.

3. ### Credits land on your balance

   When Paddle confirms the payment, the credits are added to your balance, usually within seconds. The grant is idempotent: a retried webhook never credits you twice.

Every paid order is listed under **Billing → Orders** with a link to the invoice PDF hosted by Paddle. Enterprise customers can pay by invoice.

To top up automatically when the balance runs low, see [auto-recharge](https://serpkite.com/docs/spend-controls#auto-recharge). To cap how much you spend per month, see [Spend controls](https://serpkite.com/docs/spend-controls).

## Tracking spend

- **Per request:** `meta.credits_used` in the body and the `X-Credits-Used`, `X-Credits-Remaining` and `X-Cost-USD` headers. `X-Cost-USD` is the dollar value of the credits used, at the per-credit price of the largest pack you have bought (`0` on a free account).
- **Per account and key:** [`GET /v1/account`](https://serpkite.com/docs/endpoints/account) returns the balance and this month's credits and requests; the dashboard's **Usage** page breaks usage down by day, endpoint and key and exports CSV.
- **Alerts:** email alerts for low balance and for a percentage of your monthly cap. See [Spend controls](https://serpkite.com/docs/spend-controls).

## Refunds of purchases

Unused credits don't expire, so there is rarely a reason to refund a pack. If you bought a pack by mistake and haven't used any of its credits, email support@serpkite.com with the order ID from **Billing → Orders** within 14 days of purchase and we refund it through Paddle. Refunded credits are removed from your balance.

Free credits and partly used packs are not refundable, except where the law requires it. Unused purchased credits are forfeited when you delete your account, so ask for a refund first. The full rules are in the [Refund Policy](https://serpkite.com/legal/refunds).