Rate limits & quotas
Per-minute rate limits and monthly credit quotas by plan, response headers, and how to handle 429s.
HTTP/1.1 429 Too Many Requests
Retry-After: 24
X-RateLimit-Limit: 15
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1731600060
{
"error": "Rate limit exceeded",
"message": "Too many requests for content endpoint. Rate limit will reset at 2026-05-13 14:01:00 UTC.",
"details": {
"endpoint": "content",
"limit": 15,
"remaining": 0,
"reset_time": 1731600060,
"reset_date": "2026-05-13 14:01:00 UTC"
},
"retry_after": 24
}
Chuger applies two independent limits on top of credits:
- Rate limits — how many requests per minute / hour / day you can make to each endpoint
- Monthly quota — the credit balance attached to your plan, which resets every month
Both limits are scoped to your account, not to individual API tokens. Spreading traffic across several tokens does not raise the cap.
Rate limits by plan
Per-minute limits per endpoint:
| Endpoint | Basic | Pro | Business |
|---|---|---|---|
/v1/scrape | 5 | 15 | 150 |
/v1/content | 5 | 15 | 150 |
/v1/serp | 3 | 10 | 100 |
/v1/serp/content | 3 | 10 | 100 |
/v1/prompt | 2 | 8 | 75 |
Per-hour and per-day limits scale roughly proportionally — for example, on Pro: scrape allows 300/hour and 2,000/day; on Business: 5,000/hour and 50,000/day. Endpoints that aren't billed (such as /v1/credits/*) are not rate-limited.
If you hit a rate limit you get 429 Rate limit exceeded with a JSON body and a Retry-After header — see Errors.
Monthly credit quota
Every plan ships with a monthly credit allowance that resets on the first of the month:
| Plan | Monthly credits |
|---|---|
| Basic | 6,000 |
| Pro | 20,000 |
| Business | 90,000 |
Different endpoints cost different amounts of credits — see Credits for the breakdown. When you have insufficient credits Chuger returns 402 Insufficient Credits.
You can top up between renewals by purchasing additional credits.
Response headers
Every successful API response includes these headers:
Your per-minute limit for this endpoint.
Requests left in the current minute window.
Unix timestamp when the minute window resets.
Total credits available this month.
Credits remaining this month.
Unix timestamp when the monthly quota resets.
When you cross the 80% threshold Chuger also returns:
Present when you're approaching the per-minute rate limit. Value: "Approaching rate limit".
Present when you're approaching the monthly credit quota. Value: "Approaching monthly quota".
These warning headers are advisory — your request still succeeds. Treat them as a cue to back off or alert your team.
Handling 429
When you exceed the per-minute rate limit Chuger returns:
Wait for the Retry-After seconds before resending. See Concurrency & best practices for retry strategies.
Handling quota exhaustion
When your monthly credits run out you get 429 Quota exceeded (during the rate-limit check) or 402 Insufficient Credits (when the action is about to be performed):
{
"error": "Insufficient Credits",
"message": "Insufficient credits. Required: 10, Available: 4",
"code": "INSUFFICIENT_CREDITS"
}
Options:
- Upgrade your plan — see your dashboard's pricing page
- Purchase additional credits
- Wait until your monthly quota renews
Tips for staying under the limits
- Cache results locally when scraping the same URLs repeatedly
- Use
/v1/credits/preview-costbefore launching bulk operations - For high-volume jobs, prefer
/v1/content/bulkover many serial/v1/contentcalls — it handles pacing for you and delivers results asynchronously - Honor
Retry-Afterand the warning headers in your client code — see Concurrency & best practices