Docs/CS2 API/CS2 Matches API

CS2 Matches API

Schedules, results and everything recorded about a single series: maps played, player stats per map, lineup form, head-to-head history, streams and demo links.

15 endpoints in this section. Authenticate with the x-api-key header; every response is { success, data, meta }. Other sections: Live, Maps & rounds, Rankings, Teams, Players, Events, Stats & leaderboards, Skins, Transfers, Search & reference.

Today's matches

GET/api/v1/cs2/matches/today

Matches scheduled, live or finished today (UTC).

Query parameters

ParameterTypeDescription
eventIdstringFilter by eventId.
event_idstringFilter by event_id.
fieldsstringComma-separated list of fields to return.
fromstringStart of the date range (ISO 8601, UTC).
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
offsetintegerRows to skip, for paging.
orderstringFilter by order.
pageintegerPage number, starting at 1.
playerIdstringPlayer id or slug.
player_idstringPlayer id or slug.
sortstringSort order.
statusstringFilter by status.
summarybooleantrue returns a summary instead of full rows.
teamstringTeam id or slug.
teamIdstringTeam id or slug.
team_idstringTeam id or slug.
tostringEnd of the date range (ISO 8601, UTC).

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/today" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398319",
      "eventId": "cs2-event-9410",
      "eventName": "CROSSFIRE Season 6",
      "eventSlug": "crossfire-season-6",
      "stageName": null,
      "startsAt": "2026-09-23T23:30:00.000Z",
      "endsAt": null,
      "bestOf": null,
      "status": "upcoming",
      "team1Id": "cs2-team-14047",
      "team2Id": "cs2-team-13201",
      "team1Name": "Fathom",
      "team2Name": "F5",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "lastSyncedAt": "2026-09-23T03:05:37.960Z",
      "lastVerified": "2026-09-23T03:05:37.960Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9410",
        "name": "CROSSFIRE Season 6",
        "slug": "crossfire-season-6",
        "imageUrl": null,
        "prizePool": 10000,
        "currency": "USD",
        "tier": null,
        "prestigeScore": null,
        "status": "live",
        "region": null,
        "startsAt": "2026-09-16T00:30:00.000Z",
        "endsAt": "2026-10-11T23:59:59.000Z",
        "eventId": "cs2-event-9410",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/8cdf74d32db95514d3dc287ea44a5fa4.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-14047",
        "name": "Fathom",
        "slug": "fathom",
        "teamTag": "FATHOM",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7b669c0c2e7d42990dffdd61ee1e97f7.webp",
        "countryName": null,
        "countryCode": null,
        "worldRanking": null
      },
      "team2": {
        "id": "cs2-team-13201",
        "name": "F5",
        "slug": "f5",
        "teamTag": "F5",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d20b8f3544cd148e95f33111fe6b47be.webp",
        "countryName": "United States",
        "countryCode": "US",
        "worldRanking": 213,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/63afa5f59017a2af260f1b23a3b31ed4.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/63afa5f59017a2af260f1b23a3b31ed4.webp"
      },
      "maps": [],
      "…": "14 more fields"
    },
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398557",
      "eventId": "cs2-event-9425",
      "eventName": "CCT 2026 South America Series 6",
      "eventSlug": "cct-2026-south-america-series-6",
      "stageName": null,
      "startsAt": "2026-09-23T22:00:00.000Z",
      "endsAt": null,
      "bestOf": null,
      "status": "upcoming",
      "team1Id": "cs2-team-11905",
      "team2Id": "cs2-team-13978",
      "team1Name": "paiN Academy",
      "team2Name": "Sementes do Mal",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "lastSyncedAt": "2026-09-23T03:05:37.546Z",
      "lastVerified": "2026-09-23T03:05:37.546Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9425",
        "name": "CCT 2026 South America Series 6",
        "slug": "cct-2026-south-america-series-6",
        "imageUrl": null,
        "prizePool": null,
        "currency": null,
        "tier": "B",
        "prestigeScore": 55,
        "status": "live",
        "region": null,
        "startsAt": "2026-09-22T15:59:32.000Z",
        "endsAt": "2026-10-04T23:59:59.000Z",
        "eventId": "cs2-event-9425",
        "logoUrl": "https://api.citoapi.com/api/v1/public/im
…

Past matches

GET/api/v1/cs2/matches/past

Finished matches, newest first, with date-range filters.

Query parameters

