Betting Exchange

Kalshi Odds API

Access Kalshi prediction market prices through the SportsGameOdds API. Normalised into the same schema as sportsbook odds, so comparing a regulated exchange against 85+ books is a single request.

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:

FootballNFL, college football BasketballNBA, WNBA, college basketball BaseballMLB HockeyNHL 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

More prediction markets and exchanges:

Polymarket Odds API · Novig Odds API · Betfair Exchange Odds API

What is the Kalshi API?
Kalshi prediction market prices delivered as structured JSON through the SportsGameOdds API. Kalshi appears as a bookmakerID inside the same byBookmaker block as conventional sportsbooks, keyed by the same oddID, so exchange and book prices arrive in one response with no separate integration.
How is a prediction market different from a sportsbook in the API?
Structurally, it isn't — that's the point. Kalshi prices come from traders taking both sides of a contract rather than a bookmaker setting a line with margin, but the API normalises them into the same schema as every sportsbook, so the same parsing code handles both.
Which sports and leagues does Kalshi cover?
NFL and college football, NBA, WNBA and college basketball, MLB, NHL, UFC, PGA Tour, ATP and WTA tennis, plus soccer across the Premier League, La Liga, Bundesliga, Serie A, Ligue 1, the Champions League, the Europa League, MLS and international fixtures.
Does Kalshi coverage include player markets?
Yes. Alongside game winners, Kalshi carries player markets including passing, rushing and receiving yards, receptions, touchdowns, points, rebounds, assists, three-pointers, double-doubles and triple-doubles, goalkeeper saves and first-scorer markets. Check the Supported Markets reference for the current per-league breakdown.
How do I request only Kalshi prices?
Add bookmakerID=kalshi to an events request. To compare against sportsbooks in the same call, pass a comma-separated list such as bookmakerID=kalshi,draftkings,pinnacle.
Can I use this to find arbitrage between Kalshi and sportsbooks?
That is the most common reason people integrate it. Because exchange and sportsbook prices are set by different mechanisms they drift apart, and having both in a shared schema keyed by the same oddID is what makes the gap detectable programmatically.
Is there a free tier?
Yes. The free Amateur tier lets you query real Kalshi data before committing to a paid plan, and the Rookie and Pro plans each include a 7-day trial.

Ready to get started?

Join thousands of developers building the next generation of sports and betting applications.