Binance BTCUSDT perpetual: historical order book, tick trades & funding
19.2M trade, depth, mark-price and funding events for the BTCUSDT perpetual since 2025-06-01 — about 37,578 events a day.
Coverage
BTCUSDT perp data coverage
What is recorded, how often it updates and how much there is.
History start
2025-06-01
512 days of history
Events recorded
19,240,000
≈ 19.2M as of 2026-10-25
Avg events / day
37,578
trade · depth update · mark price · funding
Update frequency
Every trade tick-by-tick; depth diffs at 100 ms; mark price and funding as published
Daily activity · last 30 days
Indicative daily event volume, last 30 days to 2026-10-25. Shape modeled from collector stats; mean matches the average events/day above.
About this market
What is BTCUSDT perp?
The BTCUSDT perpetual is the deepest crypto derivatives book in the world by most measures; mark price, funding and depth together describe how leverage is positioned. AymarData holds 19.2M events for it since 2025-06-01: trades, order-book updates at 100 ms, mark price and funding.
Bitcoin is the market's reserve asset and the benchmark every other crypto instrument is quoted against. On the derivatives side, BTC perp is moved by macro prints (CPI, payrolls, FOMC) that reprice the dollar and real yields within seconds, and by liquidation cascades on leveraged venues, which turn a 1% move into a 3% wick. Because it is leveraged, those same drivers also show up as funding-rate shifts and liquidation-driven bursts that don't appear on spot.
At about 37,578 events a day (trades, depth, mark price and funding), BTCUSDT perp is a complete picture of a leveraged market: join funding with open positioning, replay depth around liquidation-driven moves, and compare perp trades with spot to measure basis in real time.
What moves the BTCUSDT perp
- Macro prints (CPI, payrolls, FOMC) that reprice the dollar and real yields within seconds
- Liquidation cascades on leveraged venues, which turn a 1% move into a 3% wick
- US spot-ETF creations and redemptions, which show up as persistent one-way flow around the New York cash open
Schema
BTCUSDT perp fields and sample rows
The same columns are returned by the API and in Parquet and CSV files.
| Field | Type | Description |
|---|---|---|
| ts_ms | int64 | Exchange event time, Unix milliseconds |
| symbol | string | USDⓈ-M perpetual symbol, here BTCUSDT |
| event_type | string | trade | depth_update | mark_price |
| side | string | buy / sell for trades; bid / ask for depth; null on mark_price |
| price | number | Trade price, book level or mark price in USDT |
| size | number | Contract quantity; null on mark_price |
| funding_rate | number | null | Current funding rate on mark_price events, else null |
Sample rows
| ts_ms | symbol | event_type | side | price | size | funding_rate |
|---|---|---|---|---|---|---|
| 1792684798469 | BTCUSDT | trade | sell | 67247.8 | 0.1173 | null |
| 1792684798718 | BTCUSDT | depth_update | ask | 67248 | 0.1514 | null |
| 1792684799650 | BTCUSDT | mark_price | null | 67247.7 | null | 0.00006503 |
Illustrative rows for the BTCUSDT perpetual; prices are in USDT and shown for schema purposes, not as live quotes. Funding appears on mark_price events.
Code
Pull BTCUSDT perp in Python, cURL or MCP
Market id: BTCUSDT. Export AYMARDATA_API_KEY from your dashboard, then run the Python requests example.
import os
import requests
API = "https://api.aymardata.com/v1"
KEY = os.environ["AYMARDATA_API_KEY"] # export AYMARDATA_API_KEY=ad_live_…
H = {"Authorization": f"Bearer {KEY}", "User-Agent": "aymardata-docs/1.0"}
# BTCUSDT perp: ten minutes around the 16:00 UTC funding window
trades = requests.get(
f"{API}/trades",
headers=H,
params={
"source": "binance-perps",
"market": "BTCUSDT",
"start": "2026-10-22T15:55:00Z",
"end": "2026-10-22T16:05:00Z",
"limit": 500,
},
timeout=30,
).json()["data"]
marks = [t for t in trades if t["event_type"] == "mark_price"]
print(marks[0]["price"], marks[0]["funding_rate"])
book = requests.get(
f"{API}/book",
headers=H,
params={
"source": "binance-perps",
"market": "BTCUSDT",
"at": "2026-10-22T16:00:00Z",
"depth": 10,
},
timeout=30,
).json()
print(book.get("spread"), len(trades))FAQ
BTCUSDT perp: common questions
How do I use funding and depth together on the BTCUSDT perp perp?
Funding and mark price arrive as their own events alongside depth and trades (~37,578 a day in total for BTCUSDT perp). Align them on timestamp: look at how depth thins in the minutes before each funding time and how aggressive flow changes after a funding reset.
How are funding and mark price stored for the BTCUSDT perpetual?
They are separate events (event_type=mark_price) in the same time-ordered stream as trades and depth. The funding_rate field carries the current funding rate; it is null on other event types, so you can filter funding with a single predicate.
What moves the BTCUSDT perpetual?
Macro prints (CPI, payrolls, FOMC) that reprice the dollar and real yields within seconds, and liquidation cascades on leveraged venues, which turn a 1% move into a 3% wick. The BTCUSDT perpetual is the deepest crypto derivatives book in the world by most measures; mark price, funding and depth together describe how leverage is positioned.
How much BTCUSDT perp history is available?
19.2M events since 2025-06-01, averaging 37,578 per day, each stamped with Binance's exchange timestamp in milliseconds.
Can I measure BTC basis between spot and perp?
Yes: join BTCUSDT perp with BTCUSDT spot on ts_ms. The perp page shows mark price and funding; the spot page has the cash order book. Use both to measure basis and lead-lag.
Related
Related markets and next steps
BTCUSDT spot
Cash order book for basis studies
ETHUSDT perp
Related Binance perpetual
ZECUSDT perp
Related Binance perpetual
SOLUSDT perp
Related Binance perpetual
Polymarket: BTC Up/Down 15m
Prediction-market view of the same asset
Hyperliquid: BTC perp
On-chain perpetual
Kalshi: KXBTCD BTC Daily
Kalshi contracts on the same asset
← All binance data
Parent hub for Binance USDⓈ-M perps
Pricing →
Builder, Pro and Enterprise plans
Backtest BTCUSDT perp with real tick data
Get an API key, pull your first window and join it with the other sources in the catalog.