Each row is a public trade print as published by the exchange; trade ID semantics and aggregation behavior vary by venue.
Tick Trade Dataset
Historical Crypto Trade Data
Tick-level trade prints from major spot and derivatives venues, normalized into one schema and packaged as hourly Parquet/Zstd files.
Coverage
Trade data 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 | Trade symbols |
|---|---|---|---|---|
| Binance Futures | binance_futures | Futures | 2025-06-28 | 660 |
| Binance Spot | binance_spot | Spot | 2025-06-28 | 1,903 |
| Bybit Futures | bybit | Futures | 2025-06-28 | 1,112 |
| Bybit Spot | bybit_spot | Spot | 2025-06-28 | 815 |
| OKX Futures | okx_futures | Futures | 2025-06-28 | 476 |
| OKX Spot | okx_spot | Spot | 2025-06-28 | 1,374 |
| Bitget Futures | bitget_futures | Futures | 2025-07-15 | 940 |
| Bitget Spot | bitget_spot | Spot | 2025-07-15 | 1,027 |
| Kraken Futures | kraken_derivatives | Futures | 2025-06-28 | 537 |
| Kraken Spot | kraken_spot | Spot | 2025-06-28 | 1,602 |
| Hyperliquid Futures | hyperliquid_futures | Perpetuals | 2025-09-29 | 359 |
| Hyperliquid Spot | hyperliquid_spot | Spot | 2025-09-29 | 295 |
| Aster Futures | aster_futures | Futures | 2025-09-29 | 495 |
| BitMEX | bitmex | Futures | 2025-09-29 | 146 |
| Lighter Perpetuals | lighter | Perpetuals | 2025-12-30 | 196 |
Schema
Normalized trade schema
Every trade row is a tick-level execution with exchange timing, trade ID, price, quantity, maker/taker direction, and order type.
| Field | Type | Nullable | Description |
|---|---|---|---|
| received_time | INT64 | No | Unix timestamp (nanoseconds) when our system received the trade event |
| event_time | INT64 | No | Unix timestamp (exchange dependent on timescale) when the exchange generated the event |
| symbol | STRING | No | Trading pair symbol (e.g., 'BTCUSDT') |
| trade_id | INT64 | No | Exchange-specific unique trade identifier |
| price | STRING | No | Trade execution price (stored as string for precision) |
| quantity | STRING | No | Trade quantity/volume (stored as string for precision) |
| trade_time | INT64 | No | Unix timestamp (exchange dependent on timescale) when the trade occurred |
| is_buyer_maker | BOOLEAN | No | True if buyer was the maker (passive side), false if taker |
| order_type | STRING | No | Type of order that generated this trade (e.g., "LIMIT", "MARKET") |
Access
Download with Python or REST
The sample below downloads BTCUSDT from Binance Futures for 2025-08-01, hour 20.
import cryptohftdata as chd
client = chd.CryptoHFTDataClient(api_key="your-api-key-here")
df = client.get_trades(
symbol="BTCUSDT",
exchange=chd.exchanges.BINANCE_FUTURES,
start_date="2025-08-01",
end_date="2025-08-01",
)
print(df.head())
print(f"Trades: {len(df):,}")curl "https://api.cryptohftdata.com/download?file=binance_futures/2025-08-01/20/BTCUSDT_trades.parquet.zst&api_key=your-api-key-here" \
-o BTCUSDT_trades_20.parquet.zstCaveats
What this data is and is not
These details are important for accurate backtests, replay pipelines, and microstructure features.
Prices and quantities are stored as strings to preserve exchange precision; cast to decimals or floats as needed.
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
Use the trade data
Start with an API key, then move between docs, tutorials, and the browser data explorer as needed.