Getting Started

Welcome to developer documentation. There are four main ways of accessing our market data API:

  • Locally installable tardis-machine server with built-in local caching, providing both streaming HTTP and WebSocket endpoints that can be consumed from any programming language supporting those protocols. It's available via NPM or as a Docker Image

  • Node.js tardis-dev library providing fast and convenient access to tick-level historical and real-time cryptocurrency market data both in exchange native and normalized formats

  • Python tardis-client providing high level and developer friendly data access API abstracting more low level HTTP API with local file based caching build in (requires Python 3.7.0+)

  • HTTP API - low level API providing historical data in minute by minute slices

Recording and storing market data

  • All market data collection is being done on highly available Google Cloud Platform Kubernetes cluster in London region.

  • Local timestamp recorded for each market message has 100ns precision and is being stored in ISO 8601 format.

  • All exchanges data recorders use the same synchronized clock ensuring reliable local timestamps.

  • Collected historical market data is being stored in parallel in two separate geo-distributed storage providers and being served via global CDN.

  • New market data delay is 4 minutes in relation to real-time (T - 4min).

  • Each WebSocket connection that is used to collect real-time market data has 3 seconds keep alive timeout specified in order to detect stale and closed connection as soon as possible.

  • Additionally in case there is no market data received for more that 6 seconds for open WebSocket connection, such connection is closed and restarted.

Order book data

Order book data is provided in exactly the same format as exchange's WebSocket real-time stream messages, meaning that there is an full order book snapshot just after successful subscription and order book's delta updates after that initial snapshot.

Historical market data available via API provides order book snapshots at the beginning of each day (00:00:000 UTC) and anytime exchange restarted it's connection when recording real-time data stream. It means that in order to be sure to receive initial order book snapshots one must replay historical data from 00:00:000 UTC time of the day, it also means that there is a very tiny gap in historical data (around 50-300ms range depending on exchange) during re-subscribing to exchange's real-time WebSocket stream (every 24 hours).

Some exchanges do not provide initial order book snapshots when consuming WebSocket real-time stream (like Binance, Bitstamp or Coinbase Pro full order book), hence for such exchanges there is a 'generated' order book snapshot available instead, details are specific for each exchange and can be found in historical data details section.