First Democratic Contest 2028 odds & historical data
First Democratic Contest 2028 price history on Kalshi: 4 markets, every order book change and trade, as daily Parquet files.
Example market: Will it be reported by any of the Source Agencies that South Carolina holds the earliest 2028 Democratic presidential contest administered by its election officials or the Democratic Party among the 50 states before Apr 1, 2028?
690.1 thousand rows4 markets6.07 MB7 datasets, full order book includedUpdated daily
Datasets
One file per dataset per UTC day. Data dictionary · Hourly coverage
| Dataset | What it holds | Plan | Sample |
|---|---|---|---|
| Order book (L2, incremental) book_l2 | Every price level and every change to the YES and NO bid books. Snapshot rows set a level; delta rows add to it. 9 columns
| Full book | SampleParquet·CSV |
| Order book snapshots (top 10, 1 second) book_snap_1s | The top ten YES bid and ask levels at the end of every second in which the book changed. 43 columns
| Research | SampleParquet·CSV |
| Top of book (every change) bbo | Best YES bid and ask with sizes, one row each time any of the four values changes. 8 columns
| Research | SampleParquet·CSV |
| Top of book (1-minute bars) bbo_1m | Minute bars of the YES mid with closing bid and ask, plus trade count and volume. 12 columns
| Research | SampleParquet·CSV |
| Trades trades | Every recorded fill with YES price, size, and taker side. 8 columns
| Research | SampleParquet·CSV |
| Markets (point-in-time universe) markets | One row per market open at any time during the day: terms, strikes, times, tick size, rules, fees, and outcome. 22 columns
| Explorer | SampleParquet·CSV |
| Settlements settlements | Every market that settled during the day: result, settlement value, the underlying value it settled on, and when. 15 columns
| Explorer | SampleParquet·CSV |
Use it in code
API docs · MCP server · Backtest guide · Historical data guide
# pip install "kalshieye[pandas]" from kalshieye import Client kx = Client() # reads KALSHIEYE_API_KEY df = kx.load("bbo_1m", "2026-11-01", "2026-11-01", series="KXDEMFIRSTCONTEST")