Get started
Rate limits
One pooled allowance per account, metered by the month, day and hour.
Limits by plan
| Plan | Per month | Per day | Per hour | Per bulk call |
|---|---|---|---|---|
| Free | 30,000 | 1,000 | 100 | 100 |
| Starter | 150,000 | No cap | 1,500 | 500 |
| Pro | 500,000 | No cap | 5,000 | 1,000 |
| Business | 2,000,000 | No cap | 20,000 | 2,000 |
| Enterprise | Custom | |||
One allowance covers every product, and each metered call counts once.
The keyless demo allows about 100 requests a day per IP.
Rate limit headers
- X-RateLimit-Limit
Monthly allowance.
- X-RateLimit-Remaining
Requests left this month.
- X-RateLimit-Reset
When the monthly allowance resets, as a Unix timestamp.
- X-RateLimit-Daily-*
The same three for the daily cap, on plans that have one.
- X-RateLimit-Hourly-*
The same three for the hourly limit.
- Retry-After
Seconds until the limit you hit resets.
HTTP/2 200
x-ratelimit-meter: request
x-ratelimit-limit: 30000
x-ratelimit-remaining: 25820
x-ratelimit-reset: 1793491200
x-ratelimit-daily-limit: 1000
x-ratelimit-daily-remaining: 788
x-ratelimit-hourly-limit: 100
x-ratelimit-hourly-remaining: 86When a limit runs out
reason
- hourly_limit
The hourly limit ran out; it clears within the hour.
- daily_quota
The daily cap ran out; it resets at midnight UTC.
- monthly_quota
The monthly allowance ran out; it resets on your reset date.
- insufficient_for_batch
A bulk call needed more than what is left; needed says how many.
{
"error": "rate_limit_exceeded",
"reason": "daily_quota",
"message": "You have used today's 1,000 requests.",
"meter": "request",
"plan": "Free",
"limit": 1000,
"usage": 1000,
"remaining": 0,
"resetDate": "2026-11-01",
"resetAt": "2026-10-07T00:00:00Z",
"retryAfter": 35400,
"softBlock": false,
"upgrade": {
"recommendedPlan": "Starter",
"url": "https://ipscanner.io/pricing",
"message": "You have used 100% of today's request allowance. The Starter plan has no daily cap."
}
}