CS2 live odds API.
In-play lines, pushed in real time.

Live CS2 odds as the series plays: match winner and map markets across books, DFS kills and headshots props, and a consensus fair price, all on the same kr_match_id your scoreboard uses.

Why this surface exists

In-play CS2 odds move round to round. A feed that can't tell you its own age, or that joins live lines to a different match id, poisons any in-play product.

What the record represents

Live line rows carry kr_match_id, market scope, per-book prices with age in seconds, and the map context for map-scoped markets.

Core endpoints

GET /v7/cs2/lines for board prices, /props for DFS, /live/{game_id}/boxscore for the match state, WS /v7/live/ws for push.

EndpointPurposeKey filters
GET /v7/cs2/linesLive match/map linesstatus=live
GET /v7/cs2/propsIn-play DFS propsstat_type
WS /v7/live/wsReal-time board pushsport=cs2 (Builder+)
GET /v7/cs2/live/{game_id}/boxscoreLive K/D/A boardper map

Canonical IDs

  • : kr_match_id
  • : propId
  • : market_key
  • : game_id

Sample payload

A live CS2 map_winner line with two books and per-book age.

FieldExampleUsed for
age_ssecondsPer-book staleness
marketmatch_winner|map_winner|…Scope is explicit
consensusfair price (Hobby+)De-vigged board view
GET /v7/cs2/lines?status=live
{
  "available": true,
  "sport": "cs2",
  "market": "map_winner",
  "match": {
    "kr_match_id": "kr_cs2_vitality-vs-mouz-04-11-2026",
    "status": "live",
    "map": 2
  },
  "books": [
    {
      "book": "thunderpick",
      "outcome": "team2",
      "decimal": 2.1,
      "age_s": 3
    },
    {
      "book": "kalshi",
      "outcome": "team2",
      "decimal": 2.04,
      "age_s": 7
    }
  ]
}

Comparing sources

CS2 line workers across sportsbooks, DFS venues, and prediction markets.

SourceSchemaBest use
One book's odds pageTheir price only, delayedNarrow
Odds screen scrapingBreaks on layout changesFragile
KashRock CS2 oddsWhole board on KR idsProducts

How to use it

In-play offers settle on /v7/cs2/results against the finalized map record.

Operational practices

  • : Trust books[].age_s over your own clock
  • : Scope filters to the map
  • : WebSocket for real-time

Quick reference

GET /v7/cs2/lines?status=live returns in-play lines on canonical match ids. Get your free key.

If you need a normalized feed instead of another UI wrapper, the esports api 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

How live is live?

Builder and Pro push board updates over WebSocket in real time, and each row carries age in seconds. Hobby reads the same routes on a 15-second delay.

Does it cover props too?

Yes. DFS kills, headshots, and map-scoped props post on /v7/cs2/props on the same kr_match_id as the mainlines.

Is there a free tier?

Sandbox is $0 for CS2 props and match discovery, 1,500 credits per UTC day, no card. Consensus lines and every book start at Hobby ($29.99/mo).