What crypto data do you want to download?

I want
from
for

Free historical tick data from 9 exchanges: L2 order books, trades, liquidations, funding and open interest, as hourly Parquet files.

Free, with or without an account

No account

60 files a minute

Download right now. No key and no signup. The limit applies per IP address.

Free account

Unlimited

A free API key removes the rate limit and gives you direct S3 access at full speed.

Create a free account

How we collect and standardize the data

Every exchange speaks its own dialect. We record each one as it streams, then publish all of them in one schema.

  1. Read every exchange directly

    Our collectors keep open connections to each exchange's public WebSocket feeds, with REST snapshots and polls where a venue needs them. Each message gets a received_time from our clock, in nanoseconds, the moment it arrives. The exchange's own timestamps stay next to it.

  2. Keep the whole order book

    Order books are stored as snapshots plus every delta, one row per price level, with the venue's update IDs. Where a venue sends sequence numbers, each update is checked as it arrives. A gap re-anchors the book from a fresh snapshot.

  3. Map every venue onto one schema

    Each exchange's messages become rows with one set of columns per data type, so a Binance trade and a Bybit trade look the same. Prices and sizes stay the exact strings the exchange sent. A field a venue does not send is null, never invented.

  4. Publish one Parquet file per hour

    At one minute past each UTC hour, a job converts the hour that just closed into Parquet files, one per symbol and data type, compressed with Zstandard, and publishes them.

  5. Check it, and say what is missing

    Each order book file is replayed from its snapshots and deltas and checked for sequence gaps and crossed books. Every night, an independent audit checks a sample of the published files again. Gaps we cannot recover are listed in the docs.

Every venue's wire formatLive collector status

One order book update, two forms

Raw WebSocket message, abridged<symbol>@depth

{
"e": "depthUpdate",
"E": 1788350399886,
"T": 1788350399885,
"s": "BTCUSDT",
"U": 11454752530038,
"u": 11454752532647,
"pu": 11454752529739,
"a": [["76788.60", "2.682"], …],
"b": [ … ]
}

Our row: 13 standard columnsbinance_futures/2026-09-02/12/BTCUSDT_orderbook.parquet

received_time
1788350400007361359
event_time
1788350399886
transaction_time
1788350399885
symbol
BTCUSDT
event_type
update
first_update_id
11454752530038
final_update_id
11454752532647
prev_final_update_id
11454752529739
last_update_id
null
side
ask
price
76788.60
quantity
2.682
order_count
null

Data you can trust with a backtest.

Exchange feeds drop messages, reorder them and disconnect. We check every update as it arrives and every file as it is published, so problems show up in our checks instead of your backtest.

Sequence-checked as it streams
Order book updates are checked against the exchange's sequence IDs, and its checksums where the venue sends them. A gap re-anchors the book from a fresh snapshot.
Replayed when it is published
Every order book file is rebuilt from its snapshots and deltas before it goes out. Its report counts sequence gaps and crossed books.
Audited again every night
An independent audit downloads a sample of the previous day's files and checks them again: time order, duplicates, schema and the order book.
Two clocks on every row
Nanosecond receive time from our collectors, stored next to the exchange's own event time, so you can model latency honestly.

Live collector statusDataset schemas and coverage

File report

binance_futures / BTCUSDT / orderbook / 2026-09-02 12:00 UTC

Passed

When the file is published

  • Book rebuilt from snapshot + deltas

    Every row replayed in order

  • Never crossed

    Best bid below best ask after every update

  • Sequence continuity

    Update IDs chain without gaps

In the nightly audit

  • Time order

    Timestamps never move backwards

  • Duplicates

    No repeated rows

  • Schema

    Required columns present, symbol matches the file

Example report for a published sample hour. Every order book file is replayed when it is published; the nightly audit re-checks a sample.

Browse by exchange

Or by data type

Historical market data for agents and researchers

A data API built for reproducible crypto research.

Order books from Binance Spot with the Python SDK (pip install cryptohftdata)
import cryptohftdata as chd

# Without a key this uses the free tier: 60 files per minute per IP.
# chd.configure_client(api_key="...")

orderbook = chd.get_orderbook(
    symbol="BTCUSDT",
    exchange=chd.exchanges.BINANCE_SPOT,
    start_date="2026-11-02",
    end_date="2026-11-02",
)

print(f"{len(orderbook):,} rows")
print(orderbook.head())

CryptoHFTData collects high-frequency public market feeds from major spot and derivatives exchanges, normalizes them into a consistent schema, and publishes research-ready hourly Parquet files. The archive includes tick-level trades, full L2 order book updates and snapshots, funding and mark-price records, open interest, and liquidation events. Researchers can use the same field conventions across venues instead of maintaining a separate parser for every exchange.

Choose browser, REST, Python, CLI, or bulk-file access

Start without credentials by exploring public datasets or making a rate-limited REST download. For repeatable workflows, create a free account, generate an API key yourself, and exchange it for a short-lived bearer token. The Python package reads the published files into data frames, while the OpenAPI contract, agent skills, and MCP metadata let automated clients discover supported operations before they call them. Every dataset page documents coverage, schema, known caveats, and an example request.

Verify availability before running a backtest

Exchange symbols and feed availability change over time. Query the symbols endpoint for the requested venue and data family, inspect the live ingestion status, and keep the exact exchange, date, hour, symbol, and data type in each research artifact. This produces an auditable input path and avoids silently substituting a similar market. Developer documentation explains authentication, rate limits, versioning, error handling, and flat-file access for both people and software agents.

DocumentationDeveloper portalOpenAPI 3.1Agent instructions

Get Unlimited

Create an account for a free API key: no rate limit, and direct S3 access at full speed.

Sign up for free