spread_bpsSpread (bps)
Spread in basis points measures the instantaneous cost of crossing from the best bid to the best ask on a normalized scale.
It is one of the most direct and actionable summaries of top-of-book trading conditions.
Interactive Guide
Shown: an illustrative order book over time, bids below the mid and asks above it.
Imagine a room where buyers line up on the left and sellers on the right. The person at the front of each line sets the best bid and best ask. The gap between them is the spread. When a buyer gets impatient and crosses over to the seller's side at their price, a trade happens.
Mid price
A market order hits
Try placing a market buy with a large size. Watch how the order eats through the ask side, consuming liquidity level by level. The spread widens. The midprice shifts. This is in its most elemental form.
The book above is simulated. Our measures the depth of real books, and there's a free sample to try.
L1 (Top of Book)
Spread (absolute and bps), depth, dollar depth — instantaneous and interval-averaged.
Need the ticks behind this metric? Prime + Raw includes raw quotes.
Shown: total_dollar_depth_avg, hourly, 1–31 January 2024, from this page's Sample CSV · extreme: $892042, 29 Jan, 06:00 UTC · built with l1_liquidity
spread_bpsSpread in basis points measures the instantaneous cost of crossing from the best bid to the best ask on a normalized scale.
It is one of the most direct and actionable summaries of top-of-book trading conditions.
spread_depth_ratioSpread/Depth Ratio combines price width and displayed size into a single liquidity efficiency measure.
A market with tight spreads but little size can still be fragile, and this ratio helps expose that weakness.
total_dollar_depthTotal Dollar Depth aggregates the top-level bid and ask liquidity in value terms.
This gives a more practical view of executable size than raw units, especially across instruments with different prices.
dollar_depth_bid_avgAverage Bid Dollar Depth tracks the mean value resting on the bid at the top of book throughout the interval.
It helps answer whether supportive displayed buying liquidity was consistently present or only flashed briefly.
dollar_depth_ask_avgAverage Ask Dollar Depth provides the matching view for displayed sell-side liquidity at the best offer.
Comparing it with the bid average helps reveal whether one side of the book was structurally thinner or thicker during the bar.
The bid-ask spread is universally understood as a transaction cost. Less appreciated: it's the market maker's real-time estimate of adverse selection risk, and its dynamics encode the informational state of the market.
/api/v1/data/l1_liquidity| Field | Name | Description |
|---|---|---|
spread | Spread | Last best ask price minus best bid price in the interval |
spread_bps | Spread (bps) | Last bid-ask spread in basis points of the midprice |
spread_depth_ratio | Spread/Depth Ratio | Last bid-ask spread divided by total top-of-book quantity |
total_depth | Total Depth | Last total top-of-book quantity across bid and ask |
dollar_depth_bid | Bid Dollar Depth | Last bid-side top-of-book notional |
dollar_depth_ask | Ask Dollar Depth | Last ask-side top-of-book notional |
total_dollar_depth | Total Dollar Depth | Last total top-of-book notional across bid and ask |
spread_avg | Avg Spread | Average bid-ask spread in the interval |
spread_bps_avg | Avg Spread (bps) | Average bid-ask spread in basis points over the interval |
spread_depth_ratio_avg | Avg Spread/Depth Ratio | Average spread-to-depth ratio over the interval |
total_depth_avg | Avg Total Depth | Average total top-of-book quantity across bid and ask in the interval |
dollar_depth_bid_avg | Avg Bid Dollar Depth | Average bid-side top-of-book notional in the interval |
dollar_depth_ask_avg | Avg Ask Dollar Depth | Average ask-side top-of-book notional in the interval |
total_dollar_depth_avg | Avg Total Dollar Depth | Average total top-of-book notional across bid and ask in the interval |
# Install the Aperiodic CLI into ~/.local/bin
mkdir -p "$HOME/.local/bin"
curl -fsSL https://raw.githubusercontent.com/aperiodic-io/cli/main/install.sh | INSTALL_DIR="$HOME/.local/bin" bash
export PATH="$HOME/.local/bin:$PATH"
# Free preview — no API key required
aperiodic l1_liquidity --preview \
--exchange binance-futures \
--symbol perpetual-BTC-USDT:USDT \
--interval 5m \
--timestamp exchange \
--start-date 2025-05-01 \
--end-date 2025-05-31 \
--output-dir ./data && echo "Saved to $PWD/data"Every new row as it is computed, over WebSocket at wss://stream.aperiodic.io/v1/stream. Authenticate with your API key in the X-API-KEY header and subscribe to channels named l1_liquidity.<exchange>.<interval>, on intervals 15s, 30s, 1m, 5m, 15m, 30m, 1h, 4h, 1d (15s and 30s on Institutional Live only). Streaming is included on Live plans.
pip install "aperiodic[stream]"import os
from aperiodic import stream
for message in stream(
api_key=os.environ["APERIODIC_API_KEY"],
dataset="l1_liquidity",
exchange="binance-futures",
interval="1m",
symbols=["perpetual-BTC-USDT:USDT"], # omit for every symbol on your plan
):
print(message.channel, message.snapshot, message.data)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 an Institutional plan.
15s30s1m5m15m30m1h4h1dexchangereqstringSource exchange for the data.
binance-futuresokx-perpshyperliquid-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). A metric series starts on the first day of the raw series it is computed from (see /metadata/raw); raw trades and quotes start binance-futures from 2020-01-01, okx-perps from 2019-09-01, hyperliquid-perps from 2025-01-01. Earlier days return no files. How far back you can go depends on the plan: 4 years on Pro, 5 years on Prime and Prime + Raw, full history on Institutional. An earlier start_date returns 403.
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 existing file covering the range from the series' published start — 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/l1_liquidity?timestamp=exchange&interval=5m&exchange=binance-futures&symbol=perpetual-BTC-USDT%3AUSDT&start_date=2025-05-01&end_date=2025-05-31