# Rate limits

## Limits

| Limit | Value |
| --- | --- |
| Requests per key | 120 per minute |
| Rows per request (find-contacts, verify, lists) | 50,000 |
| Rows per deep-search request | 10,000 |
| `wait` on a POST | up to 30 seconds |
| Page size (`limit`) | up to 1,000 |
| Request body | 20 MB |

Need more? Write to us; we raise limits per account.

The request limit is about calls, not rows: one request with 10,000 rows counts once. Send lists in one request instead of one request per row.

## Headers

Every answer has:

```http
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 42
```

`X-RateLimit-Reset` is the number of seconds until the minute starts over.

## When you hit the limit

You get `429 rate_limited` with a `Retry-After` header (seconds). Wait that long, then go on. Nothing is charged for a refused request.

```js
if (response.status === 429) {
  await new Promise((r) => setTimeout(r, Number(response.headers.get('retry-after')) * 1000));
  // send the same request again, with the same Idempotency-Key
}
```

