Back to Documentation

Rate Limits

Understanding API rate limits and best practices

Overview

Rate limits protect the API from abuse and ensure fair usage across all customers. Each API key has a rate limit based on your subscription plan.

Rate limits are calculated per API key, per minute. If you need more capacity, you can create multiple API keys or upgrade your plan.

Rate Limits by Plan

Free Plan
Perfect for testing and small projects
10
requests/min
600 requests per hour
14,400 requests per day
Standard Plan
For growing businesses
60
requests/min
3,600 requests per hour
86,400 requests per day
Premium Plan
For high-volume applications
300
requests/min
18,000 requests per hour
432,000 requests per day

Rate Limit Headers

Every API response includes headers that tell you about your current rate limit status:

X-RateLimit-Limit

Your total rate limit (requests per minute)

X-RateLimit-Remaining

Number of requests remaining in the current window

X-RateLimit-Reset

Seconds until your rate limit resets

Example Response Headers

HTTP/1.1 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 32
Content-Type: application/json

Handling Rate Limit Errors

When you exceed your rate limit, you'll receive a 429 Too Many Requests response:

HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 15
Retry-After: 15

{
  "detail": "Rate limit exceeded. Limit: 60 requests per minute."
}

Best Practice: When you receive a 429 response, wait for the number of seconds indicated in the Retry-After header before making another request.

Best Practices

1. Implement Exponential Backoff

If you hit a rate limit, wait before retrying. Increase the wait time exponentially with each retry.

async function fetchWithBackoff(url, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url);
    
    if (response.status !== 429) return response;
    
    const retryAfter = parseInt(response.headers.get('Retry-After') || '60');
    await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
  }
}
2. Monitor Rate Limit Headers
Track the X-RateLimit-Remaining header and slow down requests proactively when approaching your limit.
3. Cache Responses
Cache API responses when appropriate. Price data doesn't change constantly, so caching can significantly reduce your API calls.
4. Use Webhooks
Instead of polling the API repeatedly, set up webhooks to receive push notifications when prices change. This is more efficient and doesn't count against your rate limit.
5. Batch Requests
Get all products with a single GET /products call instead of making individual requests for each product.
6. Use Multiple API Keys
If you need more capacity, create multiple API keys. Each key has its own independent rate limit. Distribute requests across keys for higher throughput.
Need Higher Limits?
Upgrade your plan for higher rate limits and more features

Next Steps