Tick Data
Download raw, tick-level Kalshi orderbook deltas and book snapshots as bulk columnar Parquet
zstd-compressed Parquet, plus the book snapshots you need to seed a replay. Call with venue=kalshi for the deltas and venue=kalshi_snapshots for the snapshots, then feed the signed URLs into your own DuckDB, Polars, or Spark. Seed a book from a snapshot and replay the deltas to reconstruct it at any instant (see Replaying the book).
404 not_final. For ready-made, throttled (one per 0.5 s) book snapshots via the REST API use Kalshi Orderbook History.Schema: orderbook deltas (venue=kalshi)
Orderbook deltas (signed change in resting size at a price level), sorted by (ticker, timestamp, sequence).
price_dollars and delta_fp carry the exact values; the integer price and delta columns are rounded convenience copies. For sub-cent-accurate work, read price_dollars. The no side is quoted in NO prices (a NO bid at 0.9600 is the same order as a YES ask at 0.0400).Schema: book snapshots (venue=kalshi_snapshots)
Full-book snapshots, one row per resting level, in the same (side, price_dollars) terms as the deltas. Kalshi sends a snapshot when a market is subscribed (every market open, every reconnect) and our capture re-requests one for every market about once an hour, so a busy market has a snapshot at its open and re-anchors through the day. Rows come from our primary capture stream (source = B); other capture streams may be added later as additional source values. Sorted by (ticker, timestamp, sequence, side, price_dollars).
Replaying the book
- Pick the latest snapshot for the ticker with
timestamp <= tand load all rows sharing itssnapshot_idinto a map keyed by(side, price_dollars). ANULLsiderow is an empty book. - Apply every delta with
snapshot.timestamp < timestamp <= t, in(timestamp, sequence)order:book[(side, price_dollars)] += delta_fp, dropping levels that reach zero. - Re-anchor whenever you pass another snapshot: if a delta-only chain drifts (a level goes negative, or a snapshot disagrees with your replayed book), the capture missed frames in between; the next snapshot is authoritative and restarts the chain.
Authorizations
Query Parameters
Dataset key: polymarket (CLOB price changes), kalshi (orderbook deltas), kalshi_snapshots (Kalshi book snapshots, one row per level), or opinion (orderbook deltas).
Dataset key.
polymarket, kalshi, kalshi_snapshots, opinion Single UTC day, YYYY-MM-DD.
Range start, YYYY-MM-DD (pair with end_date).
Range end, YYYY-MM-DD (inclusive).
Window start, epoch ms UTC. Selects/derives days and prunes parts by ts range.
Window end, epoch ms UTC (inclusive).
Prune to the part(s) covering this market/ticker.
Response
Successful Response
Signed-URL download response for a venue/date (or date range).
Column names and types in the Parquet files.
Columns the files are globally sorted by.
