Cryptocurrency Order Books

historical cryptocurrency OHLCV data Kaiko

Order Book Snapshots

Limit order book snapshots taken twice per minute, including all bids/asks placed within 10% of the midprice. 

Order Books
raw orderbook cryptocurrency data Kaiko

Tick-by-Tick Order Books

Incremental tick-level updates/deltas of all bids and asks on an order book. L3 and L2 data available for top exchanges.

Tick Order Books
VWAP cryptocurrency historical data Kaiko

Liquidity Measures

Market depth, bid/ask spread, price slippage calculator, and aggregated order books averaged over time intervals (1 min.- 1day).

Liquidity Measures

Cryptocurrency Order Book Snapshots

An order book is a list containing all outstanding buy or sell orders for an asset, organized by price level. An order to buy is called a ‘bid’ and an order to sell is called an ‘ask’. The exchange’s matching engine pairs up bids and asks with market buy/sell orders, resulting in a trade. Kaiko provides level 2 order book snapshots, aggregated by price level, for 20,000 currency pairs across 85+ exchanges. 

We take two order book snapshots per minute for all instruments and exchanges that we cover. Our order book snapshots include all bids and asks placed within 10% of the midprice, at the time the snapshot was taken.  

We provide cryptocurrency order books for more than 85 exchanges, including Bitmex, Coinbase, Binance, Gemini, Bitflyer, Bitinex, Deribit, and Okex, and 20,000 currency pairs, including assets such as Bitcoin, Ethereum, Litecoin, and XRP. You can browse our full coverage here.

VariableDescription                  
DateEpoch timestamp in milliseconds. You can learn more about timestamps, including how to convert them to human readable form, here
Typea = ask, b = bid. An ask is an order placed to sell, a bid to buy. 
PriceDisplayed in the quote currency
AmountQuantity of asset to buy or sell, displayed in the base currency
Exchange / InstrumentDate                  Download
Bitmex - XBT/USDOctober 16, 2019
Link
Kraken - BTC/USDSeptember 1, 2019Link
Coinbase - BTC/USDSeptember 1, 2019Link
Delivery ChannelOrder Book Availability                  
Flat File Data Feed
All historical data and weekly .csv file updates
REST API2 weeks historical data and real-time snapshot updates
WebSocket(in development)

Crypto Order Book Features

✓ Historical limit order books (LOB) for dozens of crypto exchanges.

✓ Normalized order book history since 2015.

✓ Top derivatives exchanges: Bitmex order books, Deribit order books, Huobi order books, Okex order books and more.

✓ Top spot crypto exchanges: Binance order books, Coinbase (ex-GDAX) order books, Gemini order books, Bitstamp order books, and more.

✓ Level 2 LOB snapshots, taken twice per minute, including all bids and asks within 10% of the midprice.
 
✓ Historical CSV files for all order book snapshots, delivered to AWS S3 or Google Cloud Platform storage services. 

✓ Aggregated Level 2 "market-by-price" order book snapshots available now.

✓ Top of the book quotes and bid/ask spread available through our REST API.

✓ All order book snapshots timestamped with millisecond precision.

✓ Order book market depth, ranging from .1% to 10%, available through our REST API.

✓ Bitcoin (BTC) order books across thousands of currency pairs, including BTC/USD, ETH/USD, XRP/USD, LTC/USD order books. .

✓ Average order book depth, average spread, and price slippage calculator available through our REST API. 

Historical Cryptocurrency Data Coverage

Spot Exchanges:  80+ 

Bitfinex Cryptocurrency API bitcoin ethereum order books
Binance Cryptocurrency API
Coinbase Cryptocurrency API bitcoin ethereum order books
Bitstamp Cryptocurrency API bitcoin ethereum order books
Huobi historical Cryptocurrency data trades order books
Gemini Cryptocurrency API bitcoin ethereum order books
Kraken Cryptocurrency API bitcoin ethereum order books
Poloniex Cryptocurrency API bitcoin ethereum order books
Bitforex Cryptocurrency API bitcoin ethereum order books
Bitforex Cryptocurrency API bitcoin ethereum order books
Bittrex Cryptocurrency API bitcoin ethereum order books
Bithumb Cryptocurrency API bitcoin ethereum order books

Derivatives Exchanges:  10+

