Trades Data
Trade data contains the public trades that each exchange publishes. The data includes timestamps, prices, quantities, and market direction. On most venues, each row is one execution. For exceptions, refer to the venue notes below.
Download Trade Data
Download the hourly trade data files for the trading pairs and exchanges that you select.
GET
https://api.cryptohftdata.com/v1/downloadExample: Download BTCUSDT Trades
Terminal
curl "https://api.cryptohftdata.com/v1/download?file=binance_spot/2025-08-01/20/BTCUSDT_trades.parquet&api_key=your-api-key-here" \
-o BTCUSDT_trades_20.parquetVenue-specific semantics
- OKX: Before the 2026-09 data-integrity release, OKX trades come from the
tradeschannel of the exchange. This channel aggregates fills. There is one row for each taker order at each price level.quantityis the sum of the sizes, andtrade_idis the last fill ID of the aggregate. The traded volume is complete, but the row counts and sizes are not per fill. From the release, rows come from thetrades-allchannel, with one row for each fill. We plan a per-fill repair of about the last three months of history. - OKX perpetual swaps: Sizes are in contracts. Multiply each size by the contract value of the instrument (
ctValfrom the OKX instruments endpoint, inctValCcyunits). This unit is the base coin for linear swaps, for exampleBTC-USDT-SWAP. It is USD for inverse swaps, for exampleBTC-USD-SWAP. OKX spot sizes are already in the base coin. - Binance Spot: The spot trade stream does not contain an order type. Thus,
order_typeis alwaysMARKETas a placeholder. Do not use this column. Useis_buyer_makerto find the aggressor side. - Bybit: After a reconnect, trades can include rows that we backfilled from the Bybit REST API. These rows use the same schema. We remove duplicates by trade ID. If the two copies exist, we keep the WebSocket copy.
- Lighter:
trade_idis one counter for the full exchange, and it is unique across markets. Sometimes Lighter sends a trade a second time, some seconds later. We publish only the first delivery (we corrected the history on 2026-09-30). The Lighter trade feed can also be late by seconds, and sometimes by minutes, on many markets at the same time. We put each row in the file for its arrival hour (received_time). Thus, a late trade can be in the file for the next hour. If you need a complete window, filter ontrade_timeand also load the next hour. - Hyperliquid: Before the 2026-09 data-integrity release, a trade that the exchange replayed after a reconnect could go again into the file of a later hour. This also occurred for trades from much earlier. Remove duplicates from the history on (
symbol,trade_id,trade_time). The Hyperliquidtidis unique only together with the coin and the time. We plan a repair of the published history. From the release, we do not publish replayed trades again. - BitMEX: Quantities are in raw units that are different for each instrument: XBTUSD in USD contracts, XBTUSDT in 1e-6 BTC, ETHUSDT in 1e-5 ETH, and spot pairs in 1e-8 of the base asset. Before you compare with other venues, check the multiplier of the instrument.
For missing hours, partial periods and pending corrections to published history, refer to Known Gaps & Corrections.