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-28672
Binance Spotbinance_spotSpot2025-06-281,970
Bybit FuturesbybitFutures2025-06-281,246
Bybit Spotbybit_spotSpot2025-06-28826
OKX Futuresokx_futuresFutures2025-06-28536
OKX Spotokx_spotSpot2025-06-281,451
Bitget Futuresbitget_futuresFutures2025-07-151,043
Bitget Spotbitget_spotSpot2025-07-151,081
Kraken Futureskraken_derivativesFutures2025-06-28554
Kraken Spotkraken_spotSpot2025-06-281,617
Hyperliquid Futureshyperliquid_futuresPerpetuals2025-09-29384
Hyperliquid Spothyperliquid_spotSpot2025-09-29308
Aster Futuresaster_futuresFutures2025-09-29550
BitMEXbitmexFutures2025-09-29150
Lighter PerpetualslighterPerpetuals2025-12-30212

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.