Market · CS2 · Live now

Esports odds & data, one call away.

A de-vigged market line combined from multiple bookmakers — never any single book’s price — plus CS2 match data and player stats. Built for developers, data products, and trading desks.

One plan · $99/mo · 10,000 requests | Demo below — no signup
GET /v1/cs2/odds200 OK · 84ms
$ curl -H "Authorization: Bearer $EO_KEY" \
    api.esportsodds.gg/v1/cs2/odds

{
  "source":      "eo_market",
  "outcome_key": "home",
  "label":       "NAVI",
  "price":       1.72,
  "book_count":  4,
  "captured_at": "2026-07-02T18:04:11Z"
}
22,000+
Matches tracked
≤90s
Odds update cadence
2+
Books behind every line
$99
One plan, flat
Real product sample

The market line

Real output from the same API you’d call: our derived multi-book line — never any single bookmaker’s price — refreshed on our ingest cadence. Informational only.

MatchStatusMarket AMarket B24h
LargadosyPelados vs FDBLive3.291.44
mellren vs LPHLive1.762.32
PRV vs FaZeLive2.381.73
Quickstart

From key to first odds in under a minute

Plain REST with Authorization: Bearer auth plus a WebSocket update stream — no SDK required, works from any language. Every response is documented in the OpenAPI reference.

  1. 01Create your key
  2. 02Call the REST API
  3. 03Open the update stream
quickstart.sh
# latest market line for CS2 matches
$ curl -H "Authorization: Bearer $EO_KEY" \
    "https://api.esportsodds.gg/v1/cs2/odds"

# matches, teams, players, tournaments
$ curl -H "Authorization: Bearer $EO_KEY" \
    "https://api.esportsodds.gg/v1/cs2/matches?status=live"

# live updates: mint a 60s ticket, then connect
$ curl -X POST -H "Authorization: Bearer $EO_KEY" \
    "https://api.esportsodds.gg/v1/cs2/ws-token"
API surface

One normalized schema, six resources

GET /v1/cs2/odds
The de-vigged market line for every tracked match, with book count and capture time.
GET /v1/cs2/matches
Live, scheduled and finished matches — filterable by status, team, and tournament.
GET /v1/cs2/players
Player profiles and per-match stats, linked to teams and rosters.
GET /v1/cs2/teams
Team records, rosters, and identifiers that stay stable across tournaments.
GET /v1/cs2/tournaments
Events, stages and brackets — the context around every match on the wire.
POST /v1/cs2/ws-token
Mint a 60-second ticket and open the WebSocket stream for push updates.
Markets

One market available, more scheduled

Match winnerMap winner · roadmapTotal maps · roadmapHandicap · roadmap

Match-winner lines are available today. The next markets ship as their data clears the same quality bar — see the methodology for the honest status of each.

Why us

Built for production

Push updates
A WebSocket stream notifies you the moment a line or score updates in our feed — you re-pull only what moved.
Normalized schema
One consistent, documented shape for every match, team, player and line.
Append-only history
Every line is a timestamped time series — movement is preserved for backtesting, never overwritten.
History

Every tick, kept forever

Lines are never overwritten. Each capture is appended with its timestamp, so you can replay how the market moved through a match — pre-game drift, the map-one swing, the comeback — and backtest against the exact prices that existed at the time.

≤90s
Capture interval
100%
Ticks retained
UTC
Timestamped
NAVI to win · eo_market · last 6h1.72 ▲
12:0013:0014:0015:0016:0017:0018:00
eo_marketopponent line
Coverage

One API, every title on the roadmap

CS2● Live
Counter-Strike 2
Market line · matches · stats
LoLQ3 '26
League of Legends
In development
DotaQ4 '26
Dota 2
Planned
VAL2027
Valorant
On the roadmap
Who it's for

Three desks, one feed

01 / Developers
Build match pages that update themselves

Stable IDs, one schema, and a push stream — wire scores and odds into your product without babysitting a scraper.

02 / Data products
Publish stats your readers can trust

Player and team stats normalized across tournaments, with a market line that’s derived — never one book’s opinion.

03 / Trading desks
Backtest against real line movement

Append-only odds history with capture timestamps — model against the prices that actually existed, tick by tick.

Pricing

One plan.
Everything included.

No tiers, no metering surprises, no sales calls. $99 a month covers every endpoint, the WebSocket stream, and 10,000 requests. Higher volume? Contact us.

7-day free trial · card required · cancel anytime

EO-PLAN-001
$99/mo
10,000 requests / month
All REST endpoints + WebSocket access CS2 match, team, player & tournament data + stats De-vigged multi-book market line (eo_market) Our model odds line (eo_model) — coming soon Dashboard access & usage analytics
Start your 7-day free trial
FAQ

Frequently asked

Where does the odds data come from?
We publish a derived market line — de-vigged and combined from multiple bookmakers and exchanges (never any single book’s price, and never naming the books) — with our own modeled line coming soon, once it clears validation. See our methodology.
How fresh is the data?
Lines and match data refresh on a polling cadence — typically within tens of seconds of an upstream change — with a WebSocket stream that notifies you the moment something updates. Freshness, not a countdown.
Which games are supported?
CS2 is available today; League of Legends, Dota 2 and Valorant are on the roadmap.
Is there a free plan?
No — one plan at $99/mo for 10,000 requests, with a 7-day free trial (card required, cancel anytime before it ends).

Ship your first odds feed today

One plan — $99/mo for 10,000 requests. Production-ready in minutes.