Skip to main content

Overview

Prediction markets like Polymarket and Kalshi allow users to trade on the outcome of events using an order book model. Unlike traditional bookmakers with fixed odds, these platforms have buyers and sellers creating a dynamic market. Our API normalizes this data into the same format as traditional bookmakers, making it easy to compare odds across all sources.
Our API covers sports events on Polymarket and Kalshi, normalizing their order books into the same format as traditional bookmakers.

How Prediction Markets Work

On platforms like Polymarket and Kalshi, prices are shown in cents (0-100), representing the implied probability. For example:
  • 60 cents = 60% implied probability
  • 21 cents = 21% implied probability
We convert these prices to decimal odds for consistency with traditional bookmakers.

Price to Odds Conversion

Prediction markets have a spread between buy (back) and sell (lay) prices. The table below shows back prices - what you pay to bet on an outcome:
Platform PriceImplied ProbabilityDecimal Odds
60¢60%1.67
21¢21%4.76
23¢23%4.35
Formula: Decimal Odds = 1 / (Price in cents / 100)

Visual Comparison

Here’s how the same match appears on Kalshi and Polymarket, and how our API returns the data.

Kalshi

Kalshi showing Leeds United vs Arsenal match
Kalshi displays prices in cents with Yes/No buttons. Arsenal at 63¢ means you pay 63 cents to win 1 dollar if they win.

Polymarket

Polymarket showing Leeds vs Arsenal with order book
Polymarket shows the same match with decimal odds (LEE 6.67, DRAW 4.35, ARS 1.56) and a full order book with bids and asks at multiple price levels.
Our API returns top-of-book prices (best bid and ask) rather than the full order book depth. This gives you the actionable prices without the complexity of managing multiple price levels.

API Response

Fetch prediction market odds using the standard /v3/odds endpoint:
curl "https://api.odds-api.io/v3/odds?eventId=61300983&bookmakers=Polymarket,Kalshi&apiKey=YOUR_API_KEY"

Example Response

{
  "id": 61300983,
  "home": "Leeds United",
  "away": "Arsenal FC",
  "date": "2026-01-31T15:00:00Z",
  "status": "pending",
  "sport": {
    "name": "Football",
    "slug": "football"
  },
  "league": {
    "name": "England - Premier League",
    "slug": "england-premier-league"
  },
  "urls": {
    "Kalshi": "https://kalshi.com/events/KXEPLGAME-26JAN31LEEARS",
    "Polymarket": "https://polymarket.com/event/epl-lee-ars-2026-01-31"
  },
  "bookmakerIds": {
    "Kalshi": "KXEPLGAME-26JAN31LEEARS",
    "Polymarket": "170912"
  },
  "bookmakers": {
    "Kalshi": [
      {
        "name": "ML",
        "updatedAt": "2026-01-28T10:06:39.424Z",
        "odds": [
          {
            "home": "6.25",
            "draw": "4.35",
            "away": "1.56",
            "layHome": "1.61",
            "layAway": "7.14",
            "layDraw": "4.76",
            "depthHome": "9215",
            "depthAway": "2164",
            "depthDraw": "7670",
            "depthLayHome": "5371",
            "depthLayAway": "250",
            "depthLayDraw": "1197"
          }
        ]
      }
    ],
    "Polymarket": [
      {
        "name": "ML",
        "updatedAt": "2026-01-28T09:55:32.185Z",
        "odds": [
          {
            "home": "6.67",
            "draw": "4.35",
            "away": "1.56",
            "layHome": "1.61",
            "layAway": "7.14",
            "layDraw": "4.55",
            "depthHome": "12128",
            "depthAway": "331",
            "depthDraw": "26086",
            "depthLayHome": "9401",
            "depthLayAway": "2112",
            "depthLayDraw": "1630"
          }
        ]
      }
    ]
  }
}

Field Reference

Standard Fields

These fields work the same as traditional bookmakers:
FieldDescription
homeDecimal odds for home team to win
drawDecimal odds for a draw
awayDecimal odds for away team to win
updatedAtISO timestamp of last price update

Prediction Market Fields

These additional fields are unique to prediction markets:
FieldDescription
layHomeOdds to bet against the home team winning
layDrawOdds to bet against a draw
layAwayOdds to bet against the away team winning
depthHomeAvailable liquidity (USD) to back home team
depthDrawAvailable liquidity (USD) to back a draw
depthAwayAvailable liquidity (USD) to back away team
depthLayHomeAvailable liquidity (USD) to lay home team
depthLayDrawAvailable liquidity (USD) to lay a draw
depthLayAwayAvailable liquidity (USD) to lay away team

URLs and IDs

FieldDescription
urls.KalshiDirect link to the event on Kalshi
urls.PolymarketDirect link to the event on Polymarket
bookmakerIds.KalshiKalshi’s internal event identifier
bookmakerIds.PolymarketPolymarket’s internal event identifier
Use bookmakerIds to execute trades directly via Kalshi or Polymarket APIs. Fetch odds from our API, then place orders on their platforms using their native event IDs.

Understanding Back vs Lay Odds

Prediction markets operate like betting exchanges where you can either:
  • Back (buy yes): Bet on an outcome to happen
  • Lay (buy no): Bet against an outcome happening
The home, draw, and away fields represent the best available price to back (bet for) each outcome. This is equivalent to standard bookmaker odds.Example: "away": "1.56" means you can back Arsenal to win at odds of 1.56 (stake 100towin100 to win 56 profit).
The layHome, layDraw, and layAway fields represent the best available price to lay (bet against) each outcome. When you lay, you’re acting as the bookmaker.Example: "layAway": "7.14" means you can bet against Arsenal winning. To win 100ifArsenaldoesntwin,yourisk100 if Arsenal doesn't win, you risk 614 in liability if they do win. The lay odds represent your potential liability, not your payout.
The depth fields show how much money (in USD) is available at the current best price.Why this matters: A price with $50 depth looks good on paper, but you can’t get meaningful size on it. Always check depth before assuming a price is actionable.Example: "depthAway": "2164" means there’s $2,164 available to back Arsenal at the current price. Bets larger than this will get worse prices as they eat into the order book.

Available Markets

Kalshi Markets

Kalshi offers several market types for sports events:
MarketDescription
MLMatch result (Home/Draw/Away)
SpreadHandicap betting
TotalsOver/under total goals
Both Teams To ScoreYes/No on both teams scoring

Polymarket Markets

MarketDescription
MLMatch result (Home/Draw/Away)
TotalsOver/under total goals
Both Teams To ScoreYes/No on both teams scoring

Comparing with Traditional Bookmakers

You can mix prediction markets with traditional bookmakers in the same request:
curl "https://api.odds-api.io/v3/odds?eventId=61300983&bookmakers=Polymarket,Kalshi,Bet365,Unibet&apiKey=YOUR_API_KEY"
This allows you to:
  • Find the best odds across all platforms
  • Identify arbitrage opportunities
  • Compare exchange prices with fixed-odds bookmakers
Prediction markets often have better odds for popular events due to lower margins, but may have less liquidity for obscure matches.

Use Cases

Arbitrage Detection

Compare back/lay odds across prediction markets to find guaranteed profit opportunities.

Best Odds Search

Include prediction markets in your odds comparison to find the highest available prices.

Liquidity Analysis

Use depth fields to understand how much you can bet before moving the market.

Market Sentiment

Track how prediction market prices move compared to traditional bookmakers.

Next Steps