Get a key

Esports Data API

KashRock is a DaaS for esports books and apps. Prefer the Esports MCP in Cursor/Claude so you never hunt endpoints. App builders: SDKs (npm install kashrock / pip install kashrock). HTTP stays for power users. Base URL https://kashrock.up.railway.app. See plans and coverage on the esports odds API and esports data API pages.

Live board

DFS player props on /props (includes links.player_image + team logos). Resolve media by name on /media. DFS + sportsbook named-player props on /player-props. Team mainlines on /lines.

DFS line gaps

GET /{sport}/gaps finds the same prop at different DFS lines (line_gap). Hobby plan.

Consensus lines

GET /{sport}/lines de-vigs Thunderpick + Kalshi + Polymarket into one fair probability and gated edges. Hobby plan.

Schedule

Fixtures and matches for CS2, Valorant, LoL, Dota 2, COD, R6, MLBB, and Deadlock.

Research

One player, one market: live line, series totals, coverage, and settled outcomes.

Settlement

Hit / miss / push on the same canonical stat_type you received on the board.


Quick start

HTTPS only. Pass your key on every /v6 request.

cURLGET
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://kashrock.up.railway.app/v6/esports/cs2/props"
200 · live prop
{
  "propId": "kr_prop_883ba7a1e090",
  "eventId": "kr_ev_d9410a855f83",
  "offerId": "kr_prop_883ba7a1e090_6_over",
  "book_name": "Betr",
  "player_name": "mezii",
  "stat_type": "CS2_HEADSHOTS_MAPS_1_2",
  "line": 14.5,
  "direction": "over",
  "team": "Team Vitality",
  "opponent": "Lynn Vision Gaming",
  "event_time": "2026-08-16T13:55:00.000Z"
}

Authentication

Create keys in the Console. Send either header:

  • X-API-Key: YOUR_API_KEY
  • Authorization: Bearer YOUR_API_KEY

Keep keys server-side. Do not ship them in browsers or public repos.

Sports

Use the slug in the path as {sport}.

cs2valorantloldota2codr6mlbbdeadlock

ID system

Every prop row carries six IDs. Use the kr_ fields to join books, matches, and live data.

FieldLayerPurpose
eventIdMatchSame game across every book's props and lines.
kr_match_idMatchSame match on /matches, /live, and /gamelogs — join a prop straight to its boxscore, no team/date matching required.
propIdMarketPlayer + stat + line. Shared by over and under.
offerIdSelectionOne book × direction. Use this on a bet slip.
source_event_idProviderRaw event id from the book.
source_prop_idProviderRaw prop id from the book.

eventId and kr_match_id are minted by two different pipelines for the same match, so every prop row now carries both directly — call GET /v6/esports/{sport}/matches/{kr_match_id}/boxscore with the value straight off a props response. A prop from a match KashRock hasn't cross-referenced yet returns kr_match_id: null— that's honest "not yet available," not a broken join.

Errors

JSON body with a detail string.

StatusMeaning
401Missing or invalid API key.
403Key is not allowed on this route.
404No tape or player for that query.
409More than one player matches the name.
422Bad or missing parameter.
429Rate limited. Back off and retry.
503Vault or cache unavailable. Retry.