# Credits and limits

> Understand Search1API request costs, account balances, top-ups, auto top-up, rate limits, and timeouts.

Canonical URL: https://s1.dev/docs/essentials/credits-and-limits

Search1API deducts credits when a request completes successfully. A search that completes but finds zero results is a successful request and is charged; requests that fail with an error status — including `502` service failures — are not charged.

## Request costs

| Endpoint | Credits |
| --- | --- |
| `POST /search` | 1 |
| `POST /maps` | 3 per page (up to 20 places) |
| `POST /ask` | 5 |
| `POST /news` | 1 |
| `POST /crawl` | 1 |
| `POST /screenshot` | 2 |
| `POST /sitemap` | 1 |
| `POST /trending` | 1 |
| `POST /extract` | 10 |
| `POST /deepcrawl` | 20 |
| `GET /deepcrawl/status/{taskId}` | free |
| `GET /usage` | free |

## Search with full page content

`/search` and `/news` have a dynamic cost when you set `crawl_results`:

```text
1 credit for the search + 1 credit for each page crawled successfully
```

For example, if `crawl_results` is `4` and three pages return content, the request costs 4 credits. The unsuccessful crawl is not charged. `crawl_results` cannot be greater than `max_results`.

Batch requests are calculated item by item. A failed item has a cost of zero even when other items in the batch succeed.

A batch request to `/search`, `/news` or `/crawl` can contain up to 50 items. A larger array returns `422 Unprocessable Entity` and is not charged; split the work into several requests.

## Maps pagination and charges

`POST /maps` fetches one Google Maps page of up to 20 places per request. Each completed page costs 3 credits, including a confirmed empty page. Technical failures are not charged. `max_results` truncates that page and does not reduce its charge; fetching another page requires another request. Maps currently accepts single requests only.

Maps returns `searchParameters` and `results`, matching the single-request format of Search and News. The requested page is included in `searchParameters`; the results array contains the places delivered for that page. A short or empty page does not guarantee there are no later results. Use `GET /usage` to check your remaining account balance.

## Free and paid credits

New accounts receive 100 credits without a credit card or expiration date. Subscriptions reset an allowance each month. Top-up credits never expire. When both balances are available, subscription credits are deducted before top-up credits.

See the [pricing page](https://s1.dev/pricing) for current plans and top-up amounts.

## Top up credits

Top up any amount from **$5 to $2,000**. The base rate is **$1 = 1,000 credits**. Larger top-ups receive a bonus on the whole amount:

- $19 or more: +5%
- $99 or more: +20%
- $499 or more: +60%

You can start a top-up from the [pricing page](https://s1.dev/pricing#pay-as-you-go) or from the dashboard. For amounts above $2,000, contact [sys@search1api.com](mailto:sys@search1api.com).

## Auto top-up

Auto top-up is optional and off by default. In the [dashboard](https://app.s1.dev/), set a credit threshold, a top-up amount, and a card. Search1API charges that amount only after your combined available subscription and top-up credits fall below the threshold.

Automatic top-ups use the same bonus tiers as a manual top-up. Saving the rule does not charge the card. Automatic top-ups are capped at three charges in any 24-hour window, and the feature turns itself off after three consecutive payment failures. The threshold must be lower than the credits one top-up grants, so a single refill can move the balance back above the line.

If auto top-up is enabled and can still run, Search1API skips the generic low-balance email. A failed charge sends its own notice; after repeated failures you can update the card and turn the rule back on.

## Check your balance

```bash
curl https://api.search1api.com/usage \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```json
{ "usage": 24980 }
```

The `usage` field is the number of credits remaining. When the balance cannot cover a successful request, the API returns `402 Payment Required` instead of the original success response.

## Rate limit

For bearer-authenticated requests billed to account credits, most endpoints allow **200 requests per minute per account**. Screenshot rendering has a separate limit of **10 requests per minute per account**, and `/ask` a separate limit of **30 requests per minute per account**. Requests made with different API keys from the same account share these limits.

A request above its endpoint limit returns `429 Too Many Requests` with a `Retry-After: 60` header. Wait for that interval before retrying. Contact [sys@search1api.com](mailto:sys@search1api.com) if you need a higher limit.

## Client timeouts

Search and result-crawling operations can wait up to 20 seconds for an upstream service. Screenshot requests accept a `timeout_ms` value from 1 to 30 seconds. `/ask` can take up to 35 seconds. Set the client timeout above the API timeout so the server can return a useful error response.

`POST /deepcrawl` is asynchronous. A successful start returns `202 Accepted` with a `taskId`; poll `GET /deepcrawl/status/{taskId}` for the result. Status checks cost no credits.

> **info:** For status-specific recovery behavior, see [Error handling](https://s1.dev/docs/essentials/error-handling).