Rate Limits
Rate limits are requests per minute, counted per endpoint against a moving window. All API keys on one account share a bucket per endpoint. Going over returns 429 Too Many Requests with a Retry-After header giving the seconds to wait. Separate limits on work in progress cap queued email lookups and running async tasks.
Limits by Endpoint
Section titled “Limits by Endpoint”† Unbilled. These consume no credits and the plan multiplier does not apply, so the cap is the same on every plan.
Limits on Work in Progress
Section titled “Limits on Work in Progress”Rate limits bound how fast you submit. Two more limits bound how much work one account can have queued or running at once, so one account’s backlog cannot delay everyone else’s. Both are counted per account at submit time and both answer 429 Too Many Requests with Retry-After: 60. The detail message gives your current count and the limit. A refused request starts nothing and bills nothing; send it again once earlier work finishes.
| Work | What counts | Starter | Pro | Team | Company | Enterprise |
|---|---|---|---|---|---|---|
| Email lookups | Lookups still queued or running | 2,000 | 4,000 | 6,000 | 10,000 | 40,000 |
| Async tasks | Running DiscoGen, bulk match, contact bulk match and segment tasks | 3 | 3 | 3 | 3 | 3 |
Email lookups. /email/find, /email/find/batch and the MCP find-emails tool check the limit. A batch that would take the account past it is refused whole, so a batch larger than the room left never starts partially. Lookups started by a ContaGen task, a prospecting run or the DiscoLike app count toward the same total, but those are never refused part way through.
{ "detail": "Too many email lookups in progress: 1,900 queued or running, 500 more requested, limit 2,000 on your plan. Try again once some finish." }Async tasks. Starting a fourth task while three are running is refused. This covers /discogen/process and /discogen/process/personas (and retrying one of their tasks), /contacts/discover/generate, /validate/icp, /bulkmatch, /contacts/bulk-match, /segment, and the MCP tools that start the same tasks. Wait for a task to finish or cancel one to free a slot.
{ "detail": "3 tasks are already running (limit 3). Try again once one finishes, or cancel one from the Tasks page." }Both counts are read when the request arrives, so requests sent at the same instant can briefly take an account slightly past a limit. The limits may be tuned over time; read the number from the detail message instead of hardcoding it.
MCP tool calls are rate limited per tool per user, mirroring the corresponding HTTP endpoint’s limit: billed tools scale with the plan multiplier, and the unbilled tools count-matching-domains, count-contacts, contact-lookup, match-contacts, and list-industry-categories are flat at their base rate. A tool with no explicit rate gets 30 req/min scaled by the plan multiplier. See MCP Tools for the tool list.