To ensure fair usage, prevent abuse, and maintain high availability across all #about services, we enforce strict rate limits on all API endpoints. This page details current quotas, response headers, retry strategies, and architectural best practices.
Rate limits are evaluated per API key on a sliding 60-second window. Burst allowances accommodate short traffic spikes before throttling applies.
| Plan | Requests / min | Burst Buffer | Max Concurrency |
|---|---|---|---|
| Developer (Free) | 60 | 10 | 5 |
| Pro | 600 | 50 | 25 |
| Business | 3,000 | 200 | 100 |
| Enterprise | Custom | Custom | Unlimited |
Every successful and error response includes telemetry headers to help you track consumption and predict resets:
HTTP/1.1 200 OK
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 412
X-RateLimit-Reset: 1719823456
Retry-After: 18
RateLimit-Policy: 600;w=60
X-RateLimit-Limit: Maximum requests allowed per evaluation windowX-RateLimit-Remaining: Available requests left in the current windowX-RateLimit-Reset: Unix epoch timestamp when the quota refreshesRetry-After: Recommended wait time in seconds (RFC 6585)RateLimit-Policy: IETF draft format for algorithmic parsingWhen your application exceeds the configured threshold, the gateway returns a 429 status code. The response body contains a machine-readable error object:
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "You have exceeded the allowed request quota for this window.",
"retry_after": 14,
"documentation_url": "/rate-limiting"
}
}
Retry-After header and apply exponential backoff with jitter to avoid thundering herd scenarios.
Recommended implementation for resilient clients:
async function requestWithBackoff(url, opts, maxRetries = 4) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const res = await fetch(url, opts);
if (res.status === 429) {
const delay = Math.min(
Math.pow(2, attempt) * 1000 + Math.random() * 500,
30000
);
await new Promise(r => setTimeout(r, delay));
continue;
}
return res;
}
throw new Error('Rate limit exhausted after retries');
}
Cache-Control and CDN layers to minimize redundant calls/v1/bulk endpoints over sequential single-resource requestsSubmit a request via the Developer Portal or email api-scaling@about.co. Include your average daily volume, peak concurrency patterns, and business justification. Enterprise customers receive dedicated throughput allocations.
No. OAuth2 and token refresh endpoints operate under a separate, stricter limit (10 req/min per IP) to mitigate credential stuffing and brute-force attempts.
Repeated throttling triggers an automated review. After 24 hours of sustained violations, your API key may be temporarily suspended pending contact from our platform security team.
Yes. Enable the analytics scope on your API key and query the /v1/metrics/usage endpoint for sub-minute consumption telemetry.