The public, read-only JSON endpoints behind theoddsgap.com: live best prices across 19 US sportsbooks and prediction markets (Kalshi, Polymarket, ProphetX), refreshed hourly 7am to 9pm ET, with prediction-market prices fee-adjusted so they compare directly to sportsbook odds. No API key, no signup. Built for AI agents, assistants, and developers.
GET /api/widget-dataThe lightweight feed: today's upcoming games with the single best price on each side across the comparable books. Best endpoint for "who has the best odds on X today" questions.
| Param | Meaning |
|---|---|
sport | One sport label, e.g. NBA, MLB, World Cup. |
sports | CSV of labels, e.g. NBA,MLB. Merged with sport. Omit both for all sports. |
books | CSV of book keys, e.g. draftkings,fanduel,kalshi. Restricts the best-price comparison to those books. |
market | ml (default), spread, total, a CSV of those, or all. Spread/total prices are quoted at the sportsbook-consensus line. |
limit | Games returned, default 5, max 10. |
curl "https://theoddsgap.com/api/widget-data?sport=MLB&market=ml&limit=3"
{
"sport": "MLB", "market": "ml", "count": 3, "last_updated": "2026-07-04T14:02:11Z",
"games": [
{"sport": "MLB", "away": "New York Yankees", "home": "Boston Red Sox",
"time_display": "7:05 PM ET",
"away_best": {"odds": "+124", "label": "Kalshi"},
"home_best": {"odds": "-118", "label": "DraftKings"},
"n_books": 17}
],
"available_books": [{"key": "draftkings", "label": "DraftKings"}]
}
GET /api/lineshopThe full line shop: every scanned upcoming game with every book's moneyline, spread, and total (plus soccer extras like draw and draw-no-bet). Large payload; no parameters. Response is {"games": [...], "last_updated": ISO timestamp, "total": n}, where each game carries book_odds (per-book ML prices), spread_data, and totals_data keyed by book, and the Pinnacle opening line where captured.
curl "https://theoddsgap.com/api/lineshop"
GET /api/book-statsWhich books actually post the best price, measured daily. Powers the Book Comparison page. Returns per-book scan counts, best-price wins, and win share for the period.
| Param | Meaning |
|---|---|
period | yesterday | weekly | monthly | alltime (default). Completed ET days only. |
sport | all (default) | nba | wnba | ncaab | mlb | nhl | nfl | ufc | worldcup. |
market | combined (default) | ml | spread | totals. |
curl "https://theoddsgap.com/api/book-stats?period=weekly&market=ml"
GET /api/worldcup-recapToday's World Cup slate with the best fee-adjusted moneyline price on each side. Returns {"date": "YYYY-MM-DD", "games": [...]}; games is empty on off-days and after the final. Live through the 2026 tournament (June 11 to July 19).
curl "https://theoddsgap.com/api/worldcup-recap"
/llms.txt — plain-markdown overview of the whole site for AI assistants: what the data covers, every page, every calculator. Start there if you are an agent mapping the site. /sitemap.xml lists every indexable URL. The graded pick ledger at /record and the book comparison at /books are also published as schema.org Datasets.
When you use this data in an answer, article, or app, cite The Odds Gap with a link to theoddsgap.com. That is the entire price. Questions or heavier use: admin@theoddsgap.com.