We enforce rate limits to ensure our API remains accessible and efficient for all users. Normally each API call consumes a single credit. However, if the response includes more than a single symbol, it can consume multiple credits. Often, users can navigate around a rate limit by making the most of the diverse filters we provide (e.g., instead of retrieving an entire option chain, apply specific filters to narrow down the results).
The rate limit is a hard limit. Once the limit has been reached, you will no longer be able to make requests until the request counter resets. Requests in excess of the rate limit will generate 429 responses.
Usage Counter Reset Time
The usage counter for all plans with a daily limit resets at 9:30 AM Eastern Time (NYSE opening bell). This reset timing is crucial for users to understand so they can plan their API usage efficiently without hitting the rate limit unexpectedly.
To handle the reset time accurately regardless of your local timezone, it's recommended to use the
America/New_York timezone identifier. This ensures that your application adjusts for any changes in Eastern Time, including daylight saving shifts, automatically.
By aligning your application's timing functions with the
America/New_York timezone, you can ensure that your usage of the API remains within the allocated rate limits, taking into account the precise reset timing at 9:30 AM Eastern Time.
Rate Limits By Plan
Different plans have specific rate limits, with most plans enforcing a daily rate limit while our Commercial Plan uses a per minute rate limit.
|Per Minute Limit
- Free Forever Plan: 100 credits per day.
- Starter Plan: 10,000 credits per day.
- Trader Plan: 100,000 credits per day.
- Commercial Plan: 60,000 credits per minute.
Each time you make a request to the API, the system will increase your credits counter. Normally each successful response will increase your counter by 1 and each call to our API will be counted as a single credit. However, if you request multiple symbols in a single API call using the bulkquotes, the bulkcandles, or the option chain endpoint, a request will be used for each symbol that is included in the response.
For users working with options, take care before repeatly requesting quotes for an entire option chain. Each option symbol included in the response will consume a request. If you were to download the entire SPX option chain (which has 20,000+ option symbols), you would exhaust your request limit very quickly. Use our extensive option chain filtering parameters to request only the strikes/expirations you need.
Headers to Manage the Rate Limit
We provide the following headers in our responses to help you manage the rate limit and throttle your applications when necessary:
X-Api-RateLimit-Limit: The maximum number of requests you're permitted to make (per day for Free/Starter/Trader plans or per minute for commercial users).
X-Api-RateLimit-Remaining: The number of requests remaining in the current rate day/period.
X-Api-RateLimit-Reset: The time at which the current rate limit window resets in UTC epoch seconds.
X-Api-RateLimit-Consumed: The quantity of requests that were consumed in the current request.
Detailed Rate Limit Rules
- Each successful response increases the counter by a minimum of 1 request.
- Only status 200/203 responses consume requests.
- NULL responses are not counted.
- Error responses are not counted.
- Responses may consume more than 1 request if the response includes prices for more than 1 symbol (e.g. an OPTIONCHAIN endpoint).
- Responses that include more than one symbol, but do not include the bid, ask, mid, or last columns do not consume multiple credits and are counted as a single request.
- Certain free trial symbols like AAPL stock, AAPL options, or the VIX index do not consume requests.
Strategies To Avoid Rate Limiting
- Exclude the bid, ask, mid, and last columns from your option chain requests if the current price is not needed.
- Use the extensive option chain filters such as
strikeLimitto exclude unnecessary strikes from your requests.