Kalshi data

Kalshi Data: Order Books, Price History, Downloads and API

Kalshi data comes in four layers, and they answer different questions. Markets, candlesticks and trades are served by Kalshi's own API. The resting yes and no order book is the layer Kalshi shows only as it is now — so the book as it was at any past moment exists only if someone recorded it.

Get Kalshi data access

First-hand figures from the Kalshi archive

Computed directly from DepthFeed's own capture rather than quoted from a vendor sheet, which is why they carry a measurement date and a named cohort. Measured on the live archive as of June 21, 2026, on BTC 15-minute markets. Coverage grows continuously, so counts are a floor rather than a fixed figure.

  • 1.5 billion

    order-book snapshots. Recorded books across 2,600,000+ Kalshi crypto markets.

  • 1¢

    typical spread. Median yes spread on BTC 15-minute markets.

  • 96 price levels on each side

    ladder depth. Median levels per side on BTC 15-minute markets, out of Kalshi's full 100.

  • 156,000 contracts

    resting size. Median total contracts resting across both ladders of the same cohort.

Kalshi data covers four layers: market metadata (the series, event and market tickers and how a contract settles), price history (candlesticks of where it traded), trades (what executed), and order-book depth (the resting yes and no bids at a moment). Kalshi's API serves the first three historically; its order-book endpoint returns the current book only.

Browse downloadable datasets

Anatomy of a real Kalshi book

This ladder is copied verbatim from one recorded BTC 15-minute observation — a real row from the archive, not an illustration.

Yes bidsNo bids0.326,6450.311,1290.301,0250.291,5350.67635.10.661,3510.652,6450.642,310
Resting size at each price level — KXBTC15M-26JUN211530 (Kalshi). Bar length ∝ size.

A yes bid at price p is a no offer at 1 − p, so the implied yes ask is 1 − the best no bid.: full-depth REST poll.

yes_prices / yes_sizes
The resting yes bids as price and contract count, best first.
no_prices / no_sizes
The resting no bids. Each one is a yes offer at 1 − price, which is how the implied yes ask (0.33 here) is read.
ticker
The exact market ticker — series, event window and strike — and the only stable join key.
recv_ts_ms
When the book was received, in epoch milliseconds — the time axis every Kalshi snapshot is ordered and joined on.

Kalshi coverage at a glance

Order-book snapshots
1.5 billion+ recorded observations
Markets captured
2,600,000+
History from
January 2026
Market windows
15-minute, hourly, daily, and weekly
Crypto assets
7
Book structure
Yes and no bid ladders; implied ask = 1 − best opposite bid
Delivery
REST, CSV and Parquet

Pull Kalshi data by layer

Discover markets by series first so tickers and metadata stay attached to the request, then ask for recorded books on one exact market ticker.

Copyable requestshell
curl -s "https://api.depthfeed.com/v3/kalshi/markets?series=KXBTC15M&limit=5" \
  -H "Authorization: Bearer df_your_key"

curl -s "https://api.depthfeed.com/v3/kalshi/<exact_market_ticker>/snapshots?include_orderbook=true" \
  -H "Authorization: Bearer df_your_key"

curl -s "https://api.depthfeed.com/v3/kalshi/<exact_market_ticker>/orderbook/latest" \
  -H "Authorization: Bearer df_your_key"
  • Use the full market ticker, strike included; an event ticker names several markets with different books.
  • Read the yes ask as 1 − best no bid; there is no separate ask array.
  • Follow the response cursor for the next page instead of building offsets.

Kalshi data

The four layers of Kalshi data

  1. Markets and tickers — what the contract actually is

    Kalshi names everything with three nested tickers: a series (KXBTC15M, every 15-minute Bitcoin market), an event (one window of that series) and a market (one strike inside the event, such as KXBTC15M-26JUN211530-30). The market ticker is the join key; the series and event tickers are how you discover markets in bulk. Getting this level wrong is the most common reconciliation bug, because an event holds several markets with different strikes and very different books.

  2. Kalshi price history — candlesticks and what they leave out

    Kalshi's API serves candlesticks: open, high, low and close of the yes price over fixed periods, with volume. For forecast accuracy, calibration and charting that is the right input. What a candle cannot say is whether size was available: a close of 32 cents means a trade printed there, not that a 500-contract order could have filled near it. On a 15-minute market a coarse candle series also carries only a few points across the contract's whole life.

  3. Trades — what executed

    Kalshi's trades endpoint returns executed fills with price, count and taker side, and its historical tier keeps them. That covers volume, flow and fill-timing research. As with any trade tape, it cannot recover the book: a thin market and a deep one can print the same trades, so the slippage an order would have paid is not derivable from trades alone.

  4. Kalshi order book data — yes bids, no bids, and the implied ask

    A Kalshi book is two ladders of bids: yes bids and no bids. There is no separate ask side, because a no bid at price p is a yes offer at 1 − p. In the recorded sample below the best yes bid is 0.32 and the best no bid 0.67, so the implied yes ask is 0.33 — a one-cent market. Kalshi's public orderbook endpoint returns this structure for the present moment only; its historical tier covers trades and candlesticks, not depth over time. Replaying the book as it was requires continuous capture, which is what DepthFeed's archive is.

  5. Kalshi data API: matching the request to the layer

    DepthFeed serves the recorded layers over one REST surface. Market discovery takes a series ticker and a time range and returns the markets with their tickers and metadata; the snapshot route returns recorded books for one exact market ticker, with include_orderbook exposing both ladders; orderbook/latest returns the newest recorded book. Downsampling selects a real recorded observation rather than interpolating one, so a gap stays a visible gap.

  6. Kalshi data download: CSV, Parquet or REST

    Use CSV for inspection and small extracts, Parquet for large columnar research, and REST for bounded or incremental pulls. The format should change how bytes arrive, never what a record means: keep the market ticker, the millisecond receive timestamp, the full yes and no price and size arrays, and explicit markers where data is absent. A Kalshi dataset reduced to one price per row is a candle series under another name.

  7. What is deliberately not claimed here

    The recorded archive starts in January 2026, where continuous capture began, not where Kalshi began — Kalshi's own candlesticks and trades reach further back than any third-party book archive, which is why the layers are complements rather than substitutes. Coverage here is crypto markets; figures describe measured samples on a named cohort, not a service guarantee. Where a market was not captured, the answer is an explicit gap.

Pull a real Kalshi book before you integrate

Start with a bounded recorded sample: check the tickers, the timestamps and both ladders against your own loader, then create a key once the schema fits the job.

Get Kalshi data access · Browse downloadable datasets

More on Kalshi dataMore on Kalshi data

Questions, answered.

Start backtesting on real depth.