Gaps
DFS book-vs-book line spreads. Same player, event, and stat_type with different posted lines → line_gap = line_max − line_min. Not model edges. Hobby+.
GET/v6/esports/{sport}/gaps
Marketing guide: /esports-line-gaps-api. MCP: get_gaps.
| Param | Type | Required | Description |
|---|---|---|---|
| sport | path | Yes | cs2, valorant, lol, dota2, cod, r6, mlbb, deadlock |
| min_gap | number | — | Default 0.5. Use 0 for every multi-book spread. |
| player | string | — | Name or id substring |
| market | string | — | e.g. kills — matches market label / stat_type |
| market_contains | string | — | Substring on stat_type |
| book | string | — | Require this DFS book in the row |
| limit | int | — | 1–500, default 100 |
| offset | int | — | Pagination offset |
cURLGET
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/gaps?min_gap=0.5&limit=1"
200 · live gap row
{
"source": "kashrock",
"sport": "cs2",
"min_gap": 0.5,
"total": 70,
"returned": 1,
"offset": 0,
"limit": 1,
"has_more": true,
"gaps": [
{
"gap_id": "gap_ce3fbab1ef1e",
"player_id": "kr_pl_6b8fc7792bfe",
"player_name": "khaN",
"team": "Nemiga",
"opponent": "Just_Players",
"event_id": "kr_ev_5886cc9220e5",
"event_time": "2026-09-12T17:00:00.000Z",
"stat_type": "CS2_KILLS_MAPS_1_2",
"market": "kills",
"line": 31.5,
"line_min": 30.5,
"line_max": 32.5,
"line_gap": 2,
"book_count": 5,
"books": [
{
"book": "sleeper",
"line": 30.5,
"propId": "kr_prop_aa230791ff25",
"direction": "over"
},
{
"book": "betr",
"line": 31.5,
"propId": "kr_prop_0a7fec48daa2",
"direction": "over"
},
{
"book": "boom",
"line": 31.5,
"propId": "kr_prop_0a7fec48daa2",
"direction": "over"
},
{
"book": "prizepicks",
"line": 31.5,
"propId": "kr_prop_0a7fec48daa2",
"direction": "over"
},
{
"book": "underdog",
"line": 32.5,
"propId": "kr_prop_67030b9dbc0f",
"direction": "over"
}
]
}
]
}Books in scope: prizepicks, underdog, dabble, parlayplay, sleeper, betr, boom, pick6. Lines ≤ 0 and moneylines are excluded. Sorted by line_gap desc.