Rate Limits & Plans
How monthly quotas, per-minute limits and update intervals work on each plan, and how to track your usage.
Two kinds of limits
Every plan has a monthly quota, the number of billable requests per calendar month, and a per-minute limit that protects the API from bursts. Quotas reset at 00:00 UTC on the 1st of each month.
Plans also differ in update interval, which is how fresh the prices are. Polling more often than your interval returns the same prices again and only uses up quota.
Plans at a glance
- Free: 100 requests/month, daily updates, 10 requests/minute
- Lite: 1,000 requests/month, 30-minute updates, 30 requests/minute
- Standard: 10,000 requests/month, 10-minute updates, 60 requests/minute
- Advanced: 50,000 requests/month, 60-second updates, 120 requests/minute
- Pro: 100,000 requests/month, 60-second updates, 300 requests/minute
- Ultra: 500,000 requests/month, 15-second updates, 600 requests/minute
- Business: 500,000 requests/month, 15-second updates, 600 requests/minute, plus an uptime SLA
- Enterprise: 1,500,000 requests/month, 5-second updates, 1,200 requests/minute
Features grow with the plan too. Karat prices need a paid plan, bid/ask prices start at Standard, webhook alerts at Advanced and the realtime stream at Pro. See pricing for current prices.
What counts as a request
- Each successful call to a data endpoint counts as one request, no matter how many symbols it returns.
/symbolsand/usageare free and never count.- Requests rejected with
104(per-minute limit),106(not on your plan),107(origin not allowed) or a server error (500,503) are not billed. - Requests that fail because of the query itself do count. That covers validation errors
201to210and300(no results), so validate dates and symbols before sending them.
Tracking your usage
Every authenticated response reports your quota in headers:
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9876
X-RateLimit-Used: 124
X-RateLimit-Reset: 1793491200
X-RateLimit-Reset-Date: 2026-11-01T00:00:00.000Z
X-RateLimit-Plan: Standard
X-RateLimit-Minute-Limit: 60
X-RateLimit-Minute-Remaining: 59The same numbers are in the rate_limit object of the JSON body. reset is a Unix timestamp and reset_date is the same moment in ISO 8601: the start of next month in UTC.
Checking usage without spending quota
Call /usage from dashboards or monitoring. It is free:
{
"success": true,
"usage": {
"requests_made": 124,
"requests_quota": 10000,
"requests_remaining": 9876,
"plan": "standard",
"period_start": "2026-10-01T00:00:00.000Z",
"period_end": "2026-11-01T00:00:00.000Z"
},
"result": { "plan": "Standard", "used": 124, "total": 10000, "remaining": 9876 },
"rate_limit": {
"limit": 10000,
"remaining": 9876,
"reset": 1793491200,
"used": 124,
"plan": "Standard",
"reset_date": "2026-11-01T00:00:00.000Z"
}
}When you hit a limit
Both limits respond with HTTP status 429 and an error body:
104too_many_requests: too many requests in the current minute. The response includes aRetry-Afterheader with the number of seconds to wait. Slow down and retry.105quota_exceeded: the monthly quota is used up. Requests keep failing until the quota resets on the 1st (UTC). Upgrading your plan takes effect immediately.
{
"success": false,
"error": {
"code": 105,
"type": "quota_exceeded",
"info": "User has reached or exceeded his subscription plan's monthly API request allowance"
}
}Staying within your quota
- Cache responses for at least your plan’s update interval.
- Request all the symbols you need in one call instead of one call per symbol.
- Polling every 10 minutes uses about 4,500 requests a month. Polling every minute uses about 45,000. Pick the plan that matches your polling rate.
- On Pro and above, use the realtime stream instead of polling, and use price alerts to react to thresholds.
More tips are in Best practices.
Related guides
Ready to start building?
Create a free account to get your API key, or explore every endpoint in the API reference.