> For the complete documentation index, see [llms.txt](https://docs.tardis.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tardis.dev/api/rate-limits.md).

# API Rate Limits

Account-level API request and data transfer limits

API request and data transfer limits apply per account, based on the active subscription.

Historical data transfer is included; we do not charge separately per GB or TB. Limits keep API access fair and reliable and may change as usage patterns and available capacity change.

## Request Limits

| Subscription type              | Requests/minute |
| ------------------------------ | --------------- |
| Academic / Solo / Professional | 3,000           |
| Business                       | 9,000           |

* Request limits count authenticated HTTP requests to the [raw data replay API](/api/http-api-reference.md#data-feeds-exchange).
* [Official clients](/api/quickstart.md) and [Tardis Machine](/tardis-machine/quickstart.md) call this API in parallel during historical replay, so several replay sessions running at the same time can hit request limits quickly.
* Raw data replay API responses include `x-ratelimit-limit` (requests per minute), `x-ratelimit-remaining` (requests left in the current minute) and `x-ratelimit-reset-after` (seconds until the next minute, when the count resets).
* Requests over the limit return HTTP 429 with "This account is sending Data Feed requests too quickly. Retry shortly." and a `retry-after` header with the seconds to wait.

## Data Transfer Limits

Data transfer limits count compressed data sent by [CSV dataset downloads](/downloadable-csv-files/api.md) and [raw data replay API](/api/http-api-reference.md#data-feeds-exchange) responses.

They depend on the active subscription type and billing interval:

| Billing interval | Academic / Solo / Professional | Business |
| ---------------- | ------------------------------ | -------- |
| Monthly          | 20 TB                          | 60 TB    |
| Quarterly        | 60 TB                          | 180 TB   |
| Yearly           | 240 TB                         | 720 TB   |

Quarterly and yearly limits are available from the start of the billing interval and reset on renewal. This helps with larger initial historical backfills.

A [free trial](/faq/billing-and-subscriptions.md#how-do-free-trials-work) has 20 GB of data transfer in total.

Your [account](https://tardis.dev/account) shows the data transfer used and the next reset. Requests over the limit return HTTP 429 with "This account has reached its data transfer limit."

## API Key Usage

| Subscription type              | Active API keys | Source IPs per key at a time |
| ------------------------------ | --------------- | ---------------------------- |
| Academic / Solo / Professional | 1               | 1                            |
| Business                       | Up to 10        | Multiple                     |

All active API keys on the account share the same request and transfer limits.

A key limited to one source IP returns HTTP 403 to requests from another IP address until 15 minutes after the last request from the first one. The `retry-after` header gives the seconds left.

## Reduce Data Transfer

* Use `zstd` compression for [raw data replay](/api/http-api-reference.md#data-feeds-exchange). Latest official [Node.js](/node-client/replaying-historical-data.md) and [Python](/python-client/replaying-historical-data.md) clients request `zstd` by default. For direct HTTP calls, set [`compression=zstd`](/api/http-api-reference.md#data-feeds-exchange) in the query string.
* Keep the official client cache enabled when replaying the same historical data repeatedly.
* Use [`filters`](/api/http-api-reference.md#data-feeds-exchange) to request only the channels and symbols needed for the current replay.

## Reduce Replay Requests

Treat the API as an on-demand historical data source. Fetch what you need now, then fetch more later instead of mirroring the full archive upfront.

* Use the latest [official clients](/api/quickstart.md) or [Tardis Machine](/tardis-machine/quickstart.md) for filtered replay. They apply the recommended `sliceSize` automatically, so one raw data replay request can return up to 10 consecutive minutes and reduce API request count.
* For direct [raw data replay API](/api/http-api-reference.md#data-feeds-exchange) calls with filters, use the `x-suggested-slice-size` response header as the next `sliceSize` for the same exchange, filters and compression.
* For the same exchange and time range, request multiple channels in the same replay call by putting them in one `filters` array.
* If your account can access all symbols for a channel, request that channel once by omitting `symbols` or passing `symbols: []`.
* If you need selected symbols, put them in one filter for the same exchange, channel and time range instead of one request per symbol. One filter can include up to 50 symbols.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.tardis.dev/api/rate-limits.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
