Order book imbalance is arguably the single most validated short-term predictive signal in the market microstructure literature. The intuition is immediate: if there's substantially more resting size on the bid than the ask, the next price move is more likely upward.
/api/v1/data/l2_imbalance
L2 (Order Book)
imbalance_5Imbalance (5 levels)Last top-5 bid quantity minus top-5 ask quantityimbalance_10Imbalance (10 levels)Last top-10 bid quantity minus top-10 ask quantityimbalance_20Imbalance (20 levels)Last top-20 bid quantity minus top-20 ask quantityimbalance_25Imbalance (25 levels)Last top-25 bid quantity minus top-25 ask quantityimbalance_ratio_5Imbalance Ratio (5 levels)Last normalized difference between top-5 bid and ask quantityimbalance_ratio_10Imbalance Ratio (10 levels)Last normalized difference between top-10 bid and ask quantityimbalance_ratio_20Imbalance Ratio (20 levels)Last normalized difference between top-20 bid and ask quantityimbalance_ratio_25Imbalance Ratio (25 levels)Last normalized difference between top-25 bid and ask quantitybid_ask_ratio_5Bid/Ask Ratio (5 levels)Last top-5 bid quantity divided by top-5 ask quantitybid_ask_ratio_10Bid/Ask Ratio (10 levels)Last top-10 bid quantity divided by top-10 ask quantitybid_ask_ratio_20Bid/Ask Ratio (20 levels)Last top-20 bid quantity divided by top-20 ask quantitybid_ask_ratio_25Bid/Ask Ratio (25 levels)Last top-25 bid quantity divided by top-25 ask quantityimbalance_5_avgAvg Imbalance (5 levels)Average top-5 bid quantity minus top-5 ask quantity in the intervalimbalance_10_avgAvg Imbalance (10 levels)Average top-10 bid quantity minus top-10 ask quantity in the intervalimbalance_20_avgAvg Imbalance (20 levels)Average top-20 bid quantity minus top-20 ask quantity in the intervalimbalance_25_avgAvg Imbalance (25 levels)Average top-25 bid quantity minus top-25 ask quantity in the intervalimbalance_ratio_5_avgAvg Imbalance Ratio (5 levels)Average normalized difference between top-5 bid and ask quantity in the intervalimbalance_ratio_10_avgAvg Imbalance Ratio (10 levels)Average normalized difference between top-10 bid and ask quantity in the intervalimbalance_ratio_20_avgAvg Imbalance Ratio (20 levels)Average normalized difference between top-20 bid and ask quantity in the intervalimbalance_ratio_25_avgAvg Imbalance Ratio (25 levels)Average normalized difference between top-25 bid and ask quantity in the intervalbid_ask_ratio_5_avgAvg Bid/Ask Ratio (5 levels)Average top-5 bid quantity divided by top-5 ask quantity in the intervalbid_ask_ratio_10_avgAvg Bid/Ask Ratio (10 levels)Average top-10 bid quantity divided by top-10 ask quantity in the intervalbid_ask_ratio_20_avgAvg Bid/Ask Ratio (20 levels)Average top-20 bid quantity divided by top-20 ask quantity in the intervalbid_ask_ratio_25_avgAvg Bid/Ask Ratio (25 levels)Average top-25 bid quantity divided by top-25 ask quantity in the intervalfrom datetime import date
from aperiodic import get_metrics
# Free preview — no API key required
df = get_metrics(
metric="l2_imbalance",
exchange="binance-futures",
symbol="perpetual-BTC-USDT:USDT",
interval="5m",
timestamp="exchange",
start_date=date(2025, 5, 1),
end_date=date(2025, 5, 31),
preview=True,
)
print(df.head())timestampreqstringTimestamp source. 'exchange' uses the exchange-reported timestamp, 'true' uses actual arrival time at our servers.
exchangetrueintervalreqstringAggregation time interval for the data. Sub-minute intervals (15s, 30s) require a Tier 3 subscription.
15s30s1m5m15m30m1h4h1dexchangereqstringSource exchange for the data. Not available on this dataset: hyperliquid-perps.
binance-futuresokx-perpssymbolreqstringTrading pair symbol in the format of Atlas' universal symbology: https://github.com/aperiodic-io/atlas
start_datereqstring<date>Start date for the data range (YYYY-MM-DD format). Data is partitioned by year and month.
end_datereqstring<date>End date for the data range (YYYY-MM-DD format). Must be greater than or equal to start_date.
Successful response with download URLs for every file covering the range — one per month before 2026-08-01, one per day from 2026-08-01 onwards
filesobject[]requiredFiles covering the requested date range, in chronological order. Data before 2026-08-01 is split by month (one file per calendar month, no `day`); data from 2026-08-01 onwards is split by day (one file per calendar day, with `day` set). The changeover falls on a month boundary, so a given month is served entirely one way or the other; a range spanning it returns the earlier months as monthly files followed by a daily file per day.
yearintegerrequiredYear of the data file
monthintegerrequiredMonth of the data file (1-12)
dayintegerDay of the data file (1-31). Present only on daily files, i.e. those covering 2026-08-01 onwards. Absent on monthly files, which cover an entire calendar month.
urlstring<uri>requiredPresigned URL for direct file download (valid for 5 minutes). URLs are served from dataset-specific subdomains, e.g. ohlcv.aperiodic.io, trade-metrics.aperiodic.io, l1-metrics.aperiodic.io, l2-metrics.aperiodic.io, derivative-metrics.aperiodic.io.
{
"files": [
{
"year": 2026,
"month": 6,
"url": "https://ohlcv.aperiodic.io/binance-futures/1h/BTCUSDT/2026-06.parquet?X-Amz-Expires=300&..."
},
{
"year": 2026,
"month": 7,
"url": "https://ohlcv.aperiodic.io/binance-futures/1h/BTCUSDT/2026-07.parquet?X-Amz-Expires=300&..."
},
{
"year": 2026,
"month": 8,
"day": 1,
"url": "https://ohlcv.aperiodic.io/binance-futures/1h/BTCUSDT/2026-08-01.parquet?X-Amz-Expires=300&..."
},
{
"year": 2026,
"month": 8,
"day": 2,
"url": "https://ohlcv.aperiodic.io/binance-futures/1h/BTCUSDT/2026-08-02.parquet?X-Amz-Expires=300&..."
}
]
}
Prefilled with the shared DEMO-KEY and a free preview slice — send the request to see live data, no account required.
/api/v1/data/preview/l2_imbalance?timestamp=exchange&interval=5m&exchange=binance-futures&symbol=perpetual-BTC-USDT%3AUSDT&start_date=2025-05-01&end_date=2025-05-31Access a curated slice of real production data with just an account — no credit card or subscription required. Pair it with our research notebooks to get started instantly.