# Rate Limits

If you exceed the rate limit, the API returns `429 Too Many Requests`.

## Rate Limit Headers

Each API response includes rate limit headers:

- `X-RateLimit-Limit`: Total requests allowed in the current window (example: `15`)
- `X-RateLimit-Remaining`: Requests left in the current window (example: `14`)
- `X-RateLimit-Reset`: Seconds until the limit resets (example: `1`)

If `X-RateLimit-Remaining` reaches `0`, the next request returns `429 Too Many Requests` until the reset window expires.

## Handle 429 Responses

When you receive a `429`, wait for the number of seconds in `X-RateLimit-Reset` before retrying.

```bash
curl -i -X GET "https://api.tomba.io/v1/domain-search?domain=example.com" \
    -H "X-Tomba-Key: your_api_key" \
    -H "X-Tomba-Secret: your_secret_key"
```

In JavaScript, you can apply a simple retry based on the reset header:

```javascript
const request = async () => {
    const res = await fetch("https://api.tomba.io/v1/domain-search?domain=example.com", {
        headers: {
            "X-Tomba-Key": "your_api_key",
            "X-Tomba-Secret": "your_secret_key",
        },
    });

    if (res.status === 429) {
        const wait = Number(res.headers.get("X-RateLimit-Reset") || 1);
        await new Promise((resolve) => setTimeout(resolve, wait * 1000));
        return request();
    }

    return res.json();
};
```

## Overview of Request Costs

| Tool                                                      | Request Cost                                    |
| --------------------------------------------------------- | ----------------------------------------------- |
| [Domain Search](https://tomba.io/domain-search)           | Counted 1 for up to 10 Emails                   |
| [Email Finder](https://tomba.io/email-finder)             | Counted as 1 for 1 Email                        |
| [Author Finder](https://tomba.io/author-finder)           | Counted as 1 for 1 Email or article person name |
| [Email & Domain Enrichment](https://tomba.io/enrichment)  | Counted as 1 for 1 Email                        |
| [LinkedIn Email Finder](https://tomba.io/linkedin-finder) | Counted as 1 for 1 Email                        |
| [Email Verification](https://tomba.io/email-verifier)     | Counted as 1 for 1 Email                        |
| [Phone Finder](https://tomba.io/phone-finder)             | Counted as 10 for up to 10 Phones               |
| [Phone Validate](https://tomba.io/phone-validator)        | Counted as 1 for 1 Phone                        |
| [Reveal search](/api/reveal#search-companies)             | Counted as 1 for 50 companies                   |

<Callout type="info" title="requests">
    No requests are counted if Tomba cannot provide an email.
</Callout>

## Overview of Bulk Limits and Concurrency

The following table outlines the daily bulk limits and maximum concurrent operations allowed per tool. Staying within these limits ensures optimal performance and resource utilization.

| Tool                                                                  | Limit  | Max Concurrent Jobs |
| --------------------------------------------------------------------- | ------ | ------------------- |
| [Bulks Domain Search](https://tomba.io/bulks/domain-search)           | 15/day | 2                   |
| [Bulk Email Finder](https://tomba.io/bulks/email-finder)              | 15/day | 2                   |
| [Bulk Author Finder](https://tomba.io/bulks/author-finder)            | 15/day | 2                   |
| [Bulk Email Enrichment](https://tomba.io/bulks/email-enrichment)      | 15/day | 2                   |
| [Bulk Linkedin Finder](https://tomba.io/bulks/linkedin-finder)        | 15/day | 2                   |
| [Bulk Email Verifier](https://tomba.io/bulks/email-verifier)          | 15/day | 2                   |
| [Bulks Phone Finder](https://tomba.io/bulks/phone-finder)             | 15/day | 2                   |
| [Bulks Phone Validate](https://tomba.io/bulks/phone-validator)        | 15/day | 2                   |
| [Bulks Company Enrichment](https://tomba.io/bulks/company-enrichment) | 15/day | 2                   |
| [Bulks Similar](https://tomba.io/bulks/domain-similar)                | 15/day | 2                   |
| Domain export                                                         | 15/day | 2                   |
| Reveal search export                                                  | 15/day | 2                   |

## Additional Notes

- When a Domain Search or an Email Finder request doesn't return a result, the request isn't counted. Similarly, for the Email Verifier: if you verify a webmail and no result is provided, the request will not be used.
- Unique requests are counted only once every 30 days against your quota. If you need to re-run a series of requests due to improper data storage or for any other reason, these will not count against your monthly quota. Consequently, you can make identical API requests repeatedly within the same billing period. This flexibility is especially beneficial for developers who are testing integrations.
- **⚠️ All limits are shared across your team members. Please respect these limits. If you need higher limits for an integration app, [contact us](https://tomba.io/) to discuss options.**

## Is There a Request Per Second Limit?

Yes. The following limits apply per endpoint.

## Request Rate Limits

| API Endpoint                                         | Rate Limit (per second) | Rate Limit (per minute) |
| ---------------------------------------------------- | ----------------------- | ----------------------- |
| [Domain Search](/api/finder#domain-search)           | 15                      | 900                     |
| [Email Finder](/api/finder#email-finder)             | 15                      | 900                     |
| [Similar](/api/~endpoints#similar)                   | 15                      | 900                     |
| [Technology](/api/~endpoints#Technology)             | 15                      | 900                     |
| [Enrichment](/api/finder#email-enrichment)           | 5                       | 300                     |
| [Author Finder](/api/finder#author-finder)           | 2.5                     | 150                     |
| [Email Verifier](/api/verifier#email-verifier)       | 2.5                     | 150                     |
| [LinkedIn Email Finder](/api/finder#linkedin-finder) | 1.67                    | 100                     |
| [Reveal search](/api/reveal#search-companies)        | 5                       | 300                     |

<Callout type="info" title="limit">
    If you reach the limit, the API returns a 429 error.
</Callout>
