How it works.
Quick answer: KashRock pulls esports props, odds, and stats from every book and provider it covers, maps every player, team, and match onto one canonical KashRock ID, and returns all of it in the same JSON schema — so your code reads one API instead of a different response shape per source.
Standardized JSON
Consistent response shape regardless of the source provider or esports title. Your client code stays the same when a book or feed changes underneath. A CS2 kills prop and a Dota 2 kills prop come back with the same fields — propId, stat_type, line, odds — only the stat_typevalue changes. Add a ninth title tomorrow and your parsing logic doesn't fork.
Cross-source mapping
Canonical IDs across players, teams, and matches keep joins stable when nicknames or roster labels diverge across books and stats providers. We hit this directly: an upstream source corrected a match's team order after the fact — a typo fix, not a rename — and the ID we'd minted from the original label almost froze permanently, so the correction would never have reached callers who followed the fixed link. Match identity now tracks the match itself, not whichever label happened to arrive first, so an upstream correction doesn't break the ID downstream.
One props call
Example shape from GET /v7/cs2/props:
{
"source": "kashrock",
"sport": "cs2",
"props": [
{
"propId": "kr_prop_…",
"player_name": "fear",
"stat_type": "CS2_KILLS_MAPS_1_2",
"line": 25.5,
"odds": -118,
"direction": "over",
"team": "Fnatic",
"book_name": "PrizePicks"
}
]
}Same convention on a different endpoint — GET /v7/cs2/matches:
{
"source": "kashrock",
"kr_match_id": "kr_cs2_imperial-vs-bestia-2026-08-15",
"slug": "imperial-vs-bestia-2026-08-15",
"sport": "esports_cs2",
"status": "not_started",
"event_time": "2026-08-15T20:00:00Z"
}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.