What Databento gives us for free

Measured 2026-09-03 against the live API, account prod-001 Re-check with node bin/verify-no-spend.ts

Every number here came from metadata.get_cost, get_record_count and get_billable_size. None of it is quoted from a contract.

The rule

The plan meters TICK schemas. It does not meter BARS.

ohlcv-1m   ALL symbols, back to 2018-05-01, all 5 venues     399.9 GB   FREE
ohlcv-1d   ALL symbols, back to 2018-05-01, all 5 venues       4.2 GB   FREE
tbbo       ALL symbols, last ~12 months (XNAS alone)         460.8 GB   FREE
bbo-1s     ALL symbols, last ~12 months (XNAS alone)         822.2 GB   FREE

tbbo       ALL symbols, 3 years (XNAS alone)               1,111.6 GB   $3,885.96
bbo-1s     ALL symbols, 3 years (XNAS alone)               2,061.3 GB   $4,934.53

Bars are free at any depth and any breadth. Ticks are free inside a rolling window of roughly twelve months, also at any breadth.

Where the tick window ends

AAPL tbbo, to today, varying only the start:

from 2026-01-01    26.6M rec    2.0 GB    $0.00
from 2025-09-01    39.1M rec    2.9 GB    $0.00     ← ~12 months back
from 2025-01-01    65.9M rec    4.9 GB   $12.00
from 2024-09-01    76.0M rec    5.7 GB   $16.52
from 2024-01-01   101.7M rec    7.6 GB   $27.99
from 2023-01-01   128.5M rec    9.6 GB   $39.98
from 2022-01-01   167.3M rec   12.5 GB   $57.29

The rate outside the window: $6.00/GB

Derived, not quoted. XNYS.PILLAR tbbo, 29 symbols, 2022-09:

2,815,741 records = 0.2098 GB billable, priced at $1.2587
0.2098 GB x $6.00/GB = $1.2587

The control that proves it is age and not size — the same query inside the window returns nearly twice the data for nothing:

same 29 symbols, tbbo, 2026-08:   4,938,019 rec   0.3679 GB   $0.00

Useful consequence: four years of tick data for the 125 traded symbols would be roughly 156 GB ≈ $940. Not something to trip into by accident.

Coverage and the licence boundary

history starts       2018-05-01   (all five venue datasets)
licensed through     the PRIOR SESSION'S CLOSE

get_record_count does not enforce the licence. It will happily count records that a data fetch then refuses. Verified:

XNAS.ITCH CRCG 2026-09-03 19:25-19:45Z   ->  403  "A live data license is
                                                   required after 2026-09-03T04:00Z"
XNAS.ITCH CRCG 2026-09-02 15:00-15:05Z   ->  200  25 records

Trust metadata.get_dataset_range, not the record count. The practical effect: a ride is scored the morning after it closes, not the evening of.

The datasets

Only ever the primary listing venue:

NASDAQ -> XNAS.ITCH      NYSE -> XNYS.PILLAR      AMEX -> XASE.PILLAR
ARCA   -> ARCX.PILLAR    BATS -> BATS.PITCH

Never EQUS.MINI or DBEQ.BASIC. Measured on HQY, the same 81 trades:

EQUS.MINI    1255.9 bps        DBEQ.BASIC   1337.7 bps
XNAS.ITCH      18.4 bps   <- the real book

Sixty-eight times too wide. Not a market phenomenon — those feeds carry a fraction of the venues, and a book assembled from part of the market is mechanically wider than the inside. For this service the stakes are specific: a fabricated spread lands in a trader's delta and tells a person they lost money they never lost. PARTIAL_BOOK_DATASETS in src/databento.ts refuses them.

Schema choice

tbbo — one record per trade, carrying the bid and ask standing at that instant. Exactly "when this printed, what was the book?". On AAPL, one session is 22,938 tbbo records against 528,669 for mbp-1: the same answer for 1/23rd of the bytes, because quotes tick far more often than trades.

Minute bars are not a substitute where a decision is being scored — a one-minute bar can swallow an entire scalp's excursion, and MFE, MAE and which-door-first all become guesses at that resolution.