Rate limits
Every account has a monthly REST quota, a per-second request limit and WebSocket allowances. Your dashboard shows the values applied to your account.
Limits by plan
| Limit | Free | Individual | Business |
|---|---|---|---|
| REST calls per month | 3,000 every 30 days | 250K per feed | 25M per feed |
| REST requests per second | 10 | 10 | 100 |
| WebSocket connections | Not included | 1 per feed | 10 per feed |
| WebSocket symbols | Not included | 10 per feed | Unlimited |
The Free quota renews every 30 days, counted from the day you signed up; paid quotas follow your billing period. Your dashboard shows the next reset date. The per-second limit applies to the whole account, not to each feed, and every response reports yours in X-RateLimit-Limit. Bars over a date range (/agg/{symbol}/{multiplier}/{timespan}/{from}/{to}) run at up to 10 a second on every self-serve plan. WebSocket comes with a paid plan: a Free account can ask for a 7-day trial from the dashboard (streaming only, 1 connection and 10 symbols per feed, US stocks for stocks, reviewed by our team), and an upgrade without access is refused with 403 and WS_NOT_INCLUDED. Higher limits are available on request.
WebSocket limits
- Connections
- How many sockets your account can hold open at the same time.
- Distinct symbols
- How many different symbols you can stream at once, across all connections and channels. Business has no account-wide cap: each connection carries up to 200, so a larger universe spreads across your connections.
- Symbols per subscribe
- Up to 500 in one
subscribemessage, on every plan, within the symbol limit of each connection. Send more messages for more symbols.
Allowances follow your plan and data packages, and the limits of several feeds on one account combine. See Subscriptions and troubleshooting for what happens when a limit is reached.
Rate limit headers
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed per second for your account. |
X-RateLimit-Remaining | Requests left in the current one-second window. |
X-RateLimit-Policy | The same limit as limit;w=window, for example 50;w=1. |
Retry-After | On a 429 only: whole seconds to wait before retrying. |
Every authenticated REST response carries these, so you can pace requests before a 429. The monthly quota is not in the headers: the dashboard and the 429 body report it.
Rate limit responses
A request over a limit returns 429 Too Many Requests with a JSON body that names the limit; the per-second limit also sends Retry-After. A request stopped by the per-second limit does not count against the month. Body shapes are in the Errors reference.