L1 / top of book
Best bid and best ask only. Derive this view after replaying the L2 snapshots and deltas; ticker statistics are not a substitute for quotes.
L2 Order Book Dataset
Normalized snapshots and deltas from major spot and derivatives venues, packaged as hourly Parquet/Zstd files for research and backtesting.
The sample is one real hourly Parquet/Zstd file. No API key is required on the rate-limited free tier; file size varies with venue, symbol, and market activity.
Dataset fit
This landing page is for coverage, schema, sample files, and downloads. Use the SDK docs for method parameters and the reconstruction tutorial for replay logic.
Best bid and best ask only. Derive this view after replaying the L2 snapshots and deltas; ticker statistics are not a substitute for quotes.
This dataset. It records aggregate quantity at each visible price level so you can measure spread, depth, and imbalance.
Not provided. L2 cannot reveal queue position or how many individual orders make up a level unless the venue publishes an order count.
Coverage
Coverage is organized by exchange, market type, and hourly object path. Live symbol counts are shown when the symbols API responds during page generation.
| Venue | Exchange ID | Market | History start | Order book symbols |
|---|---|---|---|---|
| Binance Futures | binance_futures | Futures | 2025-06-28 | 871 |
| Binance Spot | binance_spot | Spot | 2025-06-28 | 2,016 |
| Bybit Futures | bybit | Futures | 2025-06-28 | 1,427 |
| Bybit Spot | bybit_spot | Spot | 2025-06-28 | 828 |
| OKX Futures | okx_futures | Futures | 2025-06-28 | 600 |
| OKX Spot | okx_spot | Spot | 2025-06-28 | 1,571 |
| Bitget Futures | bitget_futures | Futures | 2025-07-15 | 1,127 |
| Bitget Spot | bitget_spot | Spot | 2025-07-15 | 1,123 |
| Kraken Futures | kraken_derivatives | Futures | 2025-06-28 | 620 |
| Kraken Spot | kraken_spot | Spot | 2025-06-28 | 1,658 |
| Hyperliquid Futures | hyperliquid_futures | Perpetuals | 2025-09-29 | 432 |
| Hyperliquid Spot | hyperliquid_spot | Spot | 2025-09-29 | 335 |
| Aster Futures | aster_futures | Futures | 2025-09-29 | 618 |
| BitMEX | bitmex | Futures | 2025-09-29 | 156 |
| Lighter Perpetuals | lighter | Perpetuals | 2025-12-30 | 229 |
Venue pages
Use an exchange-specific page for venue and market coverage, its verified history start, a representative file path, and a focused sample.
Binance Order Book Dataset
Bybit Order Book Dataset
OKX Order Book Dataset
Hyperliquid Order Book Dataset
Aster Order Book Dataset
Bitget Order Book Dataset
Kraken Order Book Dataset
BitMEX Order Book Dataset
Lighter Order Book Dataset
Schema
Every row represents one bid or ask price level inside a snapshot or incremental update. Rows carry exchange timing, sequence fields when available, price, quantity, and event type.
| Field | Type | Nullable | Description |
|---|---|---|---|
| received_time | INT64 | No | Unix timestamp (nanoseconds) when our system received the event |
| event_time | INT64 | No | Unix timestamp (exchange dependent on timescale) when the exchange generated the event |
| transaction_time | INT64 | Yes | Exchange-specific transaction timestamp (when available) |
| symbol | STRING | No | Trading pair symbol (e.g., "BTCUSDT") |
| event_type | STRING | No | Type of orderbook event ("snapshot" or "update") |
| first_update_id | INT64 | Yes | First update ID in the update sequence |
| final_update_id | INT64 | Yes | Final update ID in the update sequence |
| prev_final_update_id | INT64 | Yes | Previous final update ID (for gap detection) |
| last_update_id | INT64 | Yes | Last update ID processed by the exchange |
| side | STRING | No | Order book side ("bid" or "ask") |
| price | STRING | No | Price level (stored as string for precision) |
| quantity | STRING | No | Quantity at price level (stored as string for precision) |
| order_count | INT64 | Yes | Number of orders at this price level (when available from exchange) |
Access
The sample below downloads BTCUSDT from Binance Futures for 2026-09-02, hour 12. The REST example uses the rate-limited free tier; replace YOUR_API_KEY for authenticated SDK access and higher limits.
import cryptohftdata as chd
client = chd.CryptoHFTDataClient(api_key="YOUR_API_KEY")
df = client.get_orderbook(
symbol="BTCUSDT",
exchange=chd.exchanges.BINANCE_FUTURES,
start_date="2026-09-02",
end_date="2026-09-02",
)
print(df.head())
print(f"Order book rows: {len(df):,}")curl --fail --location \
"https://api.cryptohftdata.com/download?file=binance_futures/2026-09-02/12/BTCUSDT_orderbook.parquet" \
-o BTCUSDT_orderbook_12.parquetCaveats
These details are important for accurate backtests, replay pipelines, and microstructure features.
L2 order book data is aggregated by price level, not individual L3 orders.
Files contain snapshots plus incremental updates. Build state from a complete snapshot, apply later events in stored order, and reset whenever another snapshot appears.
Sequence fields vary by venue. If available continuity IDs show a gap, discard the local book and wait for a newer snapshot rather than replaying a state you cannot verify.
This page starts on 2025-06-28 based on the earliest stored hourly files for its covered exchange IDs and grows as new hourly files are published.
Next
Validate the free sample first. Then use an API key for larger downloads and move between the SDK reference, tutorial, and data explorer as needed.