IPAbuse Developers

Rate Limits

Rate limits are applied per API key, per rolling window. The limits depend on your subscription plan.

Limits by plan

PlanLookups / monthLookups / minReportingBlocklists
Free1,0001050 / monthDaily refresh
Pro50,00060UnlimitedHourly refresh
Business500,000300UnlimitedReal-time
EnterpriseCustomCustomUnlimitedReal-time + SLA

Response headers

Every response includes rate-limit metadata so you can track consumption:

HeaderDescription
X-RateLimit-LimitMax requests in the current window
X-RateLimit-RemainingRequests left in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait (only present on 429 responses)

Handling 429 Too Many Requests

When you exceed the per-minute limit the API returns HTTP 429. Use the Retry-After header to wait the correct amount of time:

TypeScript
async function lookupWithRetry(ip: string, retries = 3): Promise<Response> {
  const res = await fetch(`https://api.ipabuse.org/v1/ip/${ip}/reputation`, {
    headers: { "X-API-Key": process.env.IPABUSE_API_KEY! },
  });
  if (res.status === 429 && retries > 0) {
    const retryAfter = Number(res.headers.get("Retry-After") ?? 1);
    await new Promise((r) => setTimeout(r, retryAfter * 1000));
    return lookupWithRetry(ip, retries - 1);
  }
  return res;
}

Burst allowance

All plans include a short burst allowance of up to 2× the per-minute limit for up to 5 seconds. Sustained traffic above your plan limit will be throttled.

Need more?

Upgrade your plan at ipabuse.org/billing or contact us for a custom Enterprise quote.

Next steps