Deribit Cryptocurrency Exchange Market Data
FTX cryptocurrency market data historical data
HuobiDM cryptocurrency market data historical data
Bitmex historiacl market data Cryptocurrency API bitcoin ethereum order books
Okex Cryptocurrency API bitcoin ethereum order books
Binance Futures historical cryptocurrency data
Kraken Futures Cryptocurrency API bitcoin ethereum order books
Bitflyer Cryptocurrency API bitcoin ethereum order books
Coinflex Cryptocurrency historical dataAPI bitcoin ethereum order books
Bybit Cryptocurrency API bitcoin ethereum order books

Crypto Order Book Use Cases

✓ Alpha-generating data streams for quant funds, data scientists, researchers, hedge funds, and market makers.

✓ Identify market-making opportunities and fine-tune your liquidity-providing strategies.

✓ Simulate price slippage with our automatic price slippage calculator for custom input order sizes.

✓ Reconstruct the state of thousands of markets with historical LOB data. 

✓ Study market depth across dozens of Bitcoin exchanges to identify liquid markets. 

✓ Access normalized and standardized data feeds without having to normalize the data yourself. 
 
✓ Backtest your trading strategy and develop high-value quantitative strategies with historical crypto order book data.

✓ Study average historical trends using our average order book depth and spread data. 

Additional Information

Detailed Methodology
What is a 10% Snapshot?
What happens when an exchange doesn't provide the full order book?
Is there a way to match executed trades to the bids/asks in the order book?
Why are there barely any bids/asks for some snapshots?
Can you backfill historical order books?

Tick-by-Tick Order Books

Cryptocurrency Market Data API

Our tick-by-tick order book data sets are the most granular and comprehensive order book data in the industry. We collect every incremental update or "delta" to the order book as they happen in real-time, and we store this data in rows. This includes every added, changed or removed bid and ask, the price level, amount, and the corresponding timestamp or sequence ID.

The first version of our tick-level order book product comprises Level 3 (L3) data collected from three top exchanges: Coinbase, Bitstamp, and Bitfinex. L3 data includes every individual bid and ask changed, added, or removed from an order book, non-aggregated. We will soon begin collection for Level 2 order books (orders aggregated by price level). However, we are able to provide historical backfills of order book data for select exchanges, at L2 precision. Email us if you are interested.

Each tick-level order book data set comes with an additional file of corresponding order book snapshots, taken once per hour. These snapshots can be used for full limit order book reconstruction of historical market states. This data is not normalized, but stored in raw exchange-native json format.

L3 Tick-by-tick Order Book Data Format

Order Book Snapshot Data Format

Order book data is pulled from the Coinbase WebSocket 'Full' Channel (link to Coinbase documentation here). The full channel provides real-time updates on orders and trades, which we store in rows. These updates can be applied to a L3 order book snapshot to re-build historical market states, which we collect through Coinbase's REST API and store in a separate file. Coinbase's documentation details an algorithm for recreating order books using sequence numbers.

Coinbase data is formatted to include 6 different order types: received, open, done, match, change, and activate. Explanations for these are included in their documentation, and should inform how you reconstruct the order books. Depending on the order type, you can "add" or "subtract" bids and asks to your reconstructed book.

We currently support btc/usd and eth/usd L3 data from Coinbase.

