Kalshi markets

checking…

Every orderbook delta, trade, and lifecycle event for a configurable set of Kalshi series — gas prices, the Billboard Hot 100 #1, Truth Social post counts, sports props, and (since 2026-06-11) the daily-high/low temperature series adopted from the retired weather feed. Recorded tick-by-tick, archived to Parquet. History-only — no live socket.

Data available

Loading live stats…

Series

Loading series stats…

How to get data

Historical archive — /history/ 🔒 Bearer token

Daily Parquet (data.parquet = every message; tob.parquet = reconstructed top-of-book) and the raw gzipped JSONL, partitioned by date. Browse the tree or fetch a file directly. All requests need Authorization: Bearer <token>.

# browse what's there
curl -H "Authorization: Bearer $TOKEN" \
  https://kalshi-market.feeds.directory/history/parquet/

# pull one sealed day's top-of-book
curl -H "Authorization: Bearer $TOKEN" -O \
  https://kalshi-market.feeds.directory/history/parquet/year=2026/month=06/day=07/tob.parquet

Need a token? It's a single shared Bearer credential — ask the operator. /health and this page need no auth.

What a record looks like

A raw message from data.parquet (denormalised columns + full JSON payload):

loading…

A reconstructed top-of-book change from tob.parquet:

loading…

Schema

filecolumns
data.parquet recv_ns, seq, msg_type, ticker, channel, payload — one row per message; payload is the full Kalshi message as JSON.
tob.parquet recv_ns, ticker, yes_bid, yes_ask, yes_mid — one row per top-of-book change (sparse). Skip replaying orderbook_delta yourself.