Rate Limits

Rate limits protect the API and ensure fair usage across all users. Limits are applied per API key.

The free npm package has no rate limits

Rate limits only apply to the hosted API. The offline isDisposable() function has no limits — use it as much as you want.

Plan limits

PlanRequests/minuteChecks/monthPrice
Public (no key)10/day per IP-Free
Free5/min100$0
Pro60/min10,000$9/mo
Business120/min100,000$29/mo
Scale300/min500,000$79/mo

How rate limiting works

Per-minute limits use a sliding window algorithm. If you exceed the limit, you'll receive a 429 response. Wait a few seconds and retry.

Monthly limits reset on the 1st of each month (UTC). When you hit the monthly limit, all further requests return 429 until the next billing period.

Bulk requests count as one request for rate limiting but each email in the batch counts toward your monthly check limit.

Rate limit response

When rate limited, the API returns:

HTTP/1.1 429 Too Many Requests

{"error": "Rate limit exceeded. Slow down."}

Or for monthly limits:

{"error": "Monthly check limit reached. Upgrade your plan."}

Best practices

  • 1.Use the offline check first. Call isDisposable() locally before hitting the API. This catches 95%+ of disposable emails without using any API quota.
  • 2.Use bulk endpoints. If you need to check multiple emails, use /v1/check/bulk instead of individual requests.
  • 3.Cache results. If you check the same email again, cache the result on your side. DNS data doesn't change often.
  • 4.Monitor your usage. Check your monthly usage in the dashboard to avoid hitting limits unexpectedly.