Kalshi Data Dictionary
Cross-sport betting and DFS rows point at an underlying event through a polymorphic (league_code, competition_id) pair, resolved through the main.competitions view — competition_id is a team-sport games.id or a golf.tournaments.id.
Main
kalshi.series9 fieldsendpoints →
Families of related Kalshi binary markets organized around a common theme — all NBA game-winner markets, all NBA spread markets, all NFL totals markets, election markets, weather markets. Tracks series-level metadata and sync state.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| category | string | — | Sports > Football > NFL | e.g. "Sports > Basketball > NBA" Values Sports > Football > NFLSports > Basketball > NBASports > Baseball > MLBSports > Golf > PGASports > Hockey > NHL |
| contract_type | stringnullable | — | gw | "gw", "spread", "ou" |
| fetched_at | timestamptz | — | 2026-06-19T12:24:51.121Z | — |
| frequency | stringnullable | — | — | "daily", "weekly" |
| is_active | boolean | — | true | — |
| league_code | stringnullable | — | nfl | e.g. "nba", "nfl", null for non-sport Values nflnbamlbgolfnhl |
| series_ticker | string | — | KXNBAGAME | e.g. "KXNBAGAME" |
| title | string | — | MVE NFL Pre Pack | — |
kalshi.events15 fields· 1 refsendpoints →
A real-world event that anchors a set of Kalshi markets — for sports, a specific game or matchup; for politics, an election or vote; for finance, a price level on a target date. E.g., MEM@POR game-winner event has 2 markets (MEM wins, POR wins).
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| competition_id | bigintnullable | — | 6005250 | Polymorphic cross-schema ref — {league}.games (team sports) or golf.tournaments (golf), resolved during sync by league_code. Dereference via main.competitions. NULL until linked. |
| league_game_id | stringnullable | — | — | NBA CDN game ID for fallback cross-ref |
| series_id | bigint | → kalshi.series | 1 | — |
| away_team | stringnullable | — | SAS | Tricode: "MEM" |
| category | string | — | Sports > Basketball > NBA | — Values Sports > Basketball > NBASports > Football > NFLSports > Golf > PGA |
| event_ticker | string | — | KXNBAGAME-26FEB12DALLAL | e.g. "KXNBAGAME-26FEB06MEMPOR" |
| fetched_at | timestamptz | — | 2026-03-30T01:56:47.997Z | — |
| game_date | datenullable | — | 2026-04-26T04:00:00.000Z | Game date for sport events |
| home_team | stringnullable | — | SAS | Tricode: "POR" |
| league_code | stringnullable | — | nba | Denormalized for filtering Values nbanflgolf |
| market_count | integernullable | — | 11 | — |
| settled_at | timestamptznullable | — | — | — |
| status | string | — | closed | "open", "closed", "settled" |
| title | string | — | Toronto wins by over 8.5 Points? | — |
kalshi.markets23 fields· 2 refsendpoints →
An individual binary contract on Kalshi — a YES/NO question with a defined resolution date and rule, priced between 0 and 100 cents. Stores latest known state (overwritten on sync).
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| competition_id | bigintnullable | — | 73851 | Polymorphic cross-schema ref (denormalized from event) — {league}.games or golf.tournaments, by league_code. Dereference via main.competitions. NULL until linked. |
| event_id | bigint | → kalshi.events | 66 | — |
| series_id | bigint | → kalshi.series | 2 | Denormalized from event for direct queries |
| close_time | timestamptznullable | — | 2026-02-27T03:00:00.000Z | — |
| contract_type | string | — | spread | "gw", "spread", "ou" Values spreadgwou |
| expiration_time | timestamptznullable | — | 2026-02-26T00:30:00.000Z | — |
| fetched_at | timestamptz | — | 2026-02-23T05:31:45.400Z | — |
| last_price | integernullable | — | 1 | Cents (1-99) |
| line | decimalnullable | — | 1.5000 | Spread line for spread markets (e.g., -3.5). UNRELIABLE for ou (totals) markets — mostly null, and populated values hold the playoff series game number, not the total; parse the numeric ticker suffix (e.g. …-238 ⇒ 238) for the O/U line. |
| liquidity | integer | — | 0 | — |
| open_interest | integer | — | 1304 | — |
| open_time | timestamptznullable | — | 2026-02-07T02:07:00.000Z | — |
| result | stringnullable | — | no | "yes", "no", "scalar", null if undetermined Values noyesscalar |
| settled_at | timestamptznullable | — | 2026-01-20T02:37:00.941Z | Settlement timestamp from Kalshi settlement_ts |
| settlement_value | integernullable | — | 0 | Settlement payout for YES side in cents (0-100 for binary, 1-99 possible for scalar) |
| status | string | — | finalized | "initialized", "inactive", "active", "closed", "determined", "disputed", "amended", "finalized" |
| subtitle | stringnullable | — | — | — |
| ticker | string | — | KXNBAGAME-26FEB12DALLAL-LAL | e.g. "KXNBAGAME-26FEB06MEMPOR-POR" |
| title | string | — | Los Angeles C at Houston: Total Points | — |
| volume | integer | — | 2226 | Lifetime volume |
| yes_ask | integernullable | — | 100 | Cents. 1-99 while an order book exists; 100 when there is no resting ask (the common state on settled markets). |
| yes_bid | integernullable | — | 0 | Cents. 1-99 while an order book exists; 0 when there is no resting bid (the common state on settled markets). |
Markets
kalshi.market_statuses6 fieldsendpoints →
The trading-status period log for each Kalshi market — one row per state change with start/end timestamps, recording when the market was open, closed, settled, etc. Sparse coverage — captured 2025-10 through 2026-02 for ~1,500 markets; not currently updating.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| details | jsonbnullable | — | [object Object] | — |
| end_ts | timestamptz | — | 2025-10-23T03:00:00.000Z | — |
| start_ts | timestamptz | — | 2025-10-23T03:01:00.000Z | — |
| status | string | — | HALTED_FILLED | "open", "closed", "settled", etc. Values HALTED_FILLEDFILLEDDETECTED |
| ticker | string | — | KXNBAGAME-25OCT22NOPMEM-NOP | — |
kalshi.candles15 fields· 1 refsendpoints →
OHLC candlestick price summaries for Kalshi markets — the open, high, low, and close prices over standard time bins (1 minute, 5 minute, 1 hour, 1 day), with traded volume per bin. Flattened columns (not JSON) for SQL queryability.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| market_id | bigint | → kalshi.markets | 8 | — |
| end_period_ts | integer | — | 1770781714 | Unix timestamp of period end |
| open_interest | integer | — | 0 | OI at period end |
| period_interval | integer | — | 1 | Seconds (1, 60, 3600, 86400) |
| ticker | string | — | KXNBAGAME-26FEB11MEMDEN-DEN | Denormalized Values KXNBAGAME-26FEB11MEMDEN-DENKXNBAGAME-26FEB11OKCPHX-PHX |
| volume | integer | — | 1 | Period volume |
| yes_ask_close | integernullable | — | 86 | — |
| yes_ask_high | integernullable | — | 86 | — |
| yes_ask_low | integernullable | — | 30 | — |
| yes_ask_open | integernullable | — | 86 | — |
| yes_bid_close | integernullable | — | 86 | — |
| yes_bid_high | integernullable | — | 86 | — |
| yes_bid_low | integernullable | — | 30 | — |
| yes_bid_open | integernullable | — | 86 | Cents |
kalshi.market_snapshots11 fields· 1 refsendpoints →
Time-series price captures for Kalshi markets — the YES bid/ask and NO bid/ask, last trade price, and order-book depth recorded as prices move throughout the trading session. Same pattern as nba.game_line.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| market_id | bigint | → kalshi.markets | — | — |
| captured_at | timestamptz | — | — | — |
| is_opening | boolean | — | — | First snapshot for this market |
| last_price | integernullable | — | — | — |
| liquidity | integer | — | — | — |
| open_interest | integer | — | — | — |
| ticker | string | — | — | Denormalized for efficient queries |
| volume | integer | — | — | Cumulative at capture time |
| yes_ask | integernullable | — | — | — |
| yes_bid | integernullable | — | — | — |
kalshi.public_trades14 fields· 1 refsendpoints →
Every executed trade on Kalshi — price, size, side (YES or NO), and timestamp, comprising the public market tape. Represents completed market trades across all users.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| market_id | bigint | → kalshi.markets | 900 | — |
| trade_id | string | — | befe59d2-106d-6057-517e-eeddd083eba6 | — |
| count | integer | — | 1 | — |
| count_fp | stringnullable | — | 1.00 | — |
| created_time | timestamptznullable | — | 2026-02-13T05:23:27.794Z | — |
| no_price | integernullable | — | 1 | — |
| no_price_dollars | stringnullable | — | 0.0100 | — |
| price | floatnullable | — | 0.99 | — |
| raw_payload | jsonb | — | [object Object] | — |
| taker_side | stringnullable | — | no | "yes" | "no" Values noyes |
| ticker | string | — | KXNBATOTAL-26FEB12DALLAL-229 | — |
| yes_price | integernullable | — | 99 | — |
| yes_price_dollars | stringnullable | — | 0.9900 | — |