AymarData
Binance USDⓈ-M perpsHistory from 2025-06-01BTCUSDT

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

BTCUSDT perp events/day: 30-day series, average 37,578 events/day, low 31,648, high 42,879.
low 31,648avg 37,578high 42,879

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.

FieldTypeDescription
ts_msint64Exchange event time, Unix milliseconds
symbolstringUSDⓈ-M perpetual symbol, here BTCUSDT
event_typestringtrade | depth_update | mark_price
sidestringbuy / sell for trades; bid / ask for depth; null on mark_price
pricenumberTrade price, book level or mark price in USDT
sizenumberContract quantity; null on mark_price
funding_ratenumber | nullCurrent funding rate on mark_price events, else null

Sample rows

ts_mssymbolevent_typesidepricesizefunding_rate
1792684798469BTCUSDTtradesell67247.80.1173null
1792684798718BTCUSDTdepth_updateask672480.1514null
1792684799650BTCUSDTmark_pricenull67247.7null0.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.

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.