HTTP API Reference
Match Statistics
HTTP API reference for full CS2 match analytics — weapons, utility, teams, and top performers
Match Statistics API
Get pre-aggregated analytics for a single CS2 map: match metadata, overview, per-player stats, weapon stats, utility usage, team totals, and top performers.
Get match stats
GET /api/v1/cs2/matches/:mapId/statsScope: servers:read
curl -X GET "https://api.sweathost.com/api/v1/cs2/matches/MAP_UUID/stats" \
-H "Authorization: Bearer YOUR_API_KEY"Response structure
{
"match": { ... },
"overview": { ... },
"players": [ ... ],
"weaponStats": { ... },
"utilityStats": { ... },
"teamStats": { ... },
"topPerformers": { ... },
"recentKills": [ ... ],
"demos": [ ... ]
}match
Basic map metadata.
| Field | Type | Description |
|---|---|---|
id | string | Unique map ID |
matchId | string | null | Legacy/external match reference |
seriesId | string | Parent series ID |
serverId | string | Server ID |
serverName | string | Server display name |
map | string | Map name (e.g. de_dust2) |
gameMode | string | Game mode |
team1Name | string | null | Team 1 name |
team2Name | string | null | Team 2 name |
team1Score | number | Team 1 round score |
team2Score | number | Team 2 round score |
status | string | e.g. finished, live |
startedAt | string | ISO 8601 |
finishedAt | string | null | ISO 8601 |
duration | number | null | Seconds |
overview
Map-wide aggregate numbers.
| Field | Type | Description |
|---|---|---|
totalKills | number | Total kills |
totalDeaths | number | Total deaths |
totalAssists | number | Total assists |
totalRounds | number | Total rounds played |
totalDamage | number | Sum of all damage |
totalHeadshots | number | Total headshot kills |
averageKD | number | Average K/D across all players |
players
Array of player objects with extended stats. Each player includes:
| Field | Type | Description |
|---|---|---|
steamId | string | Steam ID |
name | string | In-game name |
team | number | 2=T, 3=CT |
kills | number | Kills |
deaths | number | Deaths |
assists | number | Assists |
headshots | number | Headshot kills |
mvps | number | MVPs |
score | number | Score |
damageDealt | number | null | Total damage |
utilityDamage | number | null | Utility damage |
flashAssists | number | null | Flash assists |
firstKills | number | null | First kills |
firstDeaths | number | null | First deaths |
bombPlants | number | null | Bomb plants |
bombDefuses | number | null | Bomb defuses |
clutchWins | number | null | Clutch wins |
entryKills | number | null | Entry kills |
tradeKills | number | null | Trade kills |
bulletsFired | number | null | Bullets fired |
bulletsHit | number | null | Bullets hit |
accuracyPercent | number | null | Accuracy % |
hsPercent | number | null | Headshot % |
kdRatio | number | null | K/D ratio |
adr | number | null | Average damage per round |
kastPercent | number | null | KAST % |
impactRating | number | null | Impact rating |
roundsPlayed | number | null | Rounds played |
weaponStats | array | Per-weapon breakdown (see below) |
utilityStats | array | Per-utility breakdown (see below) |
Per-player weapon stats
Each element in player.weaponStats:
| Field | Type | Description |
|---|---|---|
weaponName | string | e.g. weapon_ak47 |
kills | number | Kills with this weapon |
headshots | number | Headshots |
damage | number | Damage dealt |
shotsFired | number | Shots fired |
shotsHit | number | Shots hit |
accuracyPercent | number | null | Accuracy % |
Per-player utility stats
Each element in player.utilityStats:
| Field | Type | Description |
|---|---|---|
utilityType | string | flashbang, he, smoke, molotov |
thrown | number | Number thrown |
enemiesFlashed | number | null | Enemies flashed |
damageDealt | number | null | Damage from utility |
successfulSmokes | number | null | Successful smokes |
weaponStats
Aggregated weapon data for the whole map.
| Key | Type | Description |
|---|---|---|
byWeapon | array | All weapons, sorted by kills desc |
byCategory | array | Grouped by category: Rifle, Sniper, SMG, Pistol, Heavy, Other |
topWeapons | array | Top 5 weapons by kills |
Each weapon entry: { weapon, kills, headshots, damage, hsRate }
utilityStats
| Key | Type | Description |
|---|---|---|
byType | array | Per utility type: { type, thrown, enemiesFlashed, damageDealt, successfulSmokes, effectiveness } |
total | number | Total utility thrown |
teamStats
Per-team totals (team1 and team2):
| Field | Type | Description |
|---|---|---|
name | string | Team name |
score | number | Round score |
totalKills | number | Team total kills |
totalDeaths | number | Team total deaths |
totalAssists | number | Team total assists |
totalDamage | number | Team total damage |
averageKD | number | Average K/D |
averageADR | number | Average ADR |
topPerformers
One player per category (full player object):
| Key | Description |
|---|---|
topKiller | Most kills |
topDamage | Highest total damage |
topHS | Highest headshot % |
demos (optional)
When present, array of demo file metadata:
| Field | Type | Description |
|---|---|---|
id | string | Demo ID |
fileName | string | File name |
fileSize | string | Size |
downloadUrl | string | null | Download URL |
recordedAt | string | ISO 8601 |
expiresAt | string | null | URL expiry |
Example: full stats request
curl -X GET "https://api.sweathost.com/api/v1/cs2/matches/MAP_UUID/stats" \
-H "Authorization: Bearer YOUR_API_KEY" \
| python3 -m json.toolExtract specific data with jq:
# Top killer name and kills
curl -s -X GET "https://api.sweathost.com/api/v1/cs2/matches/MAP_UUID/stats" \
-H "Authorization: Bearer YOUR_API_KEY" \
| jq '.topPerformers.topKiller | {name, kills}'
# Team comparison
curl -s -X GET "https://api.sweathost.com/api/v1/cs2/matches/MAP_UUID/stats" \
-H "Authorization: Bearer YOUR_API_KEY" \
| jq '.teamStats | {team1: {name: .team1.name, score: .team1.score, kills: .team1.totalKills}, team2: {name: .team2.name, score: .team2.score, kills: .team2.totalKills}}'
# Top 5 weapons
curl -s -X GET "https://api.sweathost.com/api/v1/cs2/matches/MAP_UUID/stats" \
-H "Authorization: Bearer YOUR_API_KEY" \
| jq '.weaponStats.topWeapons[] | "\(.weapon): \(.kills) kills (\(.hsRate)% HS)"'