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, Odds, 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
eventstringEvent id or slug.
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-2399544",
      "eventId": "cs2-event-9437",
      "eventName": "DFRAG Logitech G Pro Series 2026",
      "eventSlug": "dfrag-logitech-g-pro-series-2026",
      "stageName": null,
      "startsAt": "2026-10-17T00:00:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-12774",
      "team2Id": "cs2-team-9881",
      "team1Name": "FlyQuest",
      "team2Name": "Rooster",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "lastSyncedAt": "2026-10-16T19:18:20.305Z",
      "lastVerified": "2026-10-16T19:18:20.305Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9437",
        "name": "DFRAG Logitech G Pro Series 2026",
        "slug": "dfrag-logitech-g-pro-series-2026",
        "imageUrl": null,
        "prizePool": 13893,
        "currency": "USD",
        "tier": null,
        "prestigeScore": null,
        "status": "live",
        "region": null,
        "startsAt": "2026-10-15T00:00:00.000Z",
        "endsAt": "2026-10-18T23:59:59.000Z",
        "eventId": "cs2-event-9437",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/6ff337399196909de22a89c37b9129cf.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-12774",
        "name": "FlyQuest",
        "slug": "flyquest",
        "teamTag": "FLYQUEST",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/1a57938f5339bba6362144e7068c8f57.webp",
        "countryName": "Australia",
        "countryCode": "AU",
        "worldRanking": 67
      },
      "team2": {
        "id": "cs2-team-9881",
        "name": "Rooster",
        "slug": "rooster",
        "teamTag": "ROOSTER",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/94824588bc83564602ede7c40d33f0b3.webp",
        "countryName": "Australia",
        "countryCode": "AU",
        "worldRanking": 172
      },
      "maps": [
        {
          "id": "cs2-match-2399544-map-1",
          "matchId": "cs2-match-2399544",
          "mapNumber": 1,
          "mapName": "TBA",
          "status": "upcoming",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": null,
          "team2Halves": null,
          "winnerTeamId": null,
          "durationRounds": null,
          "lastSyncedAt": "2026-10-16T19:18:20.361Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "mapNameCanonical": null,
          "imageUrl": null,
          "coverImageUrl": null,
          "resultType": "not_played",
          "resultStatus": "not_played",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableReason": "map_not_played",
          "dataAvailability": {
            "playerStats": {
              "…": "…"
            }
          }
        },
        {
          "id": "cs2-match-2399544-map-2",
          "matchId": "cs2-match-2399544",
          "mapNumber": 2,
          "mapName": "TBA",
          "status": "upcoming",
          "team1Score": null,
          
…

Past matches

GET/api/v1/cs2/matches/past

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

Query parameters

ParameterTypeDescription
eventstringEvent id or slug.
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-2399265",
      "eventId": "cs2-event-9223",
      "eventName": "Stake Pulse Beat III",
      "eventSlug": "stake-pulse-beat-iii",
      "stageName": null,
      "startsAt": "2026-10-16T17:35:00.000Z",
      "endsAt": "2026-10-16T19:14:49.880Z",
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-8474",
      "team2Id": "cs2-team-10333",
      "team1Name": "100 Thieves",
      "team2Name": "Sangal",
      "team1Score": 2,
      "team2Score": 0,
      "winnerTeamId": "cs2-team-8474",
      "lastSyncedAt": "2026-10-16T19:18:14.369Z",
      "lastVerified": "2026-10-16T19:18:14.369Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9223",
        "name": "Stake Pulse Beat III",
        "slug": "stake-pulse-beat-iii",
        "imageUrl": null,
        "prizePool": 80000,
        "currency": "USD",
        "tier": "B",
        "prestigeScore": 55,
        "status": "live",
        "region": "Europe",
        "startsAt": "2026-10-12T00:00:00.000Z",
        "endsAt": "2026-10-17T23:59:59.000Z",
        "eventId": "cs2-event-9223",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/cc06bce6e2266d321e98b51ed97d659d.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-8474",
        "name": "100 Thieves",
        "slug": "100-thieves",
        "teamTag": "1T",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/ac59058bd7afa346763eda6e57e98413.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 37,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp"
      },
      "team2": {
        "id": "cs2-team-10333",
        "name": "Sangal",
        "slug": "sangal",
        "teamTag": "SANGAL",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/589718d15a9312a392d82f11d372896e.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 45
      },
      "maps": [
        {
          "id": "cs2-match-2399265-map-1",
          "matchId": "cs2-match-2399265",
          "mapNumber": 1,
          "mapName": "Nuke",
          "status": "completed",
          "team1Score": 13,
          "team2Score": 8,
          "team1Halves": null,
          "team2Halves": null,
          "winnerTeamId": "cs2-team-8474",
          "durationRounds": 21,
          "lastSyncedAt": "2026-10-16T19:14:47.353Z",
          "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/nuke.png",
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "mapNameCanonical": "Nuke",
          "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/nuke.png",
          "coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/nuke.png",
          "resultType": "played",
          "resultStatus": "completed",
          "isForfeit": false,
          "statsEligible
…

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-2399723",
      "eventId": "cs2-event-8050",
      "eventName": "PGL Masters Bucharest 2026",
      "eventSlug": "pgl-masters-bucharest-2026",
      "stageName": null,
      "startsAt": "2026-10-24T13:00:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-9996",
      "team1Name": "Vitality",
      "team2Name": "9z",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "lastSyncedAt": "2026-10-16T19:15:24.293Z",
      "lastVerified": "2026-10-16T19:15:24.293Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8050",
        "name": "PGL Masters Bucharest 2026",
        "slug": "pgl-masters-bucharest-2026",
        "imageUrl": null,
        "prizePool": 1250000,
        "currency": "USD",
        "tier": "A",
        "prestigeScore": 80,
        "status": "upcoming",
        "region": "Europe",
        "startsAt": "2026-10-24T00:00:00.000Z",
        "endsAt": "2026-10-31T23:59:59.000Z",
        "eventId": "cs2-event-8050",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/3d243df9e55b3252320526320ebfa51e.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-9565",
        "name": "Vitality",
        "slug": "vitality",
        "teamTag": "VITALITY",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp",
        "countryName": "Europe",
        "countryCode": null,
        "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"
      },
      "team2": {
        "id": "cs2-team-9996",
        "name": "9z",
        "slug": "9z",
        "teamTag": "9Z",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/bcbd4fb558dfa12256480e5f9bdadb09.webp",
        "countryName": "South America",
        "countryCode": null,
        "worldRanking": 17,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/21fb40fe1479cdfdcb47cf590ff9bc38.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/21fb40fe1479cdfdcb47cf590ff9bc38.webp"
      },
      "maps": [],
      "…": "16 more fields"
    },
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398757",
      "eventId": "cs2-event-8244",
      "eventName": "ESL Pro League Season 24",
      "eventSlug": "esl-pro-league-season-24",
      "stageName": null,
      "startsAt": "2026-10-11T15:00:00.000Z",
      "endsAt": "2026-10-11T18:13:51.234Z",
      "bestOf": 5,
      "status": "completed",
      "team1Id": "cs2-team-9565",
      "team2Id": "cs2-team-4494",
      "team1Name": "Vitality",
      "team2Name": "MOUZ",
      "team1Score": 3,
      "team2Score": 0,
      "winnerTeamId": "cs2-team-9565",
      "lastSyncedAt": "2026-10-16T19:16:19.761Z",
      "lastVerified": "2026-10-16T19:16:19.761Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-8244",
        "name": "ESL Pro League Season 24",
        "slug": "esl-pro-league-season-24",
        "imageUrl": null,
        "prizePool": 1000000,
        "currency": "USD",
        "tier": "S",
 
…

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-2399650",
      "eventId": "cs2-event-9443",
      "eventName": "GLuck Yungstar 2026 Series 3",
      "eventSlug": "gluck-yungstar-2026-series-3",
      "stageName": null,
      "startsAt": "2026-10-16T19:45:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-13238",
      "team2Id": "cs2-team-13796",
      "team1Name": "JUMBO",
      "team2Name": "Young TigeRES",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "liveState": {
        "status": "upcoming",
        "team1Score": null,
        "team2Score": null,
        "winnerTeamId": null
      },
      "vetoOrder": null,
      "streamLinks": null,
      "vodLinks": [],
      "lastSyncedAt": "2026-10-16T19:35:46.754Z",
      "lastVerified": "2026-10-16T19:35:46.754Z",
      "confidence": "high",
      "…": "18 more fields"
    },
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2399651",
      "eventId": "cs2-event-9443",
      "eventName": "GLuck Yungstar 2026 Series 3",
      "eventSlug": "gluck-yungstar-2026-series-3",
      "stageName": null,
      "startsAt": "2026-10-16T19:50:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-11312",
      "team2Id": null,
      "team1Name": "QUAZAR",
      "team2Name": null,
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "liveState": {
        "status": "upcoming",
        "team1Score": null,
        "team2Score": null,
        "winnerTeamId": null
      },
      "vetoOrder": null,
      "streamLinks": null,
      "vodLinks": [],
      "lastSyncedAt": "2026-10-16T19:18:17.228Z",
      "lastVerified": "2026-10-16T19:18:17.228Z",
      "confidence": "high",
      "…": "18 more fields"
    }
  ],
  "meta": {
    "count": 2,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

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-2399265",
      "eventId": "cs2-event-9223",
      "eventName": "Stake Pulse Beat III",
      "eventSlug": "stake-pulse-beat-iii",
      "stageName": null,
      "startsAt": "2026-10-16T17:35:00.000Z",
      "endsAt": "2026-10-16T19:14:49.880Z",
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-8474",
      "team2Id": "cs2-team-10333",
      "team1Name": "100 Thieves",
      "team2Name": "Sangal",
      "team1Score": 2,
      "team2Score": 0,
      "winnerTeamId": "cs2-team-8474",
      "lastSyncedAt": "2026-10-16T19:18:14.369Z",
      "lastVerified": "2026-10-16T19:18:14.369Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9223",
        "name": "Stake Pulse Beat III",
        "slug": "stake-pulse-beat-iii",
        "imageUrl": null,
        "prizePool": 80000,
        "currency": "USD",
        "tier": "B",
        "prestigeScore": 55,
        "status": "live",
        "region": "Europe",
        "startsAt": "2026-10-12T00:00:00.000Z",
        "endsAt": "2026-10-17T23:59:59.000Z",
        "eventId": "cs2-event-9223",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/cc06bce6e2266d321e98b51ed97d659d.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-8474",
        "name": "100 Thieves",
        "slug": "100-thieves",
        "teamTag": "1T",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/ac59058bd7afa346763eda6e57e98413.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 37,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp"
      },
      "team2": {
        "id": "cs2-team-10333",
        "name": "Sangal",
        "slug": "sangal",
        "teamTag": "SANGAL",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/589718d15a9312a392d82f11d372896e.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 45
      },
      "maps": [
        {
          "id": "cs2-match-2399265-map-1",
          "matchId": "cs2-match-2399265",
          "mapNumber": 1,
          "mapName": "Nuke",
          "status": "completed",
          "team1Score": 13,
          "team2Score": 8,
          "team1Halves": null,
          "team2Halves": null,
          "winnerTeamId": "cs2-team-8474",
          "durationRounds": 21,
          "lastSyncedAt": "2026-10-16T19:14:47.353Z",
          "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/nuke.png",
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "mapNameCanonical": "Nuke",
          "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/nuke.png",
          "coverImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/nuke.png",
          "resultType": "played",
          "resultStatus": "completed",
          "isForfeit": false,
          "statsEligible
…

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-2399265",
    "streams": [
      {
        "platform": "kick",
        "language": "en",
        "url": "https://kick.com/stake_pulse"
      },
      {
        "platform": "kick",
        "language": "en",
        "url": "https://kick.com/trottah"
      }
    ]
  },
  "meta": {
    "count": 15,
    "limit": 15,
    "total": 15,
    "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-8474",
      "name": "100 Thieves"
    },
    "opponent": {
      "id": "cs2-team-10333",
      "name": "Sangal"
    },
    "totalMatches": 1,
    "matchRecord": {
      "teamWins": 1,
      "opponentWins": 0,
      "teamWinPercent": 100,
      "opponentWinPercent": 0
    },
    "mapRecord": {
      "teamWins": 2,
      "opponentWins": 0,
      "totalDecidedMaps": 2,
      "teamWinPercent": 100,
      "opponentWinPercent": 0
    },
    "mapBreakdown": [
      {
        "mapName": "Nuke",
        "played": 1,
        "teamWins": 1,
        "opponentWins": 0,
        "teamWinPercent": 100,
        "opponentWinPercent": 0,
        "roundsFor": 13,
        "roundsAgainst": 8,
        "roundDifferential": 5
      },
      {
        "mapName": "Dust2",
        "played": 1,
        "teamWins": 1,
        "opponentWins": 0,
        "teamWinPercent": 100,
        "opponentWinPercent": 0,
        "roundsFor": 13,
        "roundsAgainst": 5,
        "roundDifferential": 8
      }
    ],
    "recent5Matches": [
      {
        "matchId": "cs2-match-2399265",
        "status": "completed",
        "startsAt": "2026-10-16T17:35:00.000Z",
        "eventName": "Stake Pulse Beat III",
        "bestOf": 3,
        "opponentId": "cs2-team-10333",
        "opponentName": "Sangal",
        "teamScore": 2,
        "opponentScore": 0,
        "score": "2-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2399265-map-1",
            "mapNumber": 1,
            "mapName": "Nuke",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 8,
            "score": "13-8",
            "result": "W",
            "winnerTeamId": "cs2-team-8474",
            "roundsFor": 13,
            "roundsAgainst": 8
          },
          {
            "mapId": "cs2-match-2399265-map-2",
            "mapNumber": 2,
            "mapName": "Dust2",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 5,
            "score": "13-5",
            "result": "W",
            "winnerTeamId": "cs2-team-8474",
            "roundsFor": 13,
            "roundsAgainst": 5
          }
        ]
      }
    ],
    "matches": [
      {
        "matchId": "cs2-match-2399265",
        "status": "completed",
        "startsAt": "2026-10-16T17:35:00.000Z",
        "eventName": "Stake Pulse Beat III",
        "bestOf": 3,
        "opponentId": "cs2-team-10333",
        "opponentName": "Sangal",
        "teamScore": 2,
        "opponentScore": 0,
        "score": "2-0",
        "result": "W",
        "maps": [
          {
            "mapId": "cs2-match-2399265-map-1",
            "mapNumber": 1,
            "mapName": "Nuke",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 8,
            "score": "13-8",
            "result": "W",
            "winnerTeamId": "cs2-team-8474",
            "roundsFor": 13,
            "roundsAgainst": 8
          },
          {
            "mapId": "cs2-match-2399265-map-2",
            "mapNumber": 2,
            "mapName": "Dust2",
            "status": "completed",
            "teamScore": 13,
            "opponentScore": 5,
            "score": "13-5",
            "result": "W",
            "winnerTeamId": "cs2-team-8474",
            "roundsFor": 13,
            "roundsAgainst": 5
          }
        ]
      
…

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-2399265-map-1",
      "matchId": "cs2-match-2399265",
      "mapNumber": 1,
      "mapName": "Nuke",
      "status": "completed",
      "team1Score": 13,
      "team2Score": 8,
      "team1Halves": null,
      "team2Halves": null,
      "winnerTeamId": "cs2-team-8474",
      "durationRounds": 21,
      "lastSyncedAt": "2026-10-16T19:14:47.353Z",
      "playerStats": [
        {
          "id": "live-source-match-2399265-map-1-Gizmy",
          "mapId": "cs2-match-2399265-map-1",
          "matchId": "cs2-match-2399265",
          "playerId": "cs2-player-21816",
          "playerName": "Gizmy",
          "teamId": "cs2-team-8474",
          "teamName": "100 Thieves",
          "kills": 11,
          "deaths": 12,
          "assists": 4,
          "plusMinus": -1,
          "adr": 61.5,
          "kast": 0.762,
          "rating": 0.99,
          "ratingVersion": "cito_rating_1",
          "headshots": 6,
          "headshotPercent": 0.545,
          "firstKills": 2,
          "firstDeaths": 1,
          "lastSyncedAt": "2026-10-16T19:14:48.147Z",
          "mapNameCanonical": null,
          "imageUrl": null,
          "mapImageUrl": null,
          "coverImageUrl": null,
          "…": "6 more fields"
        },
        {
          "id": "live-source-match-2399265-map-1-Joey",
          "mapId": "cs2-match-2399265-map-1",
          "matchId": "cs2-match-2399265",
          "playerId": "cs2-player-25253",
          "playerName": "Joey",
          "teamId": "cs2-team-10333",
          "teamName": "Sangal",
          "kills": 13,
          "deaths": 15,
          "assists": 0,
          "plusMinus": -2,
          "adr": 67.5,
          "kast": 0.524,
          "rating": 0.84,
          "ratingVersion": "cito_rating_1",
          "headshots": 8,
          "headshotPercent": 0.615,
          "firstKills": 1,
          "firstDeaths": 4,
          "lastSyncedAt": "2026-10-16T19:14:48.329Z",
          "mapNameCanonical": null,
          "imageUrl": null,
          "mapImageUrl": null,
          "coverImageUrl": null,
          "…": "6 more fields"
        }
      ],
      "bombEvents": [],
      "bombStats": [],
      "weaponAggregates": [],
      "mapImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/maps/nuke.png",
      "pickTeamId": "cs2-team-10333",
      "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-2399265-map-2",
      "matchId": "cs2-match-2399265",
      "mapNumber": 2,
      "mapName": "Dust2",
      "status": "completed",
      "team1Score": 13,
      "team2Score": 5,
      "team1Halves": null,
      "team2Halves": null,
      "winnerTeamId": "cs2-team-8474",
      "durationRounds": 18,
      "lastSyncedAt": "2026-10-16T19:14:47.405Z",
      "playerStats": [
        {
          "id": "live-source-match-2399265-map-2-Gizmy",
          "mapId": "cs2-match-2399265-map-2",
       
…

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-2399265-map-1",
      "entityType": "cs2_game",
      "matchId": "cs2-match-2399265",
      "mapNumber": 1,
      "map": "Nuke",
      "pickTeamId": null,
      "winnerTeamId": "cs2-team-8474",
      "score": {
        "team1": 13,
        "team2": 8
      },
      "halfScores": null,
      "team1Halves": null,
      "team2Halves": null,
      "overtime": null,
      "durationRounds": 21,
      "duration": {
        "rounds": 21,
        "source": "stored"
      },
      "status": "completed",
      "resultType": "played",
      "resultStatus": "completed",
      "isForfeit": false,
      "statsEligible": true,
      "unavailableReason": null,
      "playerStatsAvailable": true,
      "playerStats": [
        {
          "playerId": "cs2-player-21816",
          "playerName": "Gizmy",
          "teamId": "cs2-team-8474",
          "teamName": "100 Thieves",
          "kills": 11,
          "deaths": 12,
          "assists": 4,
          "plusMinus": -1,
          "adr": 61.5,
          "kast": 0.762,
          "rating": 0.99,
          "ratingVersion": "cito_rating_1",
          "headshots": 6,
          "headshotPercent": 0.545,
          "openingKills": 2,
          "openingDeaths": 1,
          "ratingProfile": {
            "rating": 0.99,
            "ratingVersion": "cito_rating_1",
            "components": {
              "…": "…"
            },
            "openingDuels": {
              "…": "…"
            },
            "formula": "Cito Rating 1.0 per map: 0.30*KPR/0.683 + 0.25*(1-DPR)/0.305 + 0.25*ADR/74.1 + 0.15*KAST/0.716 + 0.05*APR/0.223 (per-round kills, deaths, assists; missing ADR/KAST/assists terms are dropped and the weights rescaled). An average map is ab..."
          },
          "lastSyncedAt": "2026-10-16T19:14:48.147Z"
        },
        {
          "playerId": "cs2-player-25253",
          "playerName": "Joey",
          "teamId": "cs2-team-10333",
          "teamName": "Sangal",
          "kills": 13,
          "deaths": 15,
          "assists": 0,
          "plusMinus": -2,
          "adr": 67.5,
          "kast": 0.524,
          "rating": 0.84,
          "ratingVersion": "cito_rating_1",
          "headshots": 8,
          "headshotPercent": 0.615,
          "openingKills": 1,
          "openingDeaths": 4,
          "ratingProfile": {
            "rating": 0.84,
            "ratingVersion": "cito_rating_1",
            "components": {
              "…": "…"
            },
            "openingDuels": {
              "…": "…"
            },
            "formula": "Cito Rating 1.0 per map: 0.30*KPR/0.683 + 0.25*(1-DPR)/0.305 + 0.25*ADR/74.1 + 0.15*KAST/0.716 + 0.05*APR/0.223 (per-round kills, deaths, assists; missing ADR/KAST/assists terms are dropped and the weights rescaled). An average map is ab..."
          },
          "lastSyncedAt": "2026-10-16T19:14:48.329Z"
        }
      ],
      "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-2399265-map-2",
      "entityType": "cs2_game",
      "matchId": "cs2-match-2399265",
      "mapNumber": 2,
      "map": "Dust2",
      "pickTeamId": nu
…

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-2399265-map-1-Gizmy",
      "mapId": "cs2-match-2399265-map-1",
      "matchId": "cs2-match-2399265",
      "playerId": "cs2-player-21816",
      "playerName": "Gizmy",
      "teamId": "cs2-team-8474",
      "teamName": "100 Thieves",
      "kills": 11,
      "deaths": 12,
      "assists": 4,
      "plusMinus": -1,
      "adr": 61.5,
      "kast": 0.762,
      "rating": 0.99,
      "ratingVersion": "cito_rating_1",
      "headshots": 6,
      "headshotPercent": 0.545,
      "firstKills": 2,
      "firstDeaths": 1,
      "lastSyncedAt": "2026-10-16T19:14:48.147Z",
      "player": {
        "id": "cs2-player-21816",
        "nickname": "Gizmy",
        "slug": "gizmy",
        "realName": "Jack von Spreckelsen",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/eba9e8db28a85e230e1f1f2e529829f5.webp",
        "countryName": "United Kingdom",
        "countryCode": "GB",
        "age": 22,
        "rating": 0.94,
        "mapsPlayed": 72,
        "careerStats": {
          "rating": 0.94,
          "lastKnownRating": 0.94
        },
        "currentTeamId": "cs2-team-11811",
        "status": "active",
        "primaryRole": "support",
        "roleConfidence": "medium",
        "statusUpdatedAt": "2026-10-16T18:56:27.673Z",
        "lastSyncedAt": "2026-10-16T19:18:23.962Z",
        "lastVerified": "2026-10-16T19:18:23.962Z"
      },
      "team": {
        "id": "cs2-team-8474",
        "name": "100 Thieves",
        "slug": "100-thieves",
        "teamTag": "1T",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/ac59058bd7afa346763eda6e57e98413.webp",
        "countryName": "Europe",
        "countryCode": null,
        "region": "Europe",
        "worldRanking": 37,
        "lastSyncedAt": "2026-10-16T19:39:29.017Z",
        "lastVerified": "2026-10-16T19:39:29.017Z",
        "confidence": "high",
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46d3bfa423b2598593ea7ce36ad3149e.webp"
      },
      "ctKills": 3,
      "…": "17 more fields"
    },
    {
      "entityType": "cs2_player_stat",
      "id": "live-source-match-2399265-map-1-device",
      "mapId": "cs2-match-2399265-map-1",
      "matchId": "cs2-match-2399265",
      "playerId": "cs2-player-7592",
      "playerName": "device",
      "teamId": "cs2-team-8474",
      "teamName": "100 Thieves",
      "kills": 24,
      "deaths": 10,
      "assists": 3,
      "plusMinus": 14,
      "adr": 104.1,
      "kast": 0.857,
      "rating": 1.49,
      "ratingVersion": "cito_rating_1",
      "headshots": 8,
      "headshotPercent": 0.333,
      "firstKills": 4,
      "firstDeaths": 1,
      "lastSyncedAt": "2026-10-16T19:14:47.722Z",
      "player": {
        "id": "cs2-player-7592",
        "nickname": "device",
        "slug": "device",
        "realName": "Nicolai Reedtz",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d3752c9aea619eb2a9eeb8b9f37d5960.webp",
        "countryName": "Denmark",
        "countryCode": "DK",
        "age": 30,
        "rating": 1.12,
        "mapsPlayed": 185,
        "careerStats": {
          "rating": 1.12,
          "lastKnownRating": 1.12
        },
        "currentTeamId": "cs2-team-8474",
        "status": "acti
…

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-2399265",
    "windowDays": 90,
    "dataAvailable": true,
    "teams": [
      {
        "teamId": "cs2-team-8474",
        "players": [
          {
            "playerId": "cs2-player-7592",
            "teamId": "cs2-team-8474",
            "nickname": "device",
            "name": "Nicolai Reedtz",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d3752c9aea619eb2a9eeb8b9f37d5960.webp",
            "slug": "device",
            "countryName": "Denmark",
            "countryCode": "DK",
            "role": "AWPer",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 64,
            "matches": 29,
            "rating": 1.12,
            "adr": 76,
            "kast": 0.732,
            "kdRatio": 1.23,
            "kills": 965,
            "deaths": 786,
            "assists": 225,
            "unavailableSubratings": [
              "…"
            ]
          },
          {
            "playerId": "cs2-player-23397",
            "teamId": "cs2-team-8474",
            "nickname": "poiii",
            "name": "Alex Nyholm Sundgren",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f6dfe83e11a052075aaed17110f0a68a.webp",
            "slug": "poiii",
            "countryName": "Sweden",
            "countryCode": "SE",
            "role": "entry",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 64,
            "matches": 29,
            "rating": 1.09,
            "adr": 81.4,
            "kast": 0.765,
            "kdRatio": 1.12,
            "kills": 983,
            "deaths": 878,
            "assists": 309,
            "unavailableSubratings": [
              "…"
            ]
          }
        ]
      },
      {
        "teamId": "cs2-team-10333",
        "players": [
          {
            "playerId": "cs2-player-25253",
            "teamId": "cs2-team-10333",
            "nickname": "Joey",
            "name": "Yeray Serrano Pérez",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/45c4b203aa0fcbb99ece313c57c5f22a.webp",
            "slug": "joey",
            "countryName": "Spain",
            "countryCode": "ES",
            "role": "rifler",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 69,
            "matches": 36,
            "rating": 1.07,
            "adr": 79.6,
            "kast": 0.732,
            "kdRatio": 1.09,
            "kills": 1064,
            "deaths": 977,
            "assists": 341,
            "unavailableSubratings": [
              "…"
            ]
          },
          {
            "playerId": "cs2-player-20309",
            "teamId": "cs2-team-10333",
            "nickname": "bnox",
            "name": "Bartosz Niebisz",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/5f0fcaafeb1b02eedd96e15c4034f8de.webp",
            "slug": "bnox",
            "countryName": "Poland",
            "countryCode": "PL",
            "role": "rifler",
            "windowDays": 90,
            "dataAvailable": true,
            "maps": 69,
            "matches": 36,
            "rating": 1.08,
            "adr": 78.9,
            "kast": 0.747,
            "kdRatio": 1.07,
            "kills": 1019,
            "deaths": 955,
            "assists": 346,
            "unavailableSubrati
…

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-2399265",
    "eventId": "cs2-event-9223",
    "eventName": "Stake Pulse Beat III",
    "eventSlug": "stake-pulse-beat-iii",
    "stageName": null,
    "startsAt": "2026-10-16T17:35:00.000Z",
    "endsAt": "2026-10-16T19:14:49.880Z",
    "bestOf": 3,
    "status": "completed",
    "team1Id": "cs2-team-8474",
    "team2Id": "cs2-team-10333",
    "team1Name": "100 Thieves",
    "team2Name": "Sangal",
    "team1Score": 2,
    "team2Score": 0,
    "winnerTeamId": "cs2-team-8474",
    "vetoOrder": null,
    "streamLinks": null,
    "vodLinks": [],
    "lastSyncedAt": "2026-10-16T19:18:14.369Z",
    "lastVerified": "2026-10-16T19:18:14.369Z",
    "confidence": "high",
    "event": {
      "id": "cs2-event-9223",
      "name": "Stake Pulse Beat III",
      "slug": "stake-pulse-beat-iii",
      "imageUrl": null,
      "prizePool": 80000,
      "currency": "USD",
      "location": "Stockholm, Sweden",
      "format": "Group stage: GSL Bo3 / Playoffs: Single elimination Bo3 3rd place decider match Bo3",
      "teamCount": 16,
      "standings": [
        {
          "seed": 11,
          "teamId": "cs2-team-6665",
          "teamName": "Astralis",
          "placement": null
        },
        {
          "seed": 12,
          "teamId": "cs2-team-9215",
          "teamName": "MIBR",
          "placement": null
        }
      ],
      "startsAt": "2026-10-12T00:00:00.000Z",
      "endsAt": "2026-10-17T23:59:59.000Z",
      "status": "live",
      "tier": "B",
      "prestigeScore": 55,
      "region": "Europe",
      "isLan": true,
      "confirmedStatus": "source_detail",
      "streamLinks": [
        {
          "url": null,
          "label": null,
          "language": null,
          "platform": "twitch"
        },
        {
          "url": null,
          "label": null,
          "language": null,
          "platform": "youtube"
        }
      ],
      "vodLinks": [],
      "lastSyncedAt": "2026-10-16T19:44:02.585Z",
      "lastVerified": "2026-10-16T19:44:02.585Z",
      "confidence": "high",
      "eventId": "cs2-event-9223",
      "…": "2 more fields"
    },
    "…": "17 more fields"
  },
  "meta": {}
}

List matches

GET/api/v1/cs2/matches

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

Query parameters

ParameterTypeDescription
eventstringEvent id or slug.
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-2399708",
      "eventId": "cs2-event-9257",
      "eventName": "Stake Ranked Episode 5",
      "eventSlug": "stake-ranked-episode-5",
      "stageName": null,
      "startsAt": "2026-10-27T18:30:00.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "upcoming",
      "team1Id": "cs2-team-9215",
      "team2Id": "cs2-team-11251",
      "team1Name": "MIBR",
      "team2Name": "Eternal Fire",
      "team1Score": null,
      "team2Score": null,
      "winnerTeamId": null,
      "lastSyncedAt": "2026-10-16T19:15:26.961Z",
      "lastVerified": "2026-10-16T19:15:26.961Z",
      "confidence": "high",
      "event": {
        "id": "cs2-event-9257",
        "name": "Stake Ranked Episode 5",
        "slug": "stake-ranked-episode-5",
        "imageUrl": null,
        "prizePool": 100000,
        "currency": "USD",
        "tier": "B",
        "prestigeScore": 55,
        "status": "upcoming",
        "region": null,
        "startsAt": "2026-10-27T00:00:00.000Z",
        "endsAt": "2026-10-30T23:59:59.000Z",
        "eventId": "cs2-event-9257",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/21396af31d05530bf62f7baa70ee6f59.webp",
        "bannerImageUrl": null
      },
      "team1": {
        "id": "cs2-team-9215",
        "name": "MIBR",
        "slug": "mibr",
        "teamTag": "MIBR",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/46feb72013aa1719e93ab5397d22f0a0.webp",
        "countryName": "Brazil",
        "countryCode": "BR",
        "worldRanking": 12,
        "alternateLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b614e4150b202d42c114bb0723b821f5.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b614e4150b202d42c114bb0723b821f5.webp"
      },
      "team2": {
        "id": "cs2-team-11251",
        "name": "Eternal Fire",
        "slug": "eternal-fire",
        "teamTag": "EF",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/17ab3f7067c6945bccdc46f1066d6fc8.webp",
        "countryName": "Europe",
        "countryCode": null,
        "worldRanking": 38
      },
      "maps": [
        {
          "id": "cs2-match-2399708-map-1",
          "matchId": "cs2-match-2399708",
          "mapNumber": 1,
          "mapName": "TBA",
          "status": "upcoming",
          "team1Score": null,
          "team2Score": null,
          "team1Halves": null,
          "team2Halves": null,
          "winnerTeamId": null,
          "durationRounds": null,
          "lastSyncedAt": "2026-10-16T05:56:03.518Z",
          "mapImageUrl": null,
          "pickTeamId": null,
          "objectiveStats": {
            "dataAvailable": false,
            "unavailableReason": "not_yet_indexed",
            "confidence": {
              "…": "…"
            },
            "teamStats": [
              "…"
            ],
            "roundEvents": [
              "…"
            ]
          },
          "mapNameCanonical": null,
          "imageUrl": null,
          "coverImageUrl": null,
          "resultType": "not_played",
          "resultStatus": "not_played",
          "isForfeit": false,
          "statsEligible": false,
          "unavailableReason": "map_not_played",
          "dataAvailability": {
            "playerStats": {
              "…": "…"
            }
          }
        },
        {
          "id": "
…

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-8536",
          "name": "Ground Zero",
          "slug": "ground-zero"
        },
        "teamB": {
          "id": "cs2-team-9881",
          "name": "Rooster",
          "slug": "rooster"
        },
        "meetings": 20,
        "lastMeetingAt": "2026-09-27T09:00:00.000Z"
      },
      {
        "teamA": {
          "id": "cs2-team-4494",
          "name": "MOUZ",
          "slug": "mouz"
        },
        "teamB": {
          "id": "cs2-team-9565",
          "name": "Vitality",
          "slug": "vitality"
        },
        "meetings": 17,
        "lastMeetingAt": "2026-10-11T15:00: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"