Aperiodic
DataFactors
Catalog
Pricing
Get Started

Quotes

Prime + Raw

Top-of-book updates: best bid and best ask with their sizes, one row per change.

/api/v1/data/raw/quotes

Schema

exchange_timestamptimestampWhen the venue says the event happened (UTC, µs). Exact.
local_timestamptimestampWhen the event reached our capture machine (UTC, µs).
bid_pricefloat64Best bid price
bid_amountfloat64Size at the best bid. Base asset on Binance USDⓈ-M and Hyperliquid, contracts on OKX
ask_pricefloat64Best ask price
ask_amountfloat64Size at the best ask. Base asset on Binance USDⓈ-M and Hyperliquid, contracts on OKX

Coverage per venue

VenueSymbolsFrom
Binance983Jan 2020
OKX700Sep 2019
Hyperliquid528Jan 2025

File layout

One file per calendar month before 2026-08-01, one per day from then on, in the aperiodic-raw-quotes bucket. Example key:

v1/quotes/exchange=binance-futures/symbol=perpetual-BTC-USDT:USDT/year=2025/month=06/data.parquet

Try it

The shared DEMO-KEY gets the 2025-06 file of each venue's BTC perpetual. No account needed.

terminal
# 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"

# Download the 2025-06 quotes file into ./raw — no API key needed
aperiodic raw quotes --preview \
  --exchange binance-futures \
  --symbol perpetual-BTC-USDT:USDT \
  --output-dir ./raw && echo "Saved to $PWD/raw"

Code

pip install "aperiodic[polars]"
pypi ↗
example.py
from datetime import date
import aperiodic as ap

# Into one DataFrame (monthly files are trimmed to your range)
df = ap.get_raw(api_key="YOUR_KEY", dataset="quotes",
                exchange="binance-futures", symbol="perpetual-BTC-USDT:USDT",
                start_date=date(2025, 6, 1), end_date=date(2025, 6, 30))
print(df.head())

# Or stream the files to disk, skipping ones you already have
ap.download_raw(api_key="YOUR_KEY", dataset="quotes",
                exchange="binance-futures", symbol="perpetual-BTC-USDT:USDT",
                start_date=date(2025, 1, 1), end_date=date(2025, 12, 31),
                output_dir="raw")

Read the folder back one dataset at a time, with a glob:

terminal
# DuckDB, from the folder that holds ./raw
duckdb -c "SELECT * FROM read_parquet('raw/quotes/**/data.parquet')
  WHERE exchange_timestamp >= '2025-06-01' LIMIT 10"
example.py
from datetime import datetime, timezone
import polars as pl

df = (
    pl.scan_parquet("raw/quotes/**/data.parquet")
    .filter(pl.col("exchange_timestamp") >= datetime(2025, 6, 1, tzinfo=timezone.utc))
    .collect()
)
print(df.head())

Notes

  • exchange_timestamp is the venue's own time. local_timestamp is when the event reached our capture machine.
  • Sizes are in the venue’s own units: base asset on Binance USDⓈ-M and Hyperliquid, contracts on OKX.

Metrics built from this dataset

  • Slippage
  • L1 Price
  • L1 Imbalance
  • L1 Liquidity
Aperiodic

Crypto microstructure, liquidity & flow metrics — built from hundreds of terabytes of raw data, distilled into point-in-time metrics you can pull as parquet files. Plus the raw trades, quotes and derivatives data behind them.

Registered office
Aperiodic Limited
136 Capel StreetDublin, D01 T2C9Ireland
Registered in Ireland · Company No. 815273

© Copyright 2026 Aperiodic. All Rights Reserved.

Product
  • Data Catalog
  • Pricing
  • API Docs
  • Notebooks
  • Find new alpha
  • Roadmap
  • Changelog
  • FAQ
  • For AI Agents
  • Atlas Security Master
Metrics
  • Order Flow
  • L1 — Top of Book
  • L2 — Order Book
  • Market Data
  • Derivatives
  • Raw Data
Channels
  • Blog: Research Insights
  • Microstructure Guide
  • Data vendors compared
  • Aperiodic vs. Tardis
  • Aperiodic vs. CoinGlass
  • Aperiodic vs. Kaiko
  • Aperiodic vs. Amberdata
  • LinkedIn
Company
  • Contact
  • Book a call
  • Terms of Service
  • Licensing
  • SLA
  • Privacy Policy
  • LLM? Read this.

Provided for informational purposes only; not investment advice, a recommendation, or an offer to transact. Past performance is not indicative of future results.