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.

PlanRequests / minute
Free trial30
Growth120
Higher volume600
Response headers
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.

429 Too Many Requests
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "You've hit your rate limit of 120 requests per minute. Try again shortly."
  }
}