# Overview

{% hint style="info" %}
Historical data details describes data collection specifics for each supported exchange and what's available via Tardis.dev [HTTP API](https://docs.tardis.dev/api/http-api-reference). If you'd like to work with [normalized market data](https://docs.tardis.dev/faq/data#what-is-a-difference-between-exchange-native-and-normalized-data-format) see [official libraries](https://docs.tardis.dev/api/quickstart) and [downloadable CSV files](https://docs.tardis.dev/downloadable-csv-files/overview).
{% endhint %}

You'll find here per-exchange details about:

* historical data availability date ranges — since when the historical data has been collected and is available
* captured real-time market data channels also described as streams, subscription topics, tables etc in exchanges' docs — available historical raw market data is being sourced from WebSocket real-time APIs provided by the exchanges and can be filtered by channels, e.g.: to get historical trades for BitMEX, channel `trade` needs to be provided alongside requested instruments symbols (via [HTTP API](https://docs.tardis.dev/api/http-api-reference#data-feeds-exchange) or [client libs](https://docs.tardis.dev/api/quickstart) function args).
* symbols of recorded instruments/currency pairs
* incidents - describing periods where due to internal errors data has been missing for given exchange

Some exchanges encode requested symbol in channel name, e.g.: Deribit `trades.BTC-PERPETUAL.100ms` channel. This is not the case with our API as we always consider channel name and symbol to be separate inputs. In case of Deribit example channel name would be `trades` and symbol `BTC-PERPETUAL`. If channel provides option of frequency of updates (e.g.: 100ms vs raw tick by tick) always higher frequency one is being chosen and recorded.

{% hint style="info" %}
[What is the channel field used in the HTTP API and client libs replay functions?](https://docs.tardis.dev/faq/data#what-is-the-channel-field-used-in-the-http-api-and-client-libs-replay-functions)
{% endhint %}

## Market data collection overview

* All market data collection is being performed on one of the highly available [Google Cloud Platform Kubernetes Clusters](https://cloud.google.com/kubernetes-engine/) - London, UK (europe-west2 region) or Tokyo, Japan (asia-northeast1 region) - information which data center location is used for particular exchange is described on exchange historical data details page.
* When exchange provides choice of real-time data frequency for specific data types (e.g. order book data ) always most granular, non aggregated data feed is being collected.
* Choice if single or multiple WebSocket connections are being used to record full real-time data feed is made on case by case basis - we take into account exchange API limits and latency which may be higher or lower if single connection is being used - detailed information which strategy is used for particular exchange is described on exchange historical data details page.
* WebSocket connection is dynamically re-subscribed (or restarted for some exchanges) at 00:00 UTC every day in order to receive [initial order book snapshots](#collected-order-book-data-details).
* Each received message is timestamped with 100ns precision using [synchronized clock](https://developers.google.com/time) at arrival time and stored in ISO 8601 format.
* Messages provided by exchanges' WebSocket feeds are being stored without any modifications.
* Checks for new instruments available on a given exchange are performed every minute.
* Market data collection services are being constantly monitored both manually and via automated tools (monitoring, alert notifications) and have built-in self-healing capabilities. We also constantly monitor for upcoming exchanges' API changes and adapt to those beforehand.
* There are multiple built-in checks that detect whether a connection to an exchange is healthy during the data collection process, such as:
  * validating subscription responses - if an exchange does not confirm subscriptions within 20 seconds, the connection is restarted
  * [Heartbeat pings](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#Pings_and_Pongs_The_Heartbeat_of_WebSockets)
  * order book sequence number validation for exchanges that provide those
  * validating JSON format as in some unusual circumstances exchanges return data that is invalid JSON
  * stale connection detection - if there are no responses received within a certain period (adjusted per exchange), it's most likely a stale connection that is automatically restarted
  * detection of an unusually low message count from an exchange in a given time period, which likely means the connection is not healthy, e.g. receiving only 'pings' without data messages
  * and many more
* Any incident that is caused by us (bugs, network errors etc.) is being logged and available [via API](https://docs.tardis.dev/api/http-api-reference#exchanges-exchange).
* New market data delay is 6 minutes in relation to real-time (`T - 6min`).

## Collected order book data details

Historical market data available via [HTTP API](https://docs.tardis.dev/api/http-api-reference#data-feeds-exchange) provides order book snapshots at the beginning of each day (00:00 UTC) and every time a WebSocket connection has been closed while recording real-time data feeds (the connection is restarted and a new snapshot is provided via a fresh connection). This means that to be sure to receive initial order book snapshots, one must replay historical data from 00:00 UTC of that day. It also means there is a tiny **gap in historical data** (around `300-3000ms`, depending on the exchange) during re-subscription to real-time WebSocket feeds (every 24 hours) to receive order book snapshots.

Some exchanges do not provide initial order book snapshots when subscribing to WebSocket real-time feeds (like Binance, Bitstamp or Coinbase Exchange full order book), hence for those there is a 'generated' snapshot available instead (based on REST API call) - details are specific for each exchange and are described in per-exchange historical details pages.

## Per-exchange historical data details

{% hint style="info" %}
Click any exchange below to see its historical data details - available instruments, captured [real-time channels](https://docs.tardis.dev/faq/data#what-is-the-channel-field-used-in-the-http-api-and-client-libs-replay-functions), API access details and market data collection specifics.
{% endhint %}

* [Binance USDS-M Futures](https://docs.tardis.dev/historical-data-details/binance-futures)
* [Binance COIN Futures](https://docs.tardis.dev/historical-data-details/binance-delivery)
* [Binance European Options](https://docs.tardis.dev/historical-data-details/binance-european-options)
* [Binance Spot](https://docs.tardis.dev/historical-data-details/binance)
* [Binance US](https://docs.tardis.dev/historical-data-details/binance-us)
* [OKX Futures](https://docs.tardis.dev/historical-data-details/okex-futures)
* [OKX Swap](https://docs.tardis.dev/historical-data-details/okex-swap)
* [OKX Options](https://docs.tardis.dev/historical-data-details/okex-options)
* [OKX Spot](https://docs.tardis.dev/historical-data-details/okex)
* [OKX Nitro Spreads](https://docs.tardis.dev/historical-data-details/okex-spreads)
* [Bybit Derivatives](https://docs.tardis.dev/historical-data-details/bybit)
* [Bybit Spot](https://docs.tardis.dev/historical-data-details/bybit-spot)
* [Bybit Options](https://docs.tardis.dev/historical-data-details/bybit-options)
* [BitMEX](https://docs.tardis.dev/historical-data-details/bitmex)
* [Deribit](https://docs.tardis.dev/historical-data-details/deribit)
* [Hyperliquid](https://docs.tardis.dev/historical-data-details/hyperliquid)
* [Lighter](https://docs.tardis.dev/historical-data-details/lighter)
* [HTX Coin-M Futures](https://docs.tardis.dev/historical-data-details/huobi-dm)
* [HTX Coin-M Perpetual](https://docs.tardis.dev/historical-data-details/huobi-dm-swap)
* [HTX USDT-M Contracts](https://docs.tardis.dev/historical-data-details/huobi-dm-linear-swap)
* [HTX Spot](https://docs.tardis.dev/historical-data-details/huobi)
* [Coinbase Exchange](https://docs.tardis.dev/historical-data-details/coinbase)
* [Coinbase International](https://docs.tardis.dev/historical-data-details/coinbase-international)
* [Kraken Futures](https://docs.tardis.dev/historical-data-details/cryptofacilities)
* [Kraken](https://docs.tardis.dev/historical-data-details/kraken)
* [Bitfinex Derivatives](https://docs.tardis.dev/historical-data-details/bitfinex-derivatives)
* [Bitfinex](https://docs.tardis.dev/historical-data-details/bitfinex)
* [dYdX v4](https://docs.tardis.dev/historical-data-details/dydx-v4)
* [Gate.io Futures](https://docs.tardis.dev/historical-data-details/gate-io-futures)
* [Gate.io](https://docs.tardis.dev/historical-data-details/gate-io)
* [Bitget Futures](https://docs.tardis.dev/historical-data-details/bitget-futures)
* [Bitget Spot](https://docs.tardis.dev/historical-data-details/bitget)
* [KuCoin Futures](https://docs.tardis.dev/historical-data-details/kucoin-futures)
* [KuCoin Spot](https://docs.tardis.dev/historical-data-details/kucoin)
* [Crypto.com](https://docs.tardis.dev/historical-data-details/crypto-com)
* [Bitstamp](https://docs.tardis.dev/historical-data-details/bitstamp)
* [Gemini](https://docs.tardis.dev/historical-data-details/gemini)
* [WOO X](https://docs.tardis.dev/historical-data-details/woo-x)
* [Upbit](https://docs.tardis.dev/historical-data-details/upbit)
* [Phemex](https://docs.tardis.dev/historical-data-details/phemex)
* [Delta Exchange](https://docs.tardis.dev/historical-data-details/delta)
* [AscendEX (BitMax)](https://docs.tardis.dev/historical-data-details/ascendex)
* [Blockchain.com](https://docs.tardis.dev/historical-data-details/blockchain-com)
* [Bitnomial](https://docs.tardis.dev/historical-data-details/bitnomial)
* [bitFlyer](https://docs.tardis.dev/historical-data-details/bitflyer)
* [HitBTC](https://docs.tardis.dev/historical-data-details/hitbtc)
* [Poloniex](https://docs.tardis.dev/historical-data-details/poloniex)

### Delisted exchanges

* [FTX](https://docs.tardis.dev/historical-data-details/ftx)
* [FTX US](https://docs.tardis.dev/historical-data-details/ftx-us)
* [OKCoin](https://docs.tardis.dev/historical-data-details/okcoin)
* [CoinFLEX](https://docs.tardis.dev/historical-data-details/coinflex)
* [Binance Jersey](https://docs.tardis.dev/historical-data-details/binance-jersey)
* [Binance DEX](https://docs.tardis.dev/historical-data-details/binance-dex)
* [HTX Options](https://docs.tardis.dev/historical-data-details/huobi-dm-options)
* [dYdX](https://docs.tardis.dev/historical-data-details/dydx)
* [Serum DEX](https://docs.tardis.dev/historical-data-details/serum)
* [Mango Markets DEX](https://docs.tardis.dev/historical-data-details/mango)
* [Star Atlas DEX](https://docs.tardis.dev/historical-data-details/star-atlas)


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tardis.dev/historical-data-details/overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
