DocsRate limits

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.

Open .md

Limits by plan

LimitFreeIndividualBusiness
REST calls per month3,000 every 30 days250K per feed25M per feed
REST requests per second1010100
WebSocket connectionsNot included1 per feed10 per feed
WebSocket symbolsNot included10 per feedUnlimited

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 subscribe message, 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

HeaderMeaning
X-RateLimit-LimitRequests allowed per second for your account.
X-RateLimit-RemainingRequests left in the current one-second window.
X-RateLimit-PolicyThe same limit as limit;w=window, for example 50;w=1.
Retry-AfterOn 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.