Free Kalshi odds dataset
Public CC-BY licensed JSON snapshot of every Kalshi event-contract market plus US sportsbook consensus, across nine sports. Updated hourly.
What's inside
- Golf: current PGA Tour tournament + top-30 players by Kalshi implied probability for the outright winner market.
- Sports (NBA, MLB, NHL, NFL, EPL, MLS, UCL, World Cup): next 20 open game-type events per league with each side's current Kalshi implied probability.
Schema (v1)
{
"schema_version": 1,
"source": "sportsbookish.com",
"license": "CC-BY-4.0 — attribution required",
"citation": "SportsBookISH (sportsbookish.com), accessed 2026-05-15",
"generated_at": "2026-05-15T20:30:00.000Z",
"golf": {
"tournament": { "name": "PGA Championship", "slug": "pga-championship", "season_year": 2026, ... },
"players": [
{ "name": "Scottie Scheffler", "slug": "scottie-scheffler", "owgr_rank": 1, "kalshi_implied": 0.195 },
...
]
},
"sports": {
"nfl": { "display_name": "NFL", "events": [
{ "event_title": "Chiefs at Bills", "event_slug": "chiefs-at-bills", ... }
] },
"nba": { "display_name": "NBA", "events": [...] },
...
}
}License + citation
Free to use, redistribute, train models on, embed in research papers, or include in news stories. Required attribution: a link back to sportsbookish.com in the article, repository, or model card.
BibTeX:
@misc{sportsbookish_dataset_2026,
title = {SportsBookISH daily Kalshi vs Polymarket vs sportsbook odds dataset},
author = {Hyder, Kenny},
year = {2026},
url = {https://sportsbookish.com/data}
}Methodology
Every Kalshi quote is pulled directly from Kalshi's public REST API. Sportsbook lines come from The Odds API. We expose only computed fields (implied probabilities, de-vigged consensus); raw per-book prices are available in the interactive UI but not in this export to keep the payload bounded.
Full math + edge calculation documented at /about/methodology.
Limitations
- Hourly cache. For live data, use the interactive site or contact us for higher-frequency access.
- Top-N truncation — golf returns top 30 players; sports return next 20 games per league.
- Game-type events only in the sports section. Futures, awards, conferences, divisions etc. are queryable via the interactive site but not in this export.
- Stale references (>30 minutes old) are filtered out, so a freshly-restarted league may temporarily show empty events.
Hugging Face
Mirrored on Hugging Face Datasets: huggingface.co/datasets/kennyhyder/sportsbookish-daily-odds
from datasets import load_dataset
ds = load_dataset("kennyhyder/sportsbookish-daily-odds", split="latest")
df = ds.to_pandas()See /data/huggingface for the full schema + integration examples.
Larger datasets
For full historical archives, per-book price snapshots, or sub-minute updates, use the contact form. Research-grade access is available for academic / journalistic use cases.