SweatHost
SDK Reference

CS2 Matches API

Complete reference for CS2 series and match endpoints, SDK methods, params, and response shapes

Overview

The CS2 Matches API gives you access to series (e.g. BO3) and individual maps (matches): list and get series, list and get maps, and full statistics per map. We distinguish between Series (a set of maps) and Matches (single maps).

For full analytics for one map (weapon stats, utility stats, team stats, top performers), use Match Statistics API (getStats()).

Scope

All endpoints are organization-scoped. You only see data from servers owned by your organization.


Base route

Base pathDescription
/v1/cs2All CS2 series and match endpoints

Series

listSeries()

List CS2 series with optional filters and pagination.

HTTP API

MethodPathDescription
GET/v1/cs2/seriesList series

Query parameters

ParameterTypeRequiredDescription
pagenumberNoPage number (1-indexed). Default 1.
pageSizenumberNoItems per page. Default 20, max 100.
statusstringNoFilter: live, finished, upcoming, cancelled.
serverIdstringNoFilter by server ID.
dateFromstringNoStart date (ISO 8601).
dateTostringNoEnd date (ISO 8601).

Headers: Authorization: Bearer <your-api-key>

Example (cURL)

curl -X GET "https://api.sweathost.com/v1/cs2/series?status=finished&page=1&pageSize=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

SDK

Parameters

ParameterTypeRequiredDescription
paramsMatchFiltersNoFilters and pagination (see query params above).
optionsRequestOptionsNoOptional request config.

Return type: Promise<ListSeriesResponse>

Example

const allSeries = await client.matches.listSeries();
const finished = await client.matches.listSeries({
  status: 'finished',
  page: 1,
  pageSize: 10,
});

Response structure

ListSeriesResponse: { page, pageSize, total, items }. Each item is ListSeriesItem:

FieldTypeDescription
idstringUnique series ID.
seriesIdstringExternal series ID.
serverIdstringServer ID.
serverNamestringServer name.
formatstringe.g. bo1, bo3, bo5.
team1NamestringTeam 1 name.
team2NamestringTeam 2 name.
team1MapsWonnumberMaps won by team 1.
team2MapsWonnumberMaps won by team 2.
statusstringe.g. live, finished.
currentMapIndexnumberCurrent map index.
mapPoolstring[]Map pool.
gameModestringGame mode.
startedAtstringISO 8601.
finishedAtstring | nullISO 8601.
durationnumber | nullDuration in seconds.
winnerTeamstring | nullWinner team name.
mapsarrayOptional list of { id, mapNumber, mapName, status }.

getSeries()

Get one series by ID, including all maps.

HTTP API

MethodPathDescription
GET/v1/cs2/series/:seriesIdGet series by ID

Path parameters

ParameterTypeRequiredDescription
seriesIdstringYesSeries ID (e.g. from list).

Headers: Authorization: Bearer <your-api-key>

Example (cURL)

curl -X GET "https://api.sweathost.com/v1/cs2/series/SERIES_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"

SDK

Parameters

ParameterTypeRequiredDescription
seriesIdstringYesSeries ID.
optionsRequestOptionsNoOptional request config.

Return type: Promise<Cs2SeriesDetail>

Example

const series = await client.matches.getSeries('SERIES-2026-001');
console.log(`${series.team1Name} vs ${series.team2Name}`);
series.maps.forEach(map => {
  console.log(`  Map ${map.mapNumber}: ${map.mapName} (${map.team1RoundScore}-${map.team2RoundScore})`);
});

Cs2SeriesDetail extends ListSeriesItem and includes full maps array with round scores, status, and player counts.


Matches (maps)

list()

List individual maps across all series.

HTTP API

MethodPathDescription
GET/v1/cs2/matchesList matches (maps)

Query parameters

ParameterTypeRequiredDescription
pagenumberNoPage number (1-indexed). Default 1.
pageSizenumberNoItems per page. Default 20, max 100.
limitnumberNoAlias for page size.
mapstringNoFilter by map name (e.g. de_dust2).
statusstringNoFilter by status.
serverIdstringNoFilter by server ID.
dateFromstringNoStart date (ISO 8601).
dateTostringNoEnd date (ISO 8601).

Headers: Authorization: Bearer <your-api-key>

Example (cURL)

curl -X GET "https://api.sweathost.com/v1/cs2/matches?map=de_dust2" \
  -H "Authorization: Bearer YOUR_API_KEY"

SDK

Parameters

ParameterTypeRequiredDescription
paramsMatchFiltersNoFilters and pagination (includes map).
optionsRequestOptionsNoOptional request config.

Return type: Promise<ListMatchesResponse>

Example

const dust2Matches = await client.matches.list({ map: 'de_dust2' });

Response structure

ListMatchesResponse: { page, pageSize, total, items }. Each item is ListMatchItem:

FieldTypeDescription
idstringUnique map (match) ID. Use for get() and getStats().
serverIdstringServer ID.
serverNamestringServer name.
matchIdstring | nullLegacy/external match reference.
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 | nullDuration in seconds.
playerCountnumberPlayer count.

get()

Get one map (match) by ID with full details and player stats.

HTTP API

MethodPathDescription
GET/v1/cs2/matches/:mapIdGet match by map ID

Path parameters

ParameterTypeRequiredDescription
mapIdstringYesMap (match) ID — same as id from list.

Headers: Authorization: Bearer <your-api-key>

Example (cURL)

curl -X GET "https://api.sweathost.com/v1/cs2/matches/MAP_UUID" \
  -H "Authorization: Bearer YOUR_API_KEY"

SDK

Parameters

ParameterTypeRequiredDescription
matchIdstringYesMap (match) ID.
optionsRequestOptionsNoOptional request config.

Return type: Promise<Cs2MatchDetail>

Example

const match = await client.matches.get('map-uuid-123');
console.log(`${match.map}: ${match.team1Score}-${match.team2Score}`);

Response structure

Cs2MatchDetail: match metadata plus players: Cs2PlayerWithStats[] (with optional weaponStats, utilityStats). Includes server, id, map, team1Name, team2Name, team1Score, team2Score, status, startedAt, finishedAt, duration.


getStats()

Get full statistics for one map (weapon stats, utility stats, team stats, top performers). Full request/response and all fields: Match Statistics API.

HTTP API

MethodPathDescription
GET/v1/cs2/matches/:mapId/statsGet map statistics

Path parameters: mapId (string, required).

SDK

Parameters

ParameterTypeRequiredDescription
matchIdstringYesMap (match) ID.
optionsRequestOptionsNoOptional request config.

Return type: Promise<MatchStats>

Example

const stats = await client.matches.getStats('map-uuid-123');
console.log(stats.overview.totalKills);
console.log(stats.topPerformers.topKiller.name);

Errors

HTTPCodeDescription
401UNAUTHORIZEDInvalid or missing API key.
403FORBIDDENResource belongs to another organization.
404NOT_FOUNDSeries or match not found.

Ensure your API key has the servers:read scope for CS2 endpoints.

On this page