SweatHost
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/stats

Scope: 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.

FieldTypeDescription
idstringUnique map ID
matchIdstring | nullLegacy/external match reference
seriesIdstringParent series ID
serverIdstringServer ID
serverNamestringServer display name
mapstringMap name (e.g. de_dust2)
gameModestringGame mode
team1Namestring | nullTeam 1 name
team2Namestring | nullTeam 2 name
team1ScorenumberTeam 1 round score
team2ScorenumberTeam 2 round score
statusstringe.g. finished, live
startedAtstringISO 8601
finishedAtstring | nullISO 8601
durationnumber | nullSeconds

overview

Map-wide aggregate numbers.

FieldTypeDescription
totalKillsnumberTotal kills
totalDeathsnumberTotal deaths
totalAssistsnumberTotal assists
totalRoundsnumberTotal rounds played
totalDamagenumberSum of all damage
totalHeadshotsnumberTotal headshot kills
averageKDnumberAverage K/D across all players

players

Array of player objects with extended stats. Each player includes:

FieldTypeDescription
steamIdstringSteam ID
namestringIn-game name
teamnumber2=T, 3=CT
killsnumberKills
deathsnumberDeaths
assistsnumberAssists
headshotsnumberHeadshot kills
mvpsnumberMVPs
scorenumberScore
damageDealtnumber | nullTotal damage
utilityDamagenumber | nullUtility damage
flashAssistsnumber | nullFlash assists
firstKillsnumber | nullFirst kills
firstDeathsnumber | nullFirst deaths
bombPlantsnumber | nullBomb plants
bombDefusesnumber | nullBomb defuses
clutchWinsnumber | nullClutch wins
entryKillsnumber | nullEntry kills
tradeKillsnumber | nullTrade kills
bulletsFirednumber | nullBullets fired
bulletsHitnumber | nullBullets hit
accuracyPercentnumber | nullAccuracy %
hsPercentnumber | nullHeadshot %
kdRationumber | nullK/D ratio
adrnumber | nullAverage damage per round
kastPercentnumber | nullKAST %
impactRatingnumber | nullImpact rating
roundsPlayednumber | nullRounds played
weaponStatsarrayPer-weapon breakdown (see below)
utilityStatsarrayPer-utility breakdown (see below)

Per-player weapon stats

Each element in player.weaponStats:

FieldTypeDescription
weaponNamestringe.g. weapon_ak47
killsnumberKills with this weapon
headshotsnumberHeadshots
damagenumberDamage dealt
shotsFirednumberShots fired
shotsHitnumberShots hit
accuracyPercentnumber | nullAccuracy %

Per-player utility stats

Each element in player.utilityStats:

FieldTypeDescription
utilityTypestringflashbang, he, smoke, molotov
thrownnumberNumber thrown
enemiesFlashednumber | nullEnemies flashed
damageDealtnumber | nullDamage from utility
successfulSmokesnumber | nullSuccessful smokes

weaponStats

Aggregated weapon data for the whole map.

KeyTypeDescription
byWeaponarrayAll weapons, sorted by kills desc
byCategoryarrayGrouped by category: Rifle, Sniper, SMG, Pistol, Heavy, Other
topWeaponsarrayTop 5 weapons by kills

Each weapon entry: { weapon, kills, headshots, damage, hsRate }

utilityStats

KeyTypeDescription
byTypearrayPer utility type: { type, thrown, enemiesFlashed, damageDealt, successfulSmokes, effectiveness }
totalnumberTotal utility thrown

teamStats

Per-team totals (team1 and team2):

FieldTypeDescription
namestringTeam name
scorenumberRound score
totalKillsnumberTeam total kills
totalDeathsnumberTeam total deaths
totalAssistsnumberTeam total assists
totalDamagenumberTeam total damage
averageKDnumberAverage K/D
averageADRnumberAverage ADR

topPerformers

One player per category (full player object):

KeyDescription
topKillerMost kills
topDamageHighest total damage
topHSHighest headshot %

demos (optional)

When present, array of demo file metadata:

FieldTypeDescription
idstringDemo ID
fileNamestringFile name
fileSizestringSize
downloadUrlstring | nullDownload URL
recordedAtstringISO 8601
expiresAtstring | nullURL 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.tool

Extract 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)"'

On this page