Rate limits
Two separate budgets: how fast you can call, and how much you can look up. They are independent, so exhausting one never eats the other.
Requests per minute
A fixed one-minute window, counted per API key. Every response carries the headers below, so you never have to guess where you stand.
| Plan | Requests / minute |
|---|---|
| Free trial | 30 |
| Growth | 120 |
| Higher volume | 600 |
X-RateLimit-Limit: 120 X-RateLimit-Remaining: 118
Read endpoints have their own budget
GET /v1/lookup and GET /v1/lookup/:id are limited to 20 requests per minute on every plan, counted separately from lookups. Reading results costs us almost nothing, so this is not about capacity. It is there so polling a result can never eat the lookup budget you are paying for, and so an account's history is not cheap to bulk-pull.
Monthly lookup quota
Separately from the per-minute limit, each plan includes a number of lookups: 15 free ones to start (shared across everyone at your company's email domain), then 1,000 a month on Growth. Exceeding it returns 402 quota_exceeded, not a 429: different problem, different fix.
When you exceed the rate limit
HTTP 429, and the window resets at the top of the next minute. Retry with backoff rather than immediately.
{
"error": {
"code": "rate_limit_exceeded",
"message": "You've hit your rate limit of 120 requests per minute. Try again shortly."
}
}