Loading…
Loading…
Two things are stated plainly here because they are where API pricing usually gets slippery: what one request means, and what happens when you run out.
Real historical data, its own separate allowance, no card. Every account has sandbox access permanently, including paid ones.
Free
End-of-day and 15-minute-delayed US equities, with a modest request allowance and permanent sandbox access on its own allowance.
Free
Real-time US equities and ETFs, fundamentals and news, full history, and a much higher request rate.
$49/mo
Every asset class with WebSocket streaming, deep history, a very high request rate, and limited redistribution rights.
$199/mo
Uncapped throughput, full redistribution rights, and an SLA. Commercial terms are agreed per contract.
Contact us
What actually counts as a request.
/v1/prices/bulk for 200 instruments over a year costs one request; asking per-instrument in a loop costs 200.Worked example on the free tier: 1,000 requests per 30 days is about 33 a day. A daily job pulling end-of-day bars for 500 instruments via /v1/prices/bulk in batches of 50 is 10 requests a day, so roughly 300 a month - comfortably inside the tier. The same job written as a per-instrument loop is 15,000 a month and exceeds it many times over, which is what batching is for.
You get an HTTP 429 with the rate_limited error code and a Retry-After header. Nothing is silently truncated, and you are never charged an overage you did not agree to.
You should never reach that point by surprise: every response carries X-RateLimit-Remaining, and your dashboard shows usage over time. Discovering a limit by hitting it is the most-cited complaint about competing APIs, and it is a design choice rather than an inevitability.
Cancellation is self-serve. There is no retention flow, no phone call, and no cancellation fee.