Prediction market API.
Kalshi + Polymarket, one esports schema.

Prediction markets price outcomes in probability space. Sportsbooks price them in odds. If you scrape each venue separately, you rebuild de-vig and team identity forever. A prediction market API for esports should hand you normalized probabilities — and a consensus path when you want books and markets in one response.

Why prediction markets need a schema

Kalshi and Polymarket do not share team strings, contract IDs, or probability conventions with Thunderpick. Without a schema, every model rebuilds de-vig and fuzzy name matching.

Practical rule: treat prediction-market probabilities as first-class inputs — convert sportsbook odds to the same de-vigged space before you average anything.

What we normalize

We normalize match/map mainlines into a common outcome list with per-source probability, American/decimal where available, and volume/OI/liquidity fields when the venue provides them (null when not — never invented).

Props board vs consensus lines

/props?book=kalshi|polymarket is the venue board. /lines is the cross-venue consensus layer (Hobby+).

Core endpoints

Sport path-style routes under /v6/esports/{sport}/. Same auth header as the rest of KashRock.

EndpointPurposeKey filters
GET /v6/esports/{sport}/linesConsensus + per-source probs (Hobby+)sport path: cs2, lol, …
GET /v6/esports/{sport}/props?book=kalshiKalshi board as normalized propsbook=kalshi
GET /v6/esports/{sport}/props?book=polymarketPolymarket board as normalized propsbook=polymarket
GET /v6/esports/cs2/props?book=thunderpickSportsbook mainlinesbook=thunderpick

Identity and join keys

  • event_id / matchup_key for series joins across venues
  • outcome name normalized for consensus buckets
  • source + type (prediction_market vs sportsbook)

Sample JSON (live Kalshi + Polymarket)

Live CS2 match_winner slice with both Kalshi and Polymarket on the same event (from /v6/esports/cs2/lines).

FieldExampleUsed for
outcomes[].consensus_probability0.61156De-vig weighted mean
sources[].sourcekalshi / polymarketVenue
sources[].typeprediction_marketVenue class
sources[].probability0.6154De-vigged source prob
sources[].american-160American quote when present
top_edges[].edge_pct1.33Informational EV vs consensus
GET /v6/esports/cs2/lines
{
  "source": "kashrock",
  "sport": "cs2",
  "event_id": "kr_ev_4209ed58edd7",
  "home_team": "NRG Esports",
  "away_team": "Liquid",
  "market": "match_winner",
  "outcomes": [
    {
      "name": "team liquid",
      "consensus_probability": 0.61156,
      "sources": [
        {
          "source": "kalshi",
          "type": "prediction_market",
          "probability": 0.6154,
          "american": -160
        },
        {
          "source": "polymarket",
          "type": "prediction_market",
          "probability": 0.605,
          "american": -153
        }
      ]
    },
    {
      "name": "nrg",
      "consensus_probability": 0.38844,
      "sources": [
        {
          "source": "kalshi",
          "type": "prediction_market",
          "probability": 0.3802,
          "american": 163
        },
        {
          "source": "polymarket",
          "type": "prediction_market",
          "probability": 0.395,
          "american": 153
        }
      ]
    }
  ]
}

Markets vs sportsbooks

Prediction markets for crowd/exchange probability. Sportsbooks for traditional prices. Consensus when you want both without maintaining three clients.

SourceSchemaBest use
Raw Kalshi / Polymarket APIsVenue-nativeSingle-market bots
Sportsbook-only odds APINo PM probsBook shopping
KashRock prediction market APIPM + book, one schemaCalibration & consensus

Using consensus responsibly

Consensus edge fields are informational. Quality flags (unreliable, suspect_edge) exist so you can drop noisy prints — not so you can treat every edge as a bet.

Practical rule: settle outcomes from finalized match results, not from a live probability tick.

Operational practices

  • Prefer /lines for multi-venue reads (one request)
  • Null liquidity/OI means the venue did not publish it
  • Hobby+ required for /lines; props boards follow plan gates

Quick reference

Board: /props?book=kalshi or polymarket. Consensus: /lines. Deep dive: esports consensus API.

If you need a normalized feed instead of another UI wrapper, KashRock exposes live boards, schedules, and history on one schema — with the IDs and outcome patterns that keep backtests and grading honest. Start free on Sandbox, or see published pricing.

Frequently asked questions

What is a prediction market API for esports?

An API that returns Kalshi/Polymarket (and similar) esports markets as normalized probabilities and American odds, joinable to sportsbook lines on the same event identity.

How do I get Kalshi and Polymarket together?

Call GET /v6/esports/{sport}/lines on Hobby+. Each outcome lists per-source probabilities and a consensus_probability. Or filter /props?book=kalshi|polymarket for venue boards.

How is consensus calculated?

Each source is de-vigged so outcomes sum to 1.0. Consensus is a weighted mean — prediction markets default to weight 1.5 vs the sportsbook. Edge is informational, not betting advice.

Is there a free tier?

Sandbox is free for CS2 props schema checks. Consensus /lines is on Hobby+. See esports API pricing.