> For the complete documentation index, see [llms.txt](https://developer.parvenu.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.parvenu.io/rate-limits.md).

# Rate Limits

How Parvenu API rate limits work, the per-endpoint limits, and how to handle 429 responses.

Rate limits keep the Parvenu API fast and reliable for everyone. They are enforced **per API key**.

> **Hard limit: 5 requests per second.** Every API key is capped at 5 requests/second across all endpoints combined. No endpoint allows more than this, and most allow less. Stay under it and your integration will never be throttled.

#### How limits are applied

There are two layers, both keyed to your API key:

1. A **global ceiling of 5 requests/second** across every endpoint.
2. **Per-endpoint limits** (see below), each at or under that ceiling.

#### Per-endpoint limits

Endpoints are grouped by type. All limits are per API key.

{% hint style="warning" %}
This table covers the original list-scoped and lookup endpoints. It has not yet been updated with rows for the newer single-record endpoints added alongside them (`headcount`, `personal_email`, `open_to_work`, `work_education`, `website`, `post`, `linkedin_profile`, `mobile_phone_enrichment`, `enrich_company_from_domain`, `research_with_ai`, `scrape_website_with_ai`). Limit numbers below also need to be reconfirmed, they have not been re-verified against current infrastructure.
{% endhint %}

| Endpoints                                                                                                                              | Sustained | Burst | Max concurrent |
| -------------------------------------------------------------------------------------------------------------------------------------- | --------- | ----- | -------------- |
| `search_company_cities`, `search_company_states`, `search_company_countries`, `search_company_keywords`                                | 120 / min | 5     | 10             |
| `credit_check`, `all_list`                                                                                                             | 60 / min  | 5     | 5              |
| `check_list_status`                                                                                                                    | 60 / min  | 5     | 5              |
| `profile`, `profile_with_company`, `email_enrichment_list`                                                                             | 60 / min  | 5     | 10             |
| `personalize_with_ai_list`                                                                                                             | 30 / min  | 5     | 5              |
| `lead_enrichment_list`, `mobile_phone_enrichment_list`, `sales_nav_search_list`, `linkedin_search_list`, `post_list`, `company_search` | 30 / min  | 5     | 5              |
| `jobs_search`, `jobs_search_list`                                                                                                      | 10 / min  | 3     | 2              |
| `download_list`, `download_list_jobs`                                                                                                  | 60 / min  | 5     | 5              |

**Global ceiling:** 5 requests/second per API key, across all endpoints combined.

{% hint style="info" %}
Domain Enrichment (`domain_enrichment_list`) is excluded from these docs and from this table, it is not a documented capability.
{% endhint %}

#### What a throttled response looks like

A throttled request comes back in the standard error shape: `status` is `error`, there is no `data`, and `error.code` is `http_error`. Back off and retry. See [Response Format](/getting-started/response-format.md) for the full error shape.

#### Rate limits vs. credits

Rate limits govern **how often** you can call the API. They are separate from **credits**, which govern **how much** enrichment you consume. A request can pass the rate limit and still fail if your credit balance is too low, so check your balance any time with `credit_check`.
