Kalshi is a regulated event exchange rather than a sportsbook, and that difference matters when you integrate it. Prices come from traders taking both sides of a contract, not from a bookmaker setting a line with margin built in. The SportsGameOdds API normalises Kalshi into the same structure as every sportsbook we carry, so you can read an exchange price and a book price out of the same response without writing a second parser.
Why an exchange belongs in the same feed
The practical reason to care about Kalshi is that its prices are set by a different mechanism than a sportsbook's. When a book and an exchange disagree, that gap is the signal — and it is only visible if both arrive in a shared schema.
That is exactly what this API does. Kalshi appears as a bookmakerID inside the same byBookmaker block as DraftKings, FanDuel or Pinnacle, keyed by the same oddID. No separate endpoint, no separate schema, no reconciliation step.
What Kalshi coverage looks like
Kalshi coverage spans the major North American leagues and a wide set of European soccer competitions:
Football — NFL, college football Basketball — NBA, WNBA, college basketball Baseball — MLB Hockey — NHL Soccer — Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Champions League, Europa League, MLS, and international fixtures Other — UFC, PGA Tour, ATP and WTA tennis
Coverage is not limited to game winners. Kalshi carries player markets too — passing yards, rushing yards, receiving yards and receptions, passing and anytime touchdowns, points, rebounds, assists and three-pointers, double-doubles and triple-doubles, goalkeeper saves, and first-scorer markets among them.
For the authoritative, always-current breakdown of which markets Kalshi supports in a given league, use the Supported Markets reference or query the /markets endpoint — both are generated from live data rather than maintained by hand.
Quick Start: Requesting Kalshi Prices
Kalshi prices arrive inside the standard events response. Filter to just Kalshi with the bookmakerID parameter:
https://api.sportsgameodds.com/v2/events?apiKey=YOUR_API_KEY&leagueID=NFL&bookmakerID=kalshi&oddsAvailable=true&limit=10
To compare Kalshi against sportsbooks in one call, pass several IDs:
https://api.sportsgameodds.com/v2/events?apiKey=YOUR_API_KEY&leagueID=NFL&bookmakerID=kalshi,draftkings,pinnacle&oddsAvailable=true&limit=10
What a Kalshi price looks like
Every event returns an odds object keyed by oddID, with each book's price inside byBookmaker. Here's a moneyline with Kalshi shown next to two sportsbooks:
{
"eventID": "...",
"leagueID": "NFL",
"odds": {
"points-home-game-ml-home": {
"oddID": "points-home-game-ml-home",
"opposingOddID": "points-away-game-ml-away",
"marketName": "Moneyline",
"statID": "points",
"statEntityID": "home",
"periodID": "game",
"betTypeID": "ml",
"sideID": "home",
"fairOdds": "-135",
"bookOdds": "-140",
"byBookmaker": {
"kalshi": { "odds": "-132", "available": true },
"draftkings": { "odds": "-142", "available": true },
"pinnacle": { "odds": "-138", "available": true }
}
}
}
}
The Kalshi entry sits in the same shape as the sportsbook entries — same oddID, same odds field, same string format that preserves the leading + on plus-money prices. Reading them side by side is the whole point: fairOdds gives you the vig-free consensus to measure all three against.
Use Cases for Kalshi Data
Prediction Market Arbitrage — The clearest use. Exchange prices and sportsbook prices are set by different mechanisms, so they drift apart, and a shared schema is what makes the gap findable programmatically.
Arbitrage & +EV Tools — Add a regulated exchange to your price comparison set alongside conventional books. See also positive EV betting.
Odds Comparison Platforms — Show users where an exchange is pricing an outcome differently from the books they normally see.
Sports Analytics & Research — Exchange prices are a useful independent signal when modelling, precisely because they are not a bookmaker's opinion with margin applied.
Kalshi API Technical Specifications
API Architecture
- REST API — standard HTTP endpoints returning clean JSON
- WebSocket feeds — real-time push updates, no polling required
- Rate limits — scalable plans matched to your usage volume
- Authentication — secure API key access
Data Update Speed
- Odds updates — sub-minute refresh on the Pro plan; Rookie and the free Amateur tier refresh on a longer interval. See pricing for the frequency on each tier.
- Live scores — updated in real time during events
Developer Resources
- Interactive documentation — live examples and copy-paste snippets
- SDKs & libraries — JavaScript/TypeScript, Python, Ruby, Go and Java
- Postman collection — pre-built requests ready to run
- Dedicated technical support across paid plans
More prediction markets and exchanges:
Polymarket Odds API · Novig Odds API · Betfair Exchange Odds API
What is the Kalshi API?
How is a prediction market different from a sportsbook in the API?
Which sports and leagues does Kalshi cover?
Does Kalshi coverage include player markets?
How do I request only Kalshi prices?
Can I use this to find arbitrage between Kalshi and sportsbooks?
Is there a free tier?
Ready to get started?
Join thousands of developers building the next generation of sports and betting applications.