Kalshi does not retain its order-book history. We record it live — L2 depth up to 20 levels per side for selected markets in a volume-ranked polling set. Depth and trade prints have different capture populations; each archive documents the sports, observed timestamps and dark windows it actually contains.
Archives are versioned snapshots. Dated snapshot: 901,585,623 depth rows · 35,983,957 trade prints · 937,569,580 total rows · book samples 2026-06-21T17:24:31.656958Z through 2026-10-11T23:57:21.231062Z · includes sparse earlier trade-print backfill from 2026-05-15; not continuous coverage · artifact vintage 2026-10-11; separate from observation times. Each product gives its own observed dates and coverage limits.
Start with the free Kalshi depth CSV and Python example. For the paid two-day ZIP, follow the Kalshi tryout walkthrough to check the manifest, coverage and separate book and trade clocks.
Download the free Kalshi order book CSV as kalshi_micro_tape_sample.csv, then run this with Python's standard library. The versioned depth and trade schema documents the separate paid tables.
import csv
from datetime import datetime, timezone
from decimal import Decimal
with open("kalshi_micro_tape_sample.csv", newline="", encoding="utf-8-sig") as handle:
rows = list(csv.DictReader(handle))
for row in rows[:5]:
observed = datetime.fromtimestamp(float(row["timestamp"]), timezone.utc)
price_dollars = Decimal(row["price_c"]) / Decimal("100")
print(observed.isoformat(), row["ticker"], row["side"],
"level", row["level"], "dollars/share", price_dollars,
"contracts", Decimal(row["size"]))
Here, timestamp is the recorded snapshot time in Unix seconds, price_c is cents per share, size is contracts, and level 0 is the best recorded price on that side. The sample may show a deeper level or only one side of a ticker; these rows alone do not establish its spread or a fill. Historical depth captured through Jul 19, 2026 had already lost fractional size precision; reading it as a decimal cannot restore that information.
This is a depth-schema example, not a trade-print sample or a complete view of each market. For a paid analysis, inspect the specific manifest and coverage notes first. The Kalshi tryout guide walks through the actual ZIP, separate timestamps and research limits.
The full archive: book and prints together, which is what microstructure work actually needs.
capture_ts is retrieval time; created_time is trade time. Backfilled prints do not establish game state at trade time.capture_ts − created_timeCOVERAGE.md derives UTC global-poll gaps over 120 seconds from the timestamps, for this version; this is not a per-ticker or full-exchange completeness claimTo verify a personalized ZIP, compare its included MANIFEST.json SHA-256 with this product's archive_metadata.source_documents digest in the public catalog, then check each member against that trusted manifest. The buyer ZIP's whole-file hash changes with its license comment.
Each ZIP has its own measured slice coverage map. Choose the sport and archive vintage you need.
Dated snapshot: 155,268,651 depth rows · 0 trade prints · 155,268,651 total rows · book samples 2026-06-21T17:24:31Z through 2026-10-11T23:57:21Z · artifact vintage 2026-10-11; separate from observation times. Selected-market coverage and measured gaps are documented in the archive.
Details →Dated snapshot: 264,508,013 depth rows · 15,797,417 trade prints · 280,305,430 total rows · book samples 2026-06-21T17:24:31Z through 2026-10-11T23:57:21Z · artifact vintage 2026-10-11; separate from observation times. Selected-market coverage and measured gaps are documented in the archive.
Details →Dated snapshot: 24,173,228 depth rows · 2,744,291 trade prints · 26,917,519 total rows · book samples 2026-06-21T21:24:15Z through 2026-10-10T04:05:22Z · artifact vintage 2026-10-11; separate from observation times. Selected-market coverage and measured gaps are documented in the archive.
Details →Dated snapshot: 41,954,355 depth rows · 0 trade prints · 41,954,355 total rows · book samples 2026-06-22T06:11:14Z through 2026-10-11T23:57:21Z · artifact vintage 2026-10-11; separate from observation times. Selected-market coverage and measured gaps are documented in the archive.
Details →Dated snapshot: 121,165,822 depth rows · 7,099,086 trade prints · 128,264,908 total rows · book samples 2026-06-28T16:10:43Z through 2026-10-11T23:57:21Z · artifact vintage 2026-10-11; separate from observation times. Selected-market coverage and measured gaps are documented in the archive.
Details →Dated snapshot: 95,525,356 depth rows · 5,012,219 trade prints · 100,537,575 total rows · book samples 2026-06-26T10:08:51Z through 2026-10-11T23:57:21Z · artifact vintage 2026-10-11; separate from observation times. Selected-market coverage and measured gaps are documented in the archive.
Details →One row per game: final score and winner, joinable to any Kalshi tick data on game_id. 2,621 games (1,990 settled) across 7 sports, Dec 2025 – Apr 2026, reconstructed from ~123.9M live quote snapshots. Kalshi publishes no historical results keyed to its tickers. Contains no quote snapshots itself.
Details →Kalshi's API serves the live book and candlestick summaries, but it does not provide a replay of historical L2 depth. Our depth was captured live; some trade prints were collected later through startup backfill. The corrected full-tape coverage map derives global-poll gaps from UTC timestamps, so missing observation windows are visible without implying every ticker was continuously sampled.
For the Polymarket side of the same research program, see the Polymarket historical data archive, or the vendor-neutral buyer's guide to historical order-book data.
Inspect the free 400-row Kalshi depth CSV and published schemas before buying. That CSV contains depth rows, not trade prints, and does not establish the coverage of a paid ZIP. The $9 tryout contains Jul 18–19 UTC write-day partitions with its own manifest and coverage note; the walkthrough checks its actual timestamps.
The corrected full tape includes an algorithmic UTC map of global-poll gaps over 120 seconds, for this version. This reports recorder observation gaps, not continuous presence of every ticker. The tryout has its own two-partition coverage note.
Our own live trading and published lead-lag research run on this capture. License terms.
Kalshi's API serves live books, trades and candles, but not a replay of historical L2 order book depth. Our depth snapshots were recorded live; some trade prints were fetched later through startup backfill. An uncaptured book state cannot be reconstructed after the fact.
Up to 20 price levels per side. Kalshi exposes more levels on some markets; our recorder stores the top 20. The recorded levels describe selected markets, not the entire exchange or guaranteed executable liquidity.
No. This version's CAPTURE_STATS.json identifies the captured print families. Depth and prints have different selected capture populations and vary over time. A missing row does not establish that a market was closed or that no trade occurred.
created_time is exchange trade time; capture_ts is when our recorder retrieved the print. Attached game state belongs to retrieval time, not the sporting event or exchange trade time. Event-time work needs a separately verified score timeline. Depth timestamp is the recorded snapshot time.
No. COVERAGE.md and the observed gap maps report intervals derived from delivered timestamps for each version. Global polls do not establish continuous observation of an individual ticker. Compare the specific manifest, dates and sampling limits of the archive or slice you plan to use.
Yes. Download the public depth CSV and run the standard-library example on this page. It contains timestamp, ticker, side, level, price_c and size fields, not trade prints. The sample demonstrates the depth schema; it does not establish the coverage or completeness of a paid ZIP.
Yes. The six $39 slices cover tennis, MLB, WNBA, esports, NFL and college football, each with its own vintage and measured coverage. Tennis and esports are depth-only captures. The $9 tryout has Jul 18–19 UTC write-day partitions and its own manifest and coverage note; compare product documentation before buying.
Two Jul 18–19 UTC write-day partitions from the same capture and data schema, with a tryout-specific manifest and coverage note — for $9. A boundary poll has a Jul 17 23:59:42 UTC timestamp. No global-poll gap exceeds two minutes, but individual markets can leave the selected set.