VariableDescription                  
Kaiko TimestampEpoch timestamp in milliseconds recording when we received the individual data packet. You can learn more about timestamps, including how to convert them to human readable form, here
JSON Response
The raw response received from Coinbase's WebSocket channel. There are several uniform fields across all order types including: "type", "side", "product-ID", "time" and "sequence". The other fields differ slightly depending on the order type. 
(JSON Response Broken Down, Only Uniform Fields): Type
The order type (either 'Received,' 'Done,' 'Open,' 'Match,' 'Change' or 'Activate)
Product ID
The currency pair, ex. BTC-USD
Side
Either 'Buy' or 'Sell', referring to both bids/asks updated to the order book or the trade, depending on the order type.
TimeThe time of the event.
SequenceThe sequence ID, to be used in reconstruction of order book states.

Data preview for BTC/USD on Coinbase, May 21 2020. 

Order book data is pulled from the Bitstamp WebSocket 'Live Orders' channel (link to Bitstamp documentation here). The live orders channel provides all created, changed or deleted orders to the order book. This information can be used to update an existing order book snapshot, which we provide stored in separate files. This data is un-aggregated, and represents every changed, created, or deleted order, and the corresponding timestamp. 

We store in rows each raw data packet received from the channel, and the corresponding Kaiko timestamp. 

Bitstamp data is formatted to include 3 different order types: order_deleted, order_changed, and order_created. Depending on the order type, you can "add" or "subtract" bids and asks to your reconstructed book. 

We currently support btc/usd and eth/usd L3 data from Bitstamp.

VariableDescription                  
Kaiko TimestampEpoch timestamp in milliseconds recording when we received the individual data packet. You can learn more about timestamps, including how to convert them to human readable form, here
JSON Response
The raw response received from Bitstamp's WebSocket channel. Fields are uniform across all order types
(JSON Response Broken Down):ID
The unique order ID
Order type
Either '1' or '0', 0 = bid, 1 = ask.
Datetime
Order action timestamp.
MicrosecondOrder action timestamp.
AmountAmount of order. 
Price
Price of order. (price level to be updated)
ChannelWebSocket channel and currency pair.
EventEither "order_deleted," "order_changed", or "order_created"

Data preview for BTC/USD on Bitstamp, May 22 2020. 

Order book data is pulled from Bitfinex's 'Raw Book' WebSocket channel (link to Bitfinex documentationhere). The data is requested at R0 precision, meaning every individual order is received as they are updated or removed from the order book.

This information can be used to update an existing order book snapshot, which we provide stored in separate files. The identification number of each individual order can be used to add, update, or remove orders from an internally maintained order book. 

We store Bitfinex data in rows containing each raw data packet received from the channel, and the corresponding Kaiko timestamp. Bitfinex data is not separated by order type. Rather, each individual row represents a change to the order book determined by the order identification number. Any change to an order, order removed, or order added would be indicated by the same order ID and a change to the price or amount. For example, if an order is updated, the same order ID would be sent but with a different price or amount. If the price is '0', this indicates the order with the given identification number is to be removed from the order book. If order amount > 0, then the order is a bid and if <0, the order is an ask. 

Bitfinex provides internal sequence IDs (per connection) and millisecond timestamps which we collect to help with order book reconstruction.

We currently supportbtc/usd andeth/usd L3 data from Bitfinex. 

VariableDescription                  
Kaiko TimestampEpoch timestamp in milliseconds recording when we received the individual data packet. You can learn more about timestamps, including how to convert them to human readable form, here
JSON Response
The raw response received from Bitfinex's WebSocket channel. Fields are uniform across all order types
(JSON Response Broken Down):Channel ID
Identification number assigned to the channel for the duration of the connection.

Order ID
Identification number of the order.

Price
Order price; if 0 you have to remove the order from your book

±Amount 
Amount of order. If > 0 bid, else ask 
Sequence ID
The sequence ID assigned to individual updates since the beginning of the connection. 
Timestamp
Millisecond timestamp provided by Bitfinex, accompanied with each update. 

Data preview for BTC/USD on Bitfinex, May 20, 2020. The first number is the timestamp, the second is the channel ID, and the third is the order ID. The other numbers are simply the price and the order amount to be updated, per order type. 

Additional Information

Detailed Methodology
How can this data be used by traders?
How big are L3 order book files?
What is the difference between L2 and L3 data?
Will you provide tick order book data for more exchanges?
Do you provide more history for tick-by-tick order books?

Liquidity Measures: Market Depth, Slippage, and Spread


We offer an entire suite of order book API endpoints for traders and researchers, built using our order book snapshots. Through these endpoints, we offer several derivations of order book data:  market depth, slippage, spread, and averages of these measures over time intervals ranging from 1 minute to 1 day. Below, we include links to detailed posts about the products and include short descriptions of the data types.  

Order Book Snapshots: Full

This endpoint gives access to two weeks of historical 10% order book snapshots. The full endpoint returns all the following order book data: the snapshot itself (bids and asks), the depth of the order book (the cumulative volume of the base asset at 0.1%, 0.2%, 0.3%, 0.4%, 0.5%, 0.6%, 0.7%, 0.8%, 0.9%, 1%, 1.5%, 2%, 4%, 6%, 8% and 10% from the mid price), the spread, the mid price and, when the slippage parameter is not empty, the percentage of slippage for a given order size, either calculated from the best bid/ask or calculated from the mid price. 

Order Book Aggregations: Full

This endpoint gives access to two weeks of historical 10% order book aggregated data, averaged over a specified time interval ranging from 1 minute to 1 day. It returns metrics on the average depth of the order book (the cumulative volume of the base asset at 0.1%, 0.2%, 0.3%, 0.4%, 0.5%, 0.6%, 0.7%, 0.8%, 0.9%, 1%, 1.5%, 2%, 4%, 6%, 8% and 10% from the mid price), the average spread, the average mid price and, when the slippage parameter is not empty, the average percentage of slippage for a given order size, either calculated from the best bid/ask or calculated from the mid price for a given time interval. For each interval, the aggregates are calculated by taking the average metrics of each snapshot within that interval. For example, the aggregated 1 hour spread is calculated by taking all spreads of each snapshot within an hour and calculating the average. All data is returned in descending order.

VariableDescription                  
Bid_volume_xThe volume of bids placed within 0 and x% of the midprice. For example, bid_volume0_1 includes the sum of bids placed within 0 and .1% of the midprice. Bid_volume_10 would include the cumulative sum of all bids placed within 10% of the midprice. 
Ask_volume_xThe volume of asks placed within 0 and x% of the midprice. For example, ask_volume0_1 includes the sum of bids placed within 0 and .1% of the midprice. Ask_volume_10 would include the cumulative sum of all bids placed within 10% of the midprice. 

Market depth for btc/usd on Coinbase. The depth is cumulative, and refers to the number of the base asset (in this case, BTC) at each price level ranging from .1% to 10% of the mideprice

VariableDescription                  
Bid_slippageThe percentage price slippage for a market sell order placed at the time that the order book snapshot was taken. The percentage is calculated by running the order size you specify through every bid on the order book until the order has been filled. For example, if you specify $100,000 as the order size you want to simulate, the calculation will fill this simulated sell order with all bids on the order book, and return a percentage in decimal form that represents the difference in price from either the midprice or best bid. The difference in price is calculated from the the midprice (or price level at the best bid) at the time the order book snapshot was taken and the last price level required to fully fill the simulated order.
Ask_slippageThe percentage price slippage for a market buy order placed at the time that the order book snapshot was taken. The percentage is calculated by running the order size you specify through every ask on the order book until the order has been filled. For example, if you specify $100,000 as the order size you want to simulate, the calculation will fill this simulated buy order with all asks on the order book, and return a percentage in decimal form that represents the difference in price from either the midprice or best bid. The difference in price is calculated from the the midprice (or price level at the best bid) at the time the order book snapshot was taken and the last price level required to fully fill the simulated order.

Price slippage for a $100,000 market order for btc/usd on Coinbase. You can include custom order sizes as a parameter. The timestamp refers to the time of the snapshot at which the slippage was calculated. The ask slippage and bid slippage correspond with whether the market order was a buy (ask slippage) or a sell (bid slippage).

VariableDescription                  
Poll_dateThe date at which the raw data snapshot was taken, or if using the 'Aggregations' endpoint, the date at which the time interval begins.
Bid_slippageThe percentage price slippage for a market buy order placed at the time that the order book snapshot was taken, or if using the 'Aggregations' endpoint, the average ask slippage over the time interval specified.
Ask_slippage
The percentage price slippage for a market buy order placed at the time that the order book snapshot was taken, or if using the 'Aggregations' endpoint, the average ask slippage over the time interval specified.
Bid_volume_xThe volume of bids placed within 0 and x% of the midprice. If using the 'Aggregations' endpoint, the average bid_volume over the time interval specified.
Ask_volume_xThe volume of asks placed within 0 and x% of the midprice. If using the 'Aggregations' endpoint, the average ask_volume over the time interval specified.
SpreadThe difference between the best bid and the best ask at the time the snapshot was taken, or if using the 'Aggregations' endpoint, the average spread over the time interval specified.
Mid_price
The mid price between the best bid and the best ask. If using the 'Aggregations' endpoint, the average mid price over the time interval specified.

All liquidity measures, calculated from either the raw snapshot, or averaged across multiple snapshots over time, depending on the endpoint requested.

Interested in Our Cryptocurrency Order Books?  

We can set up a free trial of our full data services or provide a custom price quote if you let us know a bit more about your data requirements.

Which currency pair(s)?

BTC/USD? ETH/USD?

On which exchange(s)?

Coinbase? Binance? Bitmex? Deribit? 

What data type(s)?

Trades? Order books? OHLCV? Exchange rates?

Historical or live?

Full historical access with real-time updates? Just 1 year of data? Only live updates? 

Kaiko's Research Factsheet