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.