Players
Search by nickname, load a profile by id or slug, then pull recent map logs. Faces and team logos live under links — same shape as props and media.
Search
| Param | Type | Required | Description |
|---|---|---|---|
| sport | path | Yes | Sport slug. |
| q | string | Yes | Nickname. Alias: search |
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/players/search?q=zywoo"
Or list/filter: GET /v6/esports/cs2/players?search=zywoo — each row has links.player_image.
{
"source": "kashrock",
"sport": "cs2",
"players": [
{
"player_id": 18452,
"nickname": "ZywOo",
"slug": "zywoo",
"team_id": 667,
"links": {
"player_image": "https://img.bo3.gg/uploads/player/18452/image/example.webp"
}
}
],
"total_players": 1
}Profile
player_id can be numeric (18452) or slug (zywoo).
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/players/zywoo"
{
"source": "kashrock",
"sport": "cs2",
"player": {
"id": 18452,
"nickname": "ZywOo",
"slug": "zywoo",
"team": "Team Vitality",
"links": {
"player_image": "https://img.bo3.gg/uploads/player/18452/image/example.webp",
"team_logo": "https://img.bo3.gg/uploads/team/667/image/example.webp"
}
}
}Stats
Canonical KPR and related foundation stats for the player.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/players/zywoo/stats"
Gamelogs
Per-map logs, newest first. Page through them with a cursor and narrow them with dates.
| Param | Type | Required | Description |
|---|---|---|---|
| player_slug | path | Yes | Nickname or slug. |
| limit | int | — | Maps per page. Default 500, capped to your plan maximum. A larger value is capped, never rejected. |
| cursor | string | — | The next_cursor from the previous page. Leave it out for the newest maps. |
| from | date | — | Oldest map date to include, as YYYY-MM-DD in UTC. Cannot reach past your plan window. |
| to | date | — | Newest map date to include, as YYYY-MM-DD in UTC. The whole day is included. |
| include | string | — | Set to rounds to add per-round timelines on pages larger than 500 maps. |
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/players/zywoo/gamelogs?limit=100"
Rows include combat plus sport-native model fields when present (gold, GPM, DPM, hero, items). Missing fields stay missing. Mobile Legends and Deadlock use the same path as CS2.
Plan limits
- Sandbox: up to 100 maps per page, from the last 30 days.
- Hobby: up to 500 maps per page, from the last 90 days.
- Builder: up to 2,000 maps per page, full history.
- Pro: up to 5,000 maps per page, full history.
Paging
The response includes next_cursor while more maps remain, and null on the last page. Pass it back as cursor with the same filters to get the next page. Order stays stable while you page, and total is the number of maps inside your plan window and date filters.
curl -H "X-API-Key: YOUR_API_KEY" \
"https://kashrock.up.railway.app/v6/esports/cs2/players/zywoo/gamelogs?limit=100&cursor={next_cursor}"Per-round timelines come back on pages of 500 maps or fewer. Larger pages leave them out so big pages stay fast; add include=rounds to get them. The response field rounds_included tells you which you received.