Kalshi historical data
Kalshi Historical Data: Prices, Results, Order Books and Downloads
Kalshi history comes in four kinds: which markets existed and how they settled, price candles, trades, and the order book. DepthFeed records the first, second and fourth for every category it can reach — 10.8 million markets, 134 million candles and 1.9 billion book snapshots — and serves them by API or as daily files.
The Kalshi archive, counted
Read from DepthFeed's archive and public file catalogue. Every figure carries its date. Archive counts as of October 29, 2026; file inventory as of October 29, 2026. Coverage grows daily, so every count is a floor.
10.8M
markets recorded. With settlement results, across every Kalshi category.
134M
candles. 1-minute and hourly, from 2025-08-08.
1.9B
book snapshots. Recorded yes and no ladders across 7.4 million markets.
197
daily files. Sealed UTC days of books, 2026-01-08 to 2026-10-26.
Kalshi historical data is any record of a Kalshi market after the moment has passed: its metadata and settlement result, candlestick prices, executed trades, and the resting yes and no order book. Kalshi's own API serves markets, candles and trades, with older settled data on separate historical endpoints, but returns the order book only as it is now. Past books exist only where someone recorded them.
Kalshi history by category
Every Kalshi series carries a category. These are the markets DepthFeed has recorded in each one, how many have settled, and how much price and book history it holds for them.
| Category | Markets recorded | Settled | Candles (1-min, hourly) | Recorded book snapshots |
|---|---|---|---|---|
| Crypto | 7.51M | 7.13M | 268K | 1.64B, from 2026-01-08 |
| Sports | 1.92M | 1.81M | 72.6M | 171M, from 2026-02-27 |
| Financials | 523K | 487K | 10.2M | 41.7M, from 2026-04-24 |
| Commodities | 476K | 447K | 2.26M | 25.6M, from 2026-09-08 |
| Climate and weather | 199K | 168K | 2.16M | 7.1M, from 2026-09-08 |
| Economics | 56.9K | 9.0K | 6.44M | 14.2M, from 2026-05-14 |
| Entertainment | 47.0K | 23.2K | 11.3M | 1.7M, from 2026-02-27 |
| Elections | 32.1K | 6.1K | 18.4M | 12.7K, from 2026-09-09 |
| Mentions | 27.7K | 23.2K | 1.89M | 93K, from 2026-03-18 |
| Politics | 8.2K | 4.3K | 5.46M | 741K, from 2026-04-24 |
| Science and technology | 6.5K | 2.9K | 1.97M | 586K, from 2026-09-10 |
Where to get Kalshi historical data: sources compared
No single source has everything. Kalshi's own API reaches back furthest for prices and trades; recorded order books start in 2026 wherever you get them.
| Source | What it covers | How far back | Past order books | Format | Cost |
|---|---|---|---|---|---|
| Kalshi API (official) | Markets, settlements, candlesticks, trades; all categories | Each market's launch, from 2021 | No — current book only | JSON over REST | Free |
| Lychee | Markets, trades, outcomes, order-book history; no-code workspace | July 2021 (7.68M markets, 72.1M trades, as Lychee states) | Yes, as Lychee states | CSV, XLSX, JSON exports | Free tier of 100 rows per sheet; Researcher $199 a year |
| Predexon | Markets, trades, prices, candlesticks | Tick history from January 2026 | Yes, tick-level | REST, Parquet | Free tier; paid plans |
| Allium | Kalshi markets and trades in a SQL data warehouse | As listed in Allium's docs | Not stated | SQL | Sales-led |
| Hugging Face and Kaggle datasets | One-off dumps of markets, trades or prices | Fixed at upload; not updated | Rarely | CSV, Parquet | Free |
| DepthFeed | Markets and settlements for 10.8 million markets in every category, 1-minute and hourly candles, recorded yes and no books | Candles from 2025-08-08; books from 2026-01-08 | Yes: snapshots and level changes | REST, daily Parquet | Free key: last 7 days; files $80 per GiB |
Free sample: real recorded Kalshi books
Four settled markets from four categories: a BTC 15-minute market, a WTI oil 15-minute market, a New York temperature market and an NFL fantasy-leader market. Every recorded yes and no book from an hour before each opened until it closed, plus each market's result. Real archive rows, not synthetic ones. No account needed.
- Order books, Parquet (242 KB, 1,020 rows)
- Order books, CSV (gzip) (159 KB)
- Markets and results, CSV (1 KB, 4 rows)
import io
import pandas as pd
import requests
def fetch(name):
r = requests.get(f"https://depthfeed.com/samples/kalshi/{name}", timeout=60)
r.raise_for_status()
return io.BytesIO(r.content)
books = pd.read_parquet(fetch("kalshi-sample-books.parquet"))
markets = pd.read_csv(fetch("kalshi-sample-markets.csv"))
books = books[books.yes_prices.str.len().gt(0) & books.no_prices.str.len().gt(0)].copy()
books["best_yes_bid"] = books.yes_prices.apply(max)
books["yes_ask"] = 1 - books.no_prices.apply(max) # a no bid at p is a yes offer at 1 - p
books["spread"] = books.yes_ask - books.best_yes_bid
print(books.groupby("ticker").spread.median())
print(markets[["ticker", "result", "settled_price"]])- Both sides are bids. Take the best of each with max(), and read the yes ask as 1 − best no bid.
- Sizes are contract counts and can be fractional; prices are 0–1 dollars.
- Sample licence: free to use for evaluation and research; cite DepthFeed if you publish results from it.
One recorded Kalshi book
Copied from one stored BTC 15-minute observation. This is a row from the archive, not an illustration.
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
- Resting yes bids as price and contract count.
- no_prices / no_sizes
- Resting no bids. Each is a yes offer at 1 − price, which gives the implied yes ask (0.33 here).
- ticker
- The exact market ticker, strike included, and the only stable join key.
- recv_ts_ms
- When the book was received, in epoch milliseconds; Kalshi books carry no separate exchange timestamp.
Kalshi history at a glance
- Markets and results
- 10.8 million markets, every category
- Candles
- 134 million, 1-minute and hourly, from 2025-08-08
- Book snapshots
- 1.9 billion across 7.4 million markets, from 2026-01-08
- Book snapshot files
- 197 sealed UTC days, 2026-01-08 to 2026-10-26, 18.93 GiB
- Level-change files
- 81 days from 2026-08-07, 215.47 GiB
- Free API key
- Last 7 days of history, no card
- Files
- $80 per GiB, one-time; $5 minimum order
Pull Kalshi history for one market
List markets in a series, then pull candles or recorded books for one exact market ticker. A free key covers the last 7 days.
# Markets in one series, with results once settled
curl -s "https://api.depthfeed.com/v3/kalshi/markets?series=KXHIGHNY&limit=5" \
-H "Authorization: Bearer df_your_key"
# 1-minute candles for one market
curl -s "https://api.depthfeed.com/v3/kalshi/<exact_market_ticker>/candles" \
-H "Authorization: Bearer df_your_key"
# Recorded yes and no books for the same market
curl -s "https://api.depthfeed.com/v3/kalshi/<exact_market_ticker>/snapshots?include_orderbook=true" \
-H "Authorization: Bearer df_your_key"- Read the yes ask as 1 − best no bid; there is no separate ask array.
- Requests older than your plan window return HISTORY_LIMIT_EXCEEDED; daily files have no plan window.
- Follow the response cursor until has_more is false.
Kalshi historical data
What Kalshi keeps, and what it does not
Markets and settlement results
Every Kalshi market has a series, an event and a market ticker, a title, open and close times, and once it settles a result and settlement value. That is the ground truth for any calibration or backtest. DepthFeed keeps 10.8 million of these records across all categories, including sports and elections, so results can be joined to prices without paging Kalshi's API market by market.
Candlesticks: where it traded, not what was available
A candle gives open, high, low and close for the yes bid, the yes ask and the traded price over one minute or one hour, with volume and open interest. DepthFeed holds 134 million of them from 2025-08-08. A close of 32 cents means a trade printed there, not that 500 contracts could have filled near it.
Trades: Kalshi's own API reaches furthest
Kalshi's trades endpoint and its historical tier go back to each market's launch, which is further than any third-party archive. For multi-year trade research, page Kalshi's historical endpoints; DepthFeed keeps only a recent rolling window of trades.
The order book: current only, unless recorded
A Kalshi book is two ladders of bids. A no bid at price p is a yes offer at 1 − p, so in the recorded sample below the best yes bid is 0.32, the best no bid 0.67 and the implied yes ask 0.33. Kalshi's orderbook endpoint returns this for the present moment only. DepthFeed has recorded 1.9 billion books across 7.4 million markets since 2026-01-08.
Daily Parquet files: what one day contains
Each sealed UTC day is one Parquet file of full-depth snapshots, sorted market first in 5,000-row groups; recent days hold 5.4–8.6 million rows. Rows keep ticker, series, the receive timestamp and the yes_prices, yes_sizes, no_prices and no_sizes arrays. Take the best bid on each side with max() rather than trusting array order, and convert the no side before treating it as asks.
REST history for bounded pulls
For a few markets or a short window the API is cheaper than a file. List markets by series ticker, then request candles or recorded snapshots for one exact market ticker. Use the full ticker, strike included: an event ticker names several markets with very different prices.
What this history cannot tell you
Recorded books show what was resting, not what would have happened to your order: queue position and your own market impact are not in any snapshot. Book coverage starts at different dates per category (see the table above), and no archive has Kalshi books from before 2026.
Query Kalshi history with a free API key
A free key returns the last 7 days of Kalshi history — market results, candles and recorded books — with no card. Paid plans widen the window; whole UTC days of books are also sold as Parquet files.
