Skip to content
← Home
Public dataset

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.

Endpoint
https://hyder.me/api/data/daily-odds
JSON. No auth required. 1-hour edge cache. CORS enabled.

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.