Market microstructure, measured.
Recorded trades, L2 order-book updates, snapshots and market features. Inspect actual coverage and quality, query spot and futures in SQL, and backtest supported spot strategies in the browser. The data stays with us; the results go to you.
Explore recorded days and fields or see AI models and price-level history.
What is inside
| Stream | What it is | Tier |
|---|---|---|
| derived | CVD, large-trade share, $50k/$200k slippage estimate, realised volatility | premium |
| fl2_BTCUSDT | Binance USDⓈ-M perpetual BTCUSDT: full-depth L2 diffs @100ms with 300 s REST anchors; continuity by pu | core |
| fl2_ETHUSDT | Binance USDⓈ-M perpetual ETHUSDT: full-depth L2 diffs @100ms with 300 s REST anchors; continuity by pu | core |
| fl2_SOLUSDT | Binance USDⓈ-M perpetual SOLUSDT: full-depth L2 diffs @100ms with 300 s REST anchors; continuity by pu | core |
| fob25_BTCUSDT | Binance USDⓈ-M perpetual BTCUSDT: 25-level order book once per second; lob_update_id joins to fl2_* | core |
| fob25_ETHUSDT | Binance USDⓈ-M perpetual ETHUSDT: 25-level order book once per second; lob_update_id joins to fl2_* | core |
| fob25_SOLUSDT | Binance USDⓈ-M perpetual SOLUSDT: 25-level order book once per second; lob_update_id joins to fl2_* | core |
| fob_BTCUSDT | Binance USDⓈ-M perpetual BTCUSDT: top of book after every book update (~100 ms); lob_update_id joins to fl2_* | core |
| fob_ETHUSDT | Binance USDⓈ-M perpetual ETHUSDT: top of book after every book update (~100 ms); lob_update_id joins to fl2_* | core |
| fob_SOLUSDT | Binance USDⓈ-M perpetual SOLUSDT: top of book after every book update (~100 ms); lob_update_id joins to fl2_* | core |
| ftrades_BTCUSDT | Binance USDⓈ-M perpetual BTCUSDT: every raw WebSocket trade event (price, size, side, ingest time) | core |
| ftrades_ETHUSDT | Binance USDⓈ-M perpetual ETHUSDT: every raw WebSocket trade event (price, size, side, ingest time) | core |
| ftrades_SOLUSDT | Binance USDⓈ-M perpetual SOLUSDT: every raw WebSocket trade event (price, size, side, ingest time) | core |
| gold_trades_BTCUSDT | BTC tick tape as our own engine consumes it: deduplicated, gap-recovered trades folded in, volume bars derived from it | core |
| gold_trades_ETHUSDT | ETH tick tape as our own engine consumes it: deduplicated, gap-recovered trades folded in, volume bars derived from it | core |
| gold_trades_SOLUSDT | SOL tick tape as our own engine consumes it: deduplicated, gap-recovered trades folded in, volume bars derived from it | core |
| l2_BTCUSDT | BTC order-book diffs: first_id/final_id, levels, snapshots | core |
| l2_ETHUSDT | ETH order-book diffs: first_id/final_id, levels, snapshots | core |
| l2_SOLUSDT | SOL order-book diffs: first_id/final_id, levels, snapshots | core |
| market_BTCUSDT | BTC market character on a 15-minute window | core |
| market_ETHUSDT | ETH market character on a 15-minute window | core |
| market_SOLUSDT | SOL market character on a 15-minute window | core |
| metrics_BTCUSDT | BTC perpetual-futures context every 30 s: open interest, funding rate, long/short ratios | core |
| metrics_ETHUSDT | ETH perpetual-futures context every 30 s: open interest, funding rate, long/short ratios | core |
| metrics_SOLUSDT | SOL perpetual-futures context every 30 s: open interest, funding rate, long/short ratios | core |
| ob25_BTCUSDT | BTC order book 25 levels per side, once per second (first book update of each exchange second); lob_update_id joins to l2_* | core |
| ob25_ETHUSDT | ETH order book 25 levels per side, once per second (first book update of each exchange second); lob_update_id joins to l2_* | core |
| ob25_SOLUSDT | SOL order book 25 levels per side, once per second (first book update of each exchange second); lob_update_id joins to l2_* | core |
| ob5m_BTCUSDT | BTC order book, 5-minute aggregate | core |
| ob5m_ETHUSDT | ETH order book, 5-minute aggregate | core |
| ob5m_SOLUSDT | SOL order book, 5-minute aggregate | core |
| ob_BTCUSDT | BTC top of book after every book update (~100 ms): best bid/ask, mid, spread, 20-level volumes, imbalance; lob_update_id joins to l2_* | core |
| ob_ETHUSDT | ETH top of book after every book update (~100 ms): best bid/ask, mid, spread, 20-level volumes, imbalance; lob_update_id joins to l2_* | core |
| ob_SOLUSDT | SOL top of book after every book update (~100 ms): best bid/ask, mid, spread, 20-level volumes, imbalance; lob_update_id joins to l2_* | core |
| regimes | Directional regime label (up/down/neutral) | core |
| trades_BTCUSDT | Every BTC/USDT trade: price, size, side, ingest time (1-second tape) | core |
| trades_ETHUSDT | Every ETH/USDT trade: price, size, side, ingest time (1-second tape) | core |
| trades_SOLUSDT | Every SOL/USDT trade: price, size, side, ingest time (1-second tape) | core |
| volbars_BTCUSDT | BTC volume bars (a bar closes on accumulated volume, not on time) | core |
| volbars_ETHUSDT | ETH volume bars (a bar closes on accumulated volume, not on time) | core |
| volbars_SOLUSDT | SOL volume bars (a bar closes on accumulated volume, not on time) | core |
Pricing
- 25 SQL queries/day
- 10 backtest minutes/mo
- history: 1 demo hour (2026-08-18 12:00–13:00 UTC)
- 300 SQL queries/day
- 120 backtest minutes/mo
- history: 30 days
- delay: 1h
- 2000 SQL queries/day
- 600 backtest minutes/mo
- history: available recorded history
- delay: none
- + premium derived
- 6000 SQL queries/day
- 2000 backtest minutes/mo
- history: available recorded history
- delay: none
- + premium derived
Three ways to work
SELECT time_bucket('1 min', ts) m,
last(price) c
FROM gold_trades_ETHUSDT
WHERE day='2026-08-18'
GROUP BY 1
Query the full feed in the
browser. No downloads, no S3 bill.class Strategy:
def analyze(self, symbol, data):
if data["rsi"] < 30:
return {"side": "BUY", "size_pct": 50}
The same engine that judges our
own strategies. Fees are honest.{"mcpServers": {"l2ws": {
"url": "https://mcp.l2ws.com/mcp",
"headers": {"Authorization": "Bearer crk_…"}}}}
Claude backtests here straight
from the chat.Start with the right market data
Compare spot and futures records, understand snapshots and update streams, and check the dates you can actually query before choosing a plan.
Historical Binance order-book data · Backtesting with L2 · Cumulative volume delta · Market data for MCP clients
Questions
How deep and how fast is the data?
Trade tape at 1-second ingest precision, order book by diffs with 5-minute reference snapshots. Depth grows daily — the current window is shown on every stream page, for example gold_trades_BTCUSDT.
Why can't I download the files?
We sell computation over the data, not the files. That is cheaper for you and more capable: SQL, backtests and notebooks run next to the data, with no exports and no egress bill.
What do I get for free?
One full hour of every spot stream (2026-08-18 12:00–13:00 UTC), 25 queries per day and 10 backtest minutes — enough to tell whether this is for you. USD-M futures streams started on 2026-08-21, so the demo hour does not cover them.
How do I pay?
USDT on the TRON network (TRC20), on our own payment gateway's checkout page — no third-party processors involved. Cards are coming later.
Refunds?
All payments are final — the free tier is the trial, so you know exactly what you are buying before you pay. The two exceptions: a duplicate or erroneous charge (we verify on-chain and return the excess), and a documented outage longer than 24h (compensated with service days). Both — via a support ticket within 7 days. See Terms §5.
Is quality declared or measured?
Measured. Every day gets a manifest: record counts, sha256 and a sequence-gap audit. Known defects are recorded, never hidden — see status.