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.

VenueExchange IDMarketHistory startTrade symbols
Binance Futuresbinance_futuresFutures2025-06-28660
Binance Spotbinance_spotSpot2025-06-281,903
Bybit FuturesbybitFutures2025-06-281,112
Bybit Spotbybit_spotSpot2025-06-28815
OKX Futuresokx_futuresFutures2025-06-28476
OKX Spotokx_spotSpot2025-06-281,374
Bitget Futuresbitget_futuresFutures2025-07-15940
Bitget Spotbitget_spotSpot2025-07-151,027
Kraken Futureskraken_derivativesFutures2025-06-28537
Kraken Spotkraken_spotSpot2025-06-281,602
Hyperliquid Futureshyperliquid_futuresPerpetuals2025-09-29359
Hyperliquid Spothyperliquid_spotSpot2025-09-29295
Aster Futuresaster_futuresFutures2025-09-29495
BitMEXbitmexFutures2025-09-29146
Lighter PerpetualslighterPerpetuals2025-12-30196

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.

FieldTypeNullableDescription
received_timeINT64NoUnix timestamp (nanoseconds) when our system received the trade event
event_timeINT64NoUnix timestamp (exchange dependent on timescale) when the exchange generated the event
symbolSTRINGNoTrading pair symbol (e.g., 'BTCUSDT')
trade_idINT64NoExchange-specific unique trade identifier
priceSTRINGNoTrade execution price (stored as string for precision)
quantitySTRINGNoTrade quantity/volume (stored as string for precision)
trade_timeINT64NoUnix timestamp (exchange dependent on timescale) when the trade occurred
is_buyer_makerBOOLEANNoTrue if buyer was the maker (passive side), false if taker
order_typeSTRINGNoType 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.

Python SDK
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):,}")
REST API
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.zst

Caveats

What this data is and is not

These details are important for accurate backtests, replay pipelines, and microstructure features.

Each row is a public trade print as published by the exchange; trade ID semantics and aggregation behavior vary by venue.

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.