ParameterTypeDescription
eventIdstringFilter by eventId.
event_idstringFilter by event_id.
fieldsstringComma-separated list of fields to return.
fromstringStart of the date range (ISO 8601, UTC).
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
offsetintegerRows to skip, for paging.
orderstringFilter by order.
pageintegerPage number, starting at 1.
playerIdstringPlayer id or slug.
player_idstringPlayer id or slug.
sortstringSort order.
statusstringFilter by status.
summarybooleantrue returns a summary instead of full rows.
teamstringTeam id or slug.
teamIdstringTeam id or slug.
team_idstringTeam id or slug.
tostringEnd of the date range (ISO 8601, UTC).

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/past" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398526",
      "eventId": "cs2-event-9356",
      "eventName": "ESL Challenger League Season 52 North America Cup 2",
      "eventSlug": "esl-challenger-league-season-52-north-america-cup-2",
      "stageName": null,
      "startsAt": "2026-09-23T02:58:01.000Z",
      "endsAt": "2026-09-23T03:00:58.213Z",
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-13857",
      "team2Id": "cs2-team-12971",
      "team1Name": "Iowa Stormboar",
      "team2Name": "Wanted Goons",
      "team1Score": 2,
      "team2Score": 0,
      "winnerTeamId": "cs2-team-13857",
      "lastSyncedAt": "2026-09-23T03:06:07.518Z",
      "lastVerified": "2026-09-23T03:06:07.518Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9356",
        "name": "ESL Challenger League Season 52 North America Cup 2",
        "slug": "esl-challenger-league-season-52-north-america-cup-2",
        "imageUrl": null,
        "prizePool": 17500,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "live",
        "region": "North America",
        "startsAt": "2026-09-23T01:00:00.000Z",
        "endsAt": "2026-09-29T23:59:59.000Z",
        "eventId": "cs2-event-9356",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-13857",
        "name": "Iowa Stormboar",
        "slug": "iowa-stormboar",
        "teamTag": "IS",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp",
        "countryName": "United States",
        "countryCode": "US",
        "worldRanking": 177
      },
      "team2": {
        "id": "cs2-team-12971",
        "name": "Wanted Goons",
        "slug": "wanted-goons",
        "teamTag": "WG",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/2fd6ff3bc5a226dfa92640ab178d60cb.webp",
        "countryName": null,
        "countryCode": null,
        "worldRanking": 230,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp"
      },
      "maps": [
        {
          "id": "cs2-match-2398526-map-1",
          "matchId": "cs2-match-2398526",
          "mapNumber": 1,
          "mapName": "Dust2",
          "status": "completed",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": [
            10,
            3
          ],
          "team2Halves": [
            2,
            0
          ],
          "winnerTeamId": "cs2-team-13857",
          "durationRounds": 15,
          "lastSyncedAt": "2026-09-23T03:04:18.990Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "resultType": "played",
          "resultStatus": "completed",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableR
…

Search matches

GET/api/v1/cs2/matches/search

Find matches by team or event name.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 100; larger values are reduced to 100.
q*stringSearch text.
querystringFilter by query.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/search" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398108",
      "eventId": "cs2-event-8057",
      "eventName": "StarLadder StarSeries Fall 2026",
      "eventSlug": "starladder-starseries-fall-2026",
      "stageName": "Grand final",
      "startsAt": "2026-09-20T18:49:47.000Z",
      "endsAt": null,
      "bestOf": 5,
      "status": "completed",
      "team1Id": "cs2-team-11861",
      "team2Id": "cs2-team-9565",
      "team1Name": "Aurora",
      "team2Name": "Vitality",
      "team1Score": 1,
      "team2Score": 3,
      "winnerTeamId": "cs2-team-9565",
      "lastSyncedAt": "2026-09-23T03:07:06.893Z",
      "lastVerified": "2026-09-23T03:07:06.893Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8057",
        "name": "StarLadder StarSeries Fall 2026",
        "slug": "starladder-starseries-fall-2026",
        "imageUrl": null,
        "prizePool": 5000008,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 75,
        "status": "completed",
        "region": null,
        "startsAt": "2026-09-17T10:00:00.000Z",
        "endsAt": "2026-09-20T23:59:59.000Z",
        "eventId": "cs2-event-8057",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-11861",
        "name": "Aurora",
        "slug": "aurora",
        "teamTag": "AURORA",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp",
        "countryName": "Türkiye",
        "countryCode": "TR",
        "worldRanking": 9
      },
      "team2": {
        "id": "cs2-team-9565",
        "name": "Vitality",
        "slug": "vitality",
        "teamTag": "VITALITY",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "countryName": "France",
        "countryCode": "FR",
        "worldRanking": 2,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"
      },
      "maps": [
        {
          "id": "cs2-match-2398108-map-1",
          "matchId": "cs2-match-2398108",
          "mapNumber": 1,
          "mapName": "Anubis",
          "status": "completed",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": [
            3,
            1
          ],
          "team2Halves": [
            9,
            4
          ],
          "winnerTeamId": "cs2-team-9565",
          "durationRounds": 17,
          "lastSyncedAt": "2026-09-22T19:46:26.632Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "resultType": "played",
          "resultStatus": "completed",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableReason": null,
          "dataAvailability": {
            "playerStats": {
              "…": "…"
            }
          },
        
…

Upcoming matches

GET/api/v1/cs2/matches/upcoming
GET/api/v1/cs2/upcoming

Scheduled matches, soonest first. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 100; larger values are reduced to 100.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/upcoming" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398521",
      "eventId": "cs2-event-9356",
      "eventName": "ESL Challenger League Season 52 North America Cup 2",
      "eventSlug": "esl-challenger-league-season-52-north-america-cup-2",
      "stageName": "Upper bracket",
      "startsAt": "2026-09-23T01:00:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-13574",
      "team2Id": "cs2-team-11336",
      "team1Name": "Club 333",
      "team2Name": "DETONATE",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "liveState": {
        "teams": {
          "team1Name": "Club 333",
          "team2Name": "DETONATE",
          "ctTeamName": "CT",
          "terroristTeamName": "Terrorist"
        },
        "source": "live",
        "status": "live",
        "matchId": "cs2-match-2398521",
        "roundEnds": [
          {
            "winner": "CT",
            "eventId": "6a19b74f123044bfcbf42b460d5f21ec",
            "payload": {
              "…": "…"
            },
            "winType": "Target_Saved",
            "eventType": "RoundEnd",
            "observedAt": "2026-09-23T01:46:56.985Z",
            "terroristScore": 6,
            "webhookEligible": true,
            "counterTerroristScore": 9
          },
          {
            "winner": "TERRORIST",
            "eventId": "c7f8fba3d7d5b7bbb7f1668449061212",
            "payload": {
              "…": "…"
            },
            "winType": "Terrorists_Win",
            "eventType": "RoundEnd",
            "observedAt": "2026-09-23T01:46:56.985Z",
            "terroristScore": 6,
            "webhookEligible": true,
            "counterTerroristScore": 8
          }
        ],
        "bombEvents": [
          {
            "source": "live",
            "eventId": "40d059e2be763195ef839829a670ee76",
            "payload": {
              "…": "…"
            },
            "bombSite": "A",
            "tPlayers": 5,
            "ctPlayers": 2,
            "eventType": "BombPlanted",
            "observedAt": "2026-09-23T01:46:56.985Z",
            "playerName": "THOR",
            "playerNick": "THOR",
            "webhookEligible": true
          },
          {
            "source": "live",
            "eventId": "be03766dd75eeac21efad1573b3ad734",
            "payload": {
              "…": "…"
            },
            "bombSite": "A",
            "tPlayers": 2,
            "ctPlayers": 0,
            "eventType": "BombPlanted",
            "observedAt": "2026-09-23T01:46:56.985Z",
            "playerName": "carn",
            "playerNick": "carN",
            "webhookEligible": true
          }
        ],
        "capturedAt": "2026-09-23T03:13:21.736Z",
        "currentMap": "de_nuke",
        "team1Score": 1,
        "team2Score": 1,
        "bombPlanted": false,
        "playerStats": [],
        "currentRound": 1,
        "scoreSummary": null,
        "winnerTeamId": null,
        "responseCount": 2590,
        "eventNamesSeen": [
          "Assist",
          "BombPlanted"
        ],
        "roundTimeSeconds": null,
        "mapImageUrl": null,
        "pickTeamId": null,
        "objectiveStats": {
          "dataAvailable": true,
          "unavailableReason": null,
          "confidence": {
            "plants": "high",
            "defuses": "high",
            "explosions": "high",
            "clutchDefuse": "medium"
  
…

Recent results

GET/api/v1/cs2/matches/recent
GET/api/v1/cs2/matches/results
GET/api/v1/cs2/matches/completed
GET/api/v1/cs2/results
GET/api/v1/cs2/recent

Finished matches with final series score and winner, newest first. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 100; larger values are reduced to 100.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/recent" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398526",
      "eventId": "cs2-event-9356",
      "eventName": "ESL Challenger League Season 52 North America Cup 2",
      "eventSlug": "esl-challenger-league-season-52-north-america-cup-2",
      "stageName": null,
      "startsAt": "2026-09-23T02:58:01.000Z",
      "endsAt": "2026-09-23T03:00:58.213Z",
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-13857",
      "team2Id": "cs2-team-12971",
      "team1Name": "Iowa Stormboar",
      "team2Name": "Wanted Goons",
      "team1Score": 2,
      "team2Score": 0,
      "winnerTeamId": "cs2-team-13857",
      "lastSyncedAt": "2026-09-23T03:06:07.518Z",
      "lastVerified": "2026-09-23T03:06:07.518Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9356",
        "name": "ESL Challenger League Season 52 North America Cup 2",
        "slug": "esl-challenger-league-season-52-north-america-cup-2",
        "imageUrl": null,
        "prizePool": 17500,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "live",
        "region": "North America",
        "startsAt": "2026-09-23T01:00:00.000Z",
        "endsAt": "2026-09-29T23:59:59.000Z",
        "eventId": "cs2-event-9356",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-13857",
        "name": "Iowa Stormboar",
        "slug": "iowa-stormboar",
        "teamTag": "IS",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp",
        "countryName": "United States",
        "countryCode": "US",
        "worldRanking": 177
      },
      "team2": {
        "id": "cs2-team-12971",
        "name": "Wanted Goons",
        "slug": "wanted-goons",
        "teamTag": "WG",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/2fd6ff3bc5a226dfa92640ab178d60cb.webp",
        "countryName": null,
        "countryCode": null,
        "worldRanking": 230,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp"
      },
      "maps": [
        {
          "id": "cs2-match-2398526-map-1",
          "matchId": "cs2-match-2398526",
          "mapNumber": 1,
          "mapName": "Dust2",
          "status": "completed",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": [
            10,
            3
          ],
          "team2Halves": [
            2,
            0
          ],
          "winnerTeamId": "cs2-team-13857",
          "durationRounds": 15,
          "lastSyncedAt": "2026-09-23T03:04:18.990Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "resultType": "played",
          "resultStatus": "completed",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableR
…

Match streams

GET/api/v1/cs2/matches/{matchId}/streams

Broadcast links for a match, when known.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID/streams" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_match_streams",
    "matchId": "cs2-match-2398526",
    "streams": []
  },
  "meta": {
    "count": 0,
    "limit": 0,
    "total": 0,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Match head-to-head

GET/api/v1/cs2/matches/{matchId}/head-to-head

Previous meetings between the two teams in this match.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.
limitintegerRows to return. Maximum 250; larger values are reduced to 250.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID/head-to-head" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_team_h2h",
    "team": {
      "id": "cs2-team-13857",
      "name": "Iowa Stormboar"
    },
    "opponent": {
      "id": "cs2-team-12971",
      "name": "Wanted Goons"
    },
    "totalMatches": 2,
    "matchRecord": {
      "teamWins": 2,
      "opponentWins": 0,
      "teamWinPercent": 100,
      "opponentWinPercent": 0
    },
    "mapRecord": {
      "teamWins": 3,
      "opponentWins": 0,
      "totalDecidedMaps": 3,
      "teamWinPercent": 100,
      "opponentWinPercent": 0
    },
    "mapBreakdown": [
      {
        "mapName": "Dust2",
        "played": 1,
        "teamWins": 1,
        "opponentWins": 0,
        "teamWinPercent": 100,
        "opponentWinPercent": 0,
        "roundsFor": 13,
        "roundsAgainst": 2,
        "roundDifferential": 11
      },
      {
        "mapName": "Cache",
        "played": 1,
        "teamWins": 1,
        "opponentWins": 0,
        "teamWinPercent": 100,
        "opponentWinPercent": 0,
        "roundsFor": 16,
        "roundsAgainst": 13,
        "roundDifferential": 3
      }
    ],
    "recent5Matches": [
      {
        "matchId": "cs2-match-2398526",
        "status": "completed",
        "startsAt": "2026-09-23T02:58:01.000Z",
        "eventName": "ESL Challenger League Season 52 North America Cup 2",
        "bestOf": null,
        "opponentId": "cs2-team-12971",
        "opponentName": "Wanted Goons",
        "teamScore": 2,
        "opponentScore": 0,
        "score": "2-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2398526-map-1",
            "mapNumber": 1,
            "mapName": "Dust2",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 2,
            "score": "13-2",
            "result": "W",
            "winnerTeamId": "cs2-team-13857",
            "roundsFor": 13,
            "roundsAgainst": 2
          },
          {
            "mapId": "cs2-match-2398526-map-2",
            "mapNumber": 2,
            "mapName": "Cache",
            "status": "completed",
            "teamScore": 16,
            "opponentScore": 13,
            "score": "16-13",
            "result": "W",
            "winnerTeamId": "cs2-team-13857",
            "roundsFor": 16,
            "roundsAgainst": 13
          }
        ]
      },
      {
        "matchId": "cs2-match-2397468",
        "status": "completed",
        "startsAt": "2026-09-05T01:00:00.000Z",
        "eventName": "NSTLGA League Season 2",
        "bestOf": 1,
        "opponentId": "cs2-team-12971",
        "opponentName": "Wanted Goons",
        "teamScore": 1,
        "opponentScore": 0,
        "score": "1-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2397468-map-1",
            "mapNumber": 1,
            "mapName": "Mirage",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 7,
            "score": "13-7",
            "result": "W",
            "winnerTeamId": "cs2-team-13857",
            "roundsFor": 13,
            "roundsAgainst": 7
          }
        ]
      }
    ],
    "matches": [
      {
        "matchId": "cs2-match-2398526",
        "status": "completed",
        "startsAt": "2026-09-23T02:58:01.000Z",
        "eventName": "ESL Challenger League Season 52 North America Cup 2",
        "bestOf": null,
        "opponentId": "cs2-team-12971",
        "opponentName": "Wanted Goons",
        "t
…

Match demos

GET/api/v1/cs2/matches/{matchId}/demos

Demo availability per map, and whether each demo has been parsed into round data.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.
limitintegerRows to return. Maximum 100; larger values are reduced to 100.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID/demos" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "dataAvailable": false,
    "unavailableReason": "not_yet_indexed",
    "dataQuality": "unavailable",
    "message": "Demo archive availability has not been indexed for this CS2 match yet."
  },
  "meta": {
    "count": 0,
    "dataAvailable": false,
    "limit": 0,
    "total": 0,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Match maps

GET/api/v1/cs2/matches/{matchId}/maps

Maps played or scheduled in a match: map name, score, halves and winner.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID/maps" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_map",
      "id": "cs2-match-2398526-map-1",
      "matchId": "cs2-match-2398526",
      "mapNumber": 1,
      "mapName": "Dust2",
      "status": "completed",
      "team1Score": 13,
      "team2Score": 2,
      "team1Halves": [
        10,
        3
      ],
      "team2Halves": [
        2,
        0
      ],
      "winnerTeamId": "cs2-team-13857",
      "durationRounds": 15,
      "lastSyncedAt": "2026-09-23T03:04:18.990Z",
      "playerStats": [
        {
          "id": "live-source-match-2398526-map-1-H0NeST",
          "mapId": "cs2-match-2398526-map-1",
          "matchId": "cs2-match-2398526",
          "playerId": "cs2-player-24045",
          "playerName": "H0NeST",
          "teamId": "cs2-team-13857",
          "teamName": "Iowa Stormboar",
          "kills": 16,
          "deaths": 9,
          "assists": 3,
          "plusMinus": 7,
          "adr": null,
          "kast": null,
          "rating": 1.41,
          "ratingVersion": "source_rating_3_0",
          "headshots": 11,
          "headshotPercent": null,
          "firstKills": 1,
          "firstDeaths": 1,
          "source": "live",
          "lastSyncedAt": "2026-09-23T02:57:57.779Z",
          "mapNameCanonical": null,
          "imageUrl": null,
          "mapImageUrl": null,
          "…": "7 more fields"
        },
        {
          "id": "live-source-match-2398526-map-1-Johan",
          "mapId": "cs2-match-2398526-map-1",
          "matchId": "cs2-match-2398526",
          "playerId": "cs2-player-24467",
          "playerName": "Johan",
          "teamId": "cs2-team-12971",
          "teamName": "Wanted Goons",
          "kills": 3,
          "deaths": 14,
          "assists": 2,
          "plusMinus": -11,
          "adr": null,
          "kast": null,
          "rating": 0.41,
          "ratingVersion": "source_rating_3_0",
          "headshots": 2,
          "headshotPercent": null,
          "firstKills": 1,
          "firstDeaths": 2,
          "source": "live",
          "lastSyncedAt": "2026-09-23T02:57:58.661Z",
          "mapNameCanonical": null,
          "imageUrl": null,
          "mapImageUrl": null,
          "…": "7 more fields"
        }
      ],
      "bombEvents": [],
      "bombStats": [],
      "weaponAggregates": [],
      "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png",
      "pickTeamId": "cs2-team-12971",
      "objectiveStats": {
        "dataAvailable": false,
        "unavailableReason": "not_yet_indexed",
        "confidence": {
          "plants": "high",
          "defuses": "high",
          "explosions": "high",
          "clutchDefuse": "medium"
        },
        "teamStats": [],
        "roundEvents": []
      },
      "availableSubresources": [
        "player_stats"
      ],
      "unavailableSubresources": [
        "objective_stats"
      ],
      "unavailableFields": {},
      "dataQuality": "partial",
      "…": "12 more fields"
    },
    {
      "entityType": "cs2_map",
      "id": "cs2-match-2398526-map-2",
      "matchId": "cs2-match-2398526",
      "mapNumber": 2,
      "mapName": "Cache",
      "status": "completed",
      "team1Score": 16,
      "team2Score": 13,
      "team1Halves": [
        5,
        7
      ],
      "team2Halves": [
        7,
        5
      ],
      "winnerTeamId": null,
      "durationRounds": null,
      "lastSyncedAt": "2026-09-23T03:04:28.968Z",
      "playerStats": [
        {
   
…

Match games

GET/api/v1/cs2/matches/{matchId}/games

The match's maps as games, each with the `gameId` used by `/cs2/games/{gameId}`.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID/games" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "id": "cs2-match-2398526-map-1",
      "entityType": "cs2_game",
      "matchId": "cs2-match-2398526",
      "mapNumber": 1,
      "map": "Dust2",
      "pickTeamId": null,
      "winnerTeamId": "cs2-team-13857",
      "score": {
        "team1": 13,
        "team2": 2
      },
      "halfScores": {
        "team1": [
          10,
          3
        ],
        "team2": [
          2,
          0
        ]
      },
      "team1Halves": [
        10,
        3
      ],
      "team2Halves": [
        2,
        0
      ],
      "overtime": null,
      "durationRounds": 15,
      "duration": {
        "rounds": 15,
        "source": "stored"
      },
      "status": "completed",
      "resultType": "played",
      "resultStatus": "completed",
      "isForfeit": false,
      "statsEligible": true,
      "unavailableReason": null,
      "playerStatsAvailable": true,
      "playerStats": [
        {
          "playerId": "cs2-player-24045",
          "playerName": "H0NeST",
          "teamId": "cs2-team-13857",
          "teamName": "Iowa Stormboar",
          "kills": 16,
          "deaths": 9,
          "assists": 3,
          "plusMinus": 7,
          "adr": null,
          "kast": null,
          "rating": 1.41,
          "ratingVersion": "source_rating_3_0",
          "headshots": 11,
          "headshotPercent": null,
          "openingKills": 1,
          "openingDeaths": 1,
          "rating3Profile": {
            "rating3": null,
            "rating3Available": false,
            "subratings": {
              "…": "…"
            },
            "openingDuels": {
              "…": "…"
            },
            "unavailableSubratings": [
              "…"
            ],
            "rating2": 1.41
          },
          "source": "live",
          "lastSyncedAt": "2026-09-23T02:57:57.779Z"
        },
        {
          "playerId": "cs2-player-24467",
          "playerName": "Johan",
          "teamId": "cs2-team-12971",
          "teamName": "Wanted Goons",
          "kills": 3,
          "deaths": 14,
          "assists": 2,
          "plusMinus": -11,
          "adr": null,
          "kast": null,
          "rating": 0.41,
          "ratingVersion": "source_rating_3_0",
          "headshots": 2,
          "headshotPercent": null,
          "openingKills": 1,
          "openingDeaths": 2,
          "rating3Profile": {
            "rating3": null,
            "rating3Available": false,
            "subratings": {
              "…": "…"
            },
            "openingDuels": {
              "…": "…"
            },
            "unavailableSubratings": [
              "…"
            ],
            "rating2": 0.41
          },
          "source": "live",
          "lastSyncedAt": "2026-09-23T02:57:58.661Z"
        }
      ],
      "roundsAvailable": false,
      "objectiveStats": {
        "dataAvailable": false,
        "unavailableReason": "not_yet_indexed",
        "confidence": {
          "plants": "high",
          "defuses": "high",
          "explosions": "high",
          "clutchDefuse": "medium"
        },
        "teamStats": [],
        "roundEvents": []
      },
      "…": "4 more fields"
    },
    {
      "id": "cs2-match-2398526-map-2",
      "entityType": "cs2_game",
      "matchId": "cs2-match-2398526",
      "mapNumber": 2,
      "map": "Cache",
      "pickTeamId": null,
      "winnerTeamId": null,
      "score": {
        "team1": 16,
        "team2": 13
      },
  
…

Match player stats

GET/api/v1/cs2/matches/{matchId}/player-stats
GET/api/v1/cs2/matches/{matchId}/players
GET/api/v1/cs2/matches/{matchId}/stats

Per-player stats for each map of a match: kills, deaths, ADR, KAST and rating. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID/player-stats" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_player_stat",
      "id": "live-source-match-2398526-map-1-H0NeST",
      "mapId": "cs2-match-2398526-map-1",
      "matchId": "cs2-match-2398526",
      "playerId": "cs2-player-24045",
      "playerName": "H0NeST",
      "teamId": "cs2-team-13857",
      "teamName": "Iowa Stormboar",
      "kills": 16,
      "deaths": 9,
      "assists": 3,
      "plusMinus": 7,
      "adr": null,
      "kast": null,
      "rating": 1.41,
      "ratingVersion": "source_rating_3_0",
      "headshots": 11,
      "headshotPercent": null,
      "firstKills": 1,
      "firstDeaths": 1,
      "source": "live",
      "lastSyncedAt": "2026-09-23T02:57:57.779Z",
      "player": {
        "id": "cs2-player-24045",
        "nickname": "H0NeST",
        "slug": "h0nest",
        "realName": "Nazar Stefinko",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f2972c1aaaea60879f3c33ed6058b227.webp",
        "countryName": "Ukraine",
        "countryCode": "UA",
        "age": 18,
        "rating": 1.26,
        "mapsPlayed": 44,
        "careerStats": {
          "rating": 1.31,
          "window": "past_3_months",
          "opening": null,
          "sniping": null,
          "trading": null,
          "utility": null,
          "entrying": null,
          "clutching": null,
          "firepower": null,
          "mapsPlayed": 50,
          "prizeMoney": 3100,
          "careerRating": 1.31,
          "windowRating": null,
          "missingFields": [
            "age"
          ],
          "profileStatus": "partial",
          "lastKnownRating": 1.31,
          "lastActiveTournament": "LiveFISSURE Playground 3",
          "profileImageStatus": "success",
          "profileImageClaimedAt": "2026-06-26T02:34:40.140807+02:00"
        },
        "currentTeamId": "cs2-team-13857",
        "status": "inactive",
        "primaryRole": "entry",
        "roleConfidence": "medium",
        "statusUpdatedAt": "2026-07-05T00:40:56.174Z",
        "lastSyncedAt": "2026-09-23T03:04:06.671Z",
        "lastVerified": "2026-09-23T03:04:06.671Z"
      },
      "team": {
        "id": "cs2-team-13857",
        "name": "Iowa Stormboar",
        "slug": "iowa-stormboar",
        "teamTag": "IS",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp",
        "countryName": "United States",
        "countryCode": "US",
        "region": "Americas",
        "worldRanking": 177,
        "lastSyncedAt": "2026-09-23T03:09:17.179Z",
        "lastVerified": "2026-09-23T03:09:17.179Z",
        "confidence": "high"
      },
      "…": "18 more fields"
    },
    {
      "entityType": "cs2_player_stat",
      "id": "live-source-match-2398526-map-1-Scorchyy",
      "mapId": "cs2-match-2398526-map-1",
      "matchId": "cs2-match-2398526",
      "playerId": "cs2-player-24528",
      "playerName": "Scorchyy",
      "teamId": "cs2-team-13857",
      "teamName": "Iowa Stormboar",
      "kills": 12,
      "deaths": 6,
      "assists": 1,
      "plusMinus": 6,
      "adr": null,
      "kast": null,
      "rating": 1.46,
      "ratingVersion": "source_rating_3_0",
      "headshots": 4,
      "headshotPercent": null,
      "firstKills": 3,
      "firstDeaths": 1,
      "source": "live",
      "lastSyncedAt": "2026-09-23T02:57:57.477Z",
      "player": {
        "id": "cs2-player-24528",
        "nickname": "Scorchyy",
        "slug": "scorchyy",
        "rea
…

Match lineup stats

GET/api/v1/cs2/matches/{matchId}/lineup-stats

Each team's lineup for the match with recent form stats.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.
windowDaysintegerLook-back window in days.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID/lineup-stats" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_match_lineup_stats",
    "matchId": "cs2-match-2398526",
    "windowDays": 90,
    "dataAvailable": true,
    "teams": [
      {
        "teamId": "cs2-team-13857",
        "players": [
          {
            "playerId": "cs2-player-24045",
            "teamId": "cs2-team-13857",
            "nickname": "H0NeST",
            "name": "Nazar Stefinko",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f2972c1aaaea60879f3c33ed6058b227.webp",
            "slug": "h0nest",
            "countryName": "Ukraine",
            "countryCode": "UA",
            "role": "entry",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 42,
            "matches": 20,
            "rating": 1.21,
            "adr": 95.7,
            "kast": 0.758,
            "kdRatio": 1.14,
            "kills": 762,
            "deaths": 666,
            "assists": 169,
            "unavailableSubratings": [
              "…"
            ]
          },
          {
            "playerId": "cs2-player-23690",
            "teamId": "cs2-team-13857",
            "nickname": "TyRa",
            "name": "Ty Aron",
            "imageUrl": null,
            "slug": "tyra",
            "countryName": "United States",
            "countryCode": "US",
            "role": "entry",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 33,
            "matches": 16,
            "rating": 1,
            "adr": 77.4,
            "kast": 0.574,
            "kdRatio": 0.89,
            "kills": 456,
            "deaths": 515,
            "assists": 117,
            "unavailableSubratings": [
              "…"
            ]
          }
        ]
      },
      {
        "teamId": "cs2-team-12971",
        "players": [
          {
            "playerId": "cs2-player-24664",
            "teamId": "cs2-team-12971",
            "nickname": "killerPandas",
            "name": "Dylan Pellegrino",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f610dd85b90e96df36b58b51a2587384.png",
            "slug": "killerpandas",
            "countryName": "United States",
            "countryCode": "US",
            "role": "AWPer",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 16,
            "matches": 8,
            "rating": 1,
            "adr": 73.1,
            "kast": 0.669,
            "kdRatio": 0.97,
            "kills": 232,
            "deaths": 238,
            "assists": 29,
            "unavailableSubratings": [
              "…"
            ]
          },
          {
            "playerId": "cs2-player-26098",
            "teamId": "cs2-team-12971",
            "nickname": "hibui",
            "name": "Hunter Conklin",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/e529872541a36b595ef27153a38c8dd1.webp",
            "slug": "hibui",
            "countryName": "United States",
            "countryCode": "US",
            "role": "support",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 18,
            "matches": 9,
            "rating": 0.95,
            "adr": 65.6,
            "kast": 0.679,
            "kdRatio": 0.87,
            "kills": 221,
            "deaths": 255,
            "assists": 51,
            "unavailableSubratings": [
              "…"
            ]
          }
        ]
      }
    ],
…

Match details

GET/api/v1/cs2/matches/{matchId}

One match: event, teams, series score, maps, veto and which sub-resources have data.

Query parameters

ParameterTypeDescription
matchId (path)*stringMatch id, e.g. cs2-match-2398421.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/MATCH_ID" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_match",
    "id": "cs2-match-2398526",
    "eventId": "cs2-event-9356",
    "eventName": "ESL Challenger League Season 52 North America Cup 2",
    "eventSlug": "esl-challenger-league-season-52-north-america-cup-2",
    "stageName": "Upper bracket",
    "startsAt": "2026-09-23T02:58:01.000Z",
    "endsAt": "2026-09-23T03:00:58.213Z",
    "bestOf": 3,
    "status": "completed",
    "team1Id": "cs2-team-13857",
    "team2Id": "cs2-team-12971",
    "team1Name": "Iowa Stormboar",
    "team2Name": "Wanted Goons",
    "team1Score": 2,
    "team2Score": 0,
    "winnerTeamId": "cs2-team-13857",
    "liveState": {
      "teams": {
        "team1Name": "Iowa Stormboar",
        "team2Name": "Wanted Goons",
        "ctTeamName": "Wanted Goons",
        "terroristTeamName": "Iowa Stormboar"
      },
      "source": "live",
      "status": "live",
      "matchId": "cs2-match-2398526",
      "roundEnds": [
        {
          "winner": "TERRORIST",
          "eventId": "645db6f393fca49e22e4bf48eb2f213d",
          "payload": {
            "winner": "TERRORIST",
            "winType": "Terrorists_Win",
            "terroristScore": 16,
            "counterTerroristScore": 13
          },
          "winType": "Terrorists_Win",
          "eventType": "RoundEnd",
          "observedAt": "2026-09-23T02:59:52.534Z",
          "terroristScore": 16,
          "webhookEligible": true,
          "counterTerroristScore": 13
        },
        {
          "winner": "TERRORIST",
          "eventId": "9165facec222a504457850548c7e5020",
          "payload": {
            "winner": "TERRORIST",
            "winType": "Terrorists_Win",
            "terroristScore": 15,
            "counterTerroristScore": 13
          },
          "winType": "Terrorists_Win",
          "eventType": "RoundEnd",
          "observedAt": "2026-09-23T02:59:52.535Z",
          "terroristScore": 15,
          "webhookEligible": true,
          "counterTerroristScore": 13
        }
      ],
      "bombEvents": [
        {
          "source": "live",
          "eventId": "3d6e19c0feb325ab753bc9cefe47430a",
          "payload": {
            "bombSite": "A",
            "tPlayers": 2,
            "ctPlayers": 1,
            "playerName": "TyRa",
            "playerNick": "TyRa"
          },
          "bombSite": "A",
          "tPlayers": 2,
          "ctPlayers": 1,
          "eventType": "BombPlanted",
          "observedAt": "2026-09-23T02:59:52.534Z",
          "playerName": "TyRa",
          "playerNick": "TyRa",
          "webhookEligible": true
        },
        {
          "source": "live",
          "eventId": "d5e85dd74809ea07557b244c6ab64254",
          "payload": {
            "bombSite": "B",
            "tPlayers": 4,
            "ctPlayers": 3,
            "playerName": "Valter0k",
            "playerNick": "Valter0k"
          },
          "bombSite": "B",
          "tPlayers": 4,
          "ctPlayers": 3,
          "eventType": "BombPlanted",
          "observedAt": "2026-09-23T02:59:52.535Z",
          "playerName": "Valter0k",
          "playerNick": "Valter0k",
          "webhookEligible": true
        }
      ],
      "capturedAt": "2026-09-23T02:59:52.535Z",
      "currentMap": "de_cache",
      "team1Score": 16,
      "team2Score": 13,
      "bombPlanted": false,
      "playerStats": [
        {
          "hp": 0,
          "adr": 94.03448275862068,
          "name": "H0NeST",
          "nick": "H0NeST",
          
…

List matches

GET/api/v1/cs2/matches

Matches with filters for status, team, event and date range.

Query parameters

ParameterTypeDescription
eventIdstringFilter by eventId.
event_idstringFilter by event_id.
fieldsstringComma-separated list of fields to return.
fromstringStart of the date range (ISO 8601, UTC).
limitintegerRows to return. Maximum 200; larger values are reduced to 200.
offsetintegerRows to skip, for paging.
orderstringFilter by order.
pageintegerPage number, starting at 1.
playerIdstringPlayer id or slug.
player_idstringPlayer id or slug.
sortstringSort order.
statusstringFilter by status.
summarybooleantrue returns a summary instead of full rows.
teamstringTeam id or slug.
teamIdstringTeam id or slug.
team_idstringTeam id or slug.
tostringEnd of the date range (ISO 8601, UTC).

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/matches" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2397941",
      "eventId": "cs2-event-9256",
      "eventName": "Stake Ranked Episode",
      "eventSlug": "stake-ranked-episode-4",
      "stageName": null,
      "startsAt": "2026-10-01T17:30:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-6667",
      "team2Id": "cs2-team-7969",
      "team1Name": "FaZe",
      "team2Name": "Nemiga",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "lastSyncedAt": "2026-09-23T03:06:07.226Z",
      "lastVerified": "2026-09-23T03:06:07.226Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9256",
        "name": "Stake Ranked Episode",
        "slug": "stake-ranked-episode-4",
        "imageUrl": null,
        "prizePool": 100000,
        "currency": "USD",
        "tier": "B",
        "prestigeScore": 55,
        "status": "upcoming",
        "region": null,
        "startsAt": "2026-10-01T00:00:00.000Z",
        "endsAt": "2026-10-04T23:59:59.000Z",
        "eventId": "cs2-event-9256",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/21396af31d05530bf62f7baa70ee6f59.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-6667",
        "name": "FaZe",
        "slug": "faze",
        "teamTag": "FAZE",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/2c2c7af6d0a6aad17cd9e46ce44fd133.webp",
        "countryName": "Slovakia",
        "countryCode": "SK",
        "worldRanking": 13,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/2653bc97908a106127134d6d94d50157.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/2653bc97908a106127134d6d94d50157.webp"
      },
      "team2": {
        "id": "cs2-team-7969",
        "name": "Nemiga",
        "slug": "nemiga",
        "teamTag": "NEMIGA",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f2950ddfe847711229d534feda9e6c0a.webp",
        "countryName": "Russia",
        "countryCode": "RU",
        "worldRanking": 36
      },
      "maps": [
        {
          "id": "cs2-match-2397941-map-1",
          "matchId": "cs2-match-2397941",
          "mapNumber": 1,
          "mapName": "TBA",
          "status": "upcoming",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": null,
          "team2Halves": null,
          "winnerTeamId": null,
          "durationRounds": null,
          "lastSyncedAt": "2026-09-18T05:59:15.176Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "resultType": "not_played",
          "resultStatus": "upcoming",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableReason": "not_played",
          "dataAvailability": {
            "playerStats": {
              "…": "…"
            }
          }
        },
        {
          "id": "cs2-match-2397941-map-2",
          "matchId": "cs2-match-2397941",
          "mapNumber": 2,
          "mapName": "TBA",
…

Head-to-head pairs

GET/api/v1/cs2/h2h/pairs

Team pairs that have played each other, for building head-to-head pages.

Query parameters

ParameterTypeDescription
limitintegerRows to return. Maximum 500; larger values are reduced to 500.
minMeetingsstringFilter by minMeetings.
min_meetingsstringFilter by min_meetings.
windowDaysintegerLook-back window in days.
window_daysintegerLook-back window in days.

Example

bash
curl "https://api.citoapi.com/api/v1/cs2/h2h/pairs" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_h2h_pair",
    "pairs": [
      {
        "teamA": {
          "id": "cs2-team-4494",
          "name": "MOUZ",
          "slug": "mouz"
        },
        "teamB": {
          "id": "cs2-team-9565",
          "name": "Vitality",
          "slug": "vitality"
        },
        "meetings": 17,
        "lastMeetingAt": "2026-09-05T16:45:00.000Z"
      },
      {
        "teamA": {
          "id": "cs2-team-8113",
          "name": "Sharks",
          "slug": "team-8113"
        },
        "teamB": {
          "id": "cs2-team-9996",
          "name": "9z",
          "slug": "9z"
        },
        "meetings": 17,
        "lastMeetingAt": "2026-05-27T16:45:00.000Z"
      }
    ],
    "dataAvailable": true
  },
  "meta": {
    "count": 2,
    "limit": 2,
    "minMeetings": 2,
    "windowDays": 730,
    "dataAvailable": true,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Try the CS2 Matches API

Run a real request with your key, then wire the same call into your app. The free plan includes 500 requests a month.

bash
curl "https://api.citoapi.com/api/v1/cs2/matches/results?limit=5" \
  -H "x-api-key: YOUR_API_KEY"