Esports viewership API.
Streams and audience numbers on match ids.

Broadcast and audience data on the same match records as your odds and scores: stream links per fixture and viewership signals where official broadcasts report them, keyed by kr_match_id.

Why this surface exists

Viewership data lives and dies by the join to the match. Channel-level numbers with no fixture id can't answer 'which match pulled this audience'.

What the record represents

Stream and audience fields ride on match rows: kr_match_id, status, competition, and the broadcast entries reported for it.

Core endpoints

GET /v7/{sport}/uav?include=streams for broadcast links, /matches for the fixture index, /research for context.

EndpointPurposeKey filters
GET /v7/{sport}/uavPrematch + live bundleinclude=streams
GET /v7/{sport}/matchesFixture indexstatus, competition
GET /v7/{sport}/researchTournament contextquery
WS /v7/live/wsLive match pushBuilder+

Canonical IDs

  • : kr_match_id
  • : kr_tm_*
  • : slug

Sample payload

An LoL fixture with its official broadcast stream entry.

FieldExampleUsed for
kr_match_idkr_lol_…Joins broadcast to fixture
streams[]platform, channelOfficial broadcast links
statusupcoming|live|finishedWhen the audience counts
GET /v7/cs2/uav?match={kr_match_id}&include=streams
{
  "available": true,
  "kr_match_id": "kr_lol_t1-vs-geng-04-11-2026",
  "match": {
    "team1": "T1",
    "team2": "Gen.G",
    "status": "live"
  },
  "streams": [
    {
      "platform": "twitch",
      "channel": "riotgames",
      "language": "en",
      "official": true
    }
  ]
}

Comparing sources

Broadcast and organizer sources, normalized to KR ids.

SourceSchemaBest use
Charts blogsManual, stale weeklyReports
Raw Twitch APIChannel-level, no match joinPartial
KashRock viewershipStreams on match idsProducts

How to use it

Finished series keep their broadcast record alongside the boxscore.

Operational practices

  • : include=streams on the fixture
  • : status=live for in-play audiences
  • : Empty means unreported, not zero

Quick reference

GET /v7/lol/uav?match={kr_match_id}&include=streams returns broadcast links for the fixture. 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

Where do the viewership numbers come from?

Official broadcast sources tied to the fixture. Where an organizer or platform reports audience figures, they ride on the same kr_match_id as scores and odds; where nothing is reported, the response says so instead of inventing a number.

Which titles are covered?

All nine: CS2, Valorant, League of Legends, Dota 2, Call of Duty, Rainbow Six, Mobile Legends, Deadlock, and Apex Legends.

Can I build a live tracker on it?

Yes. Pair include=streams on the fixture with the live bundle, then subscribe on WS /v7/live/ws on Builder or Pro for real-time match state.