Docs/CS2 API/CS2 Tournaments API

CS2 Tournaments API

Tournaments and events (the two route families are equivalent): calendar, participants, matches, standings, brackets, results and event-level stats.

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

Live events

GET/api/v1/cs2/tournaments/live
GET/api/v1/cs2/events/live

Tournaments being played now. Same response as `GET /api/v1/cs2/events/live`. 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/tournaments/live" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-9266",
      "id": "cs2-event-9266",
      "name": "Logitech G Play Connect 2026",
      "slug": "logitech-g-play-connect-2026",
      "status": "live",
      "confirmedStatus": "source_listed",
      "startsAt": "2026-09-17T08:30:00.000Z",
      "endsAt": "2026-09-23T23:59:59.000Z",
      "tier": "B",
      "prestigeScore": 55,
      "region": "Europe",
      "isLan": true,
      "location": null,
      "prizePool": 100000,
      "currency": "USD",
      "prizeDistribution": [
        {
          "label": "Total prize pool",
          "amount": 100000,
          "percent": 100,
          "currency": "USD"
        },
        {
          "label": "1st",
          "amount": 40000,
          "teamId": null,
          "currency": "USD",
          "teamName": null,
          "clubPrize": null,
          "placement": "1st",
          "spotPrize": null,
          "playerPrize": 40000
        }
      ],
      "format": "Group stage: Round-robin Bo1 / Playoffs: Single elimination Bo3 - Grand final Bo5",
      "teamCount": 12,
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/3c695e1ca7dd6d43d2c4d3daf93e4618.webp",
      "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/3c695e1ca7dd6d43d2c4d3daf93e4618.webp",
      "bannerImageUrl": null,
      "eventStructure": {
        "other": [],
        "teams": [],
        "playIn": [],
        "mapPool": [
          {
            "key": "cache",
            "name": "Cache",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"
          },
          {
            "key": "dust2",
            "name": "Dust2",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"
          }
        ],
        "brackets": [],
        "groupStage": [],
        "allBrackets": [],
        "relatedEvents": [
          {
            "id": "cs2-event-9267",
            "name": "Logitech G Play Connect 2026 Closed Qualifier",
            "slug": "logitech-g-play-connect-2026-closed-qualifier",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/91534393b3d18b80a2dfca7e1d12f596.webp",
            "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c2c31171918f0f4e8da616513d12d178.webp"
          }
        ]
      },
      "hasBracketStructure": true,
      "…": "6 more fields"
    },
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-9222",
      "id": "cs2-event-9222",
      "name": "Stake Pulse Beat II",
      "slug": "stake-pulse-beat-ii",
      "status": "live",
      "confirmedStatus": "source_listed",
      "startsAt": "2026-09-21T10:00:00.000Z",
      "endsAt": "2026-09-26T23:59:59.000Z",
      "tier": "B",
      "prestigeScore": 55,
      "region": "Europe",
      "isLan": true,
      "location": null,
      "prizePool": 60000,
      "currency": "USD",
      "prizeDistribution": [
        {
          "label": "Total prize pool",
          "amount": 60000,
          "percent": 100,
          "currency": "USD"
        },
        {
          "label": "1st",
          "amount": 20000,
          "teamId": null,
          "currency": "USD",
          "teamName": null,
          "clubPrize": null,
          "placement": "1st",
          "spotPrize": null,
          "playerPrize": 20000
        }
      
…

Upcoming events

GET/api/v1/cs2/tournaments/upcoming
GET/api/v1/cs2/events/upcoming

Scheduled tournaments, soonest first. Same response as `GET /api/v1/cs2/events/upcoming`. 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/tournaments/upcoming" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-8302",
      "id": "cs2-event-8302",
      "name": "PGL Major Singapore 2026",
      "slug": "pgl-major-singapore-2026",
      "status": "upcoming",
      "confirmedStatus": "source_listed",
      "startsAt": "2026-12-13T00:00:00.000Z",
      "endsAt": "2026-12-13T23:59:59.000Z",
      "tier": "S",
      "prestigeScore": 100,
      "region": "Asia",
      "isLan": true,
      "location": "Singapore",
      "prizePool": 1250000,
      "currency": "USD",
      "prizeDistribution": [
        {
          "label": "Total prize pool",
          "amount": 1250000,
          "percent": 100,
          "currency": "USD"
        }
      ],
      "format": null,
      "teamCount": 16,
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp",
      "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp",
      "bannerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/85c65209bf71aa69cdb5b255e3a062a1.webp",
      "eventStructure": {
        "other": [],
        "teams": [],
        "playIn": [],
        "mapPool": [
          {
            "key": "cache",
            "name": "Cache",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"
          },
          {
            "key": "dust2",
            "name": "Dust2",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"
          }
        ],
        "brackets": [],
        "groupStage": [],
        "allBrackets": [],
        "relatedEvents": [
          {
            "id": "cs2-event-8301",
            "name": "IEM Cologne Major 2026",
            "slug": "iem-cologne-major-2026",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp",
            "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9981b4f7011470de58e32a195cd80cb0.webp"
          },
          {
            "id": "cs2-event-9028",
            "name": "IEM Cologne Major 2026 Stage 1",
            "slug": "iem-cologne-major-2026-stage-1",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp",
            "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/9981b4f7011470de58e32a195cd80cb0.webp"
          }
        ]
      },
      "hasBracketStructure": true,
      "…": "6 more fields"
    },
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-8050",
      "id": "cs2-event-8050",
      "name": "PGL Masters Bucharest 2026",
      "slug": "pgl-masters-bucharest-2026",
      "status": "upcoming",
      "confirmedStatus": "source_listed",
      "startsAt": "2026-10-31T00:00:00.000Z",
      "endsAt": "2026-10-31T23:59:59.000Z",
      "tier": "A",
      "prestigeScore": 80,
      "region": "Europe",
      "isLan": true,
      "location": "Bucharest, Romania",
      "prizePool": 1250000,
      "currency": "USD",
      "prizeDistribution": [
        {
          "label": "Total prize pool",
          "amount": 1250000,
          "percent": 100,
          "currency": "USD"
        },
        {
          "label": "Player Share",
          "amount": 625000,
          "percent": 50,
          "currency": "USD"
        }
 
…

Recent events

GET/api/v1/cs2/tournaments/recent
GET/api/v1/cs2/events/recent

Finished tournaments, newest first. Same response as `GET /api/v1/cs2/events/recent`. 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/tournaments/recent" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-9405",
      "id": "cs2-event-9405",
      "name": "CCT 2026 Challengers South America Series 3",
      "slug": "cct-2026-challengers-south-america-series-3",
      "status": "completed",
      "confirmedStatus": "detail_unavailable",
      "startsAt": "2026-09-17T23:45:00.000Z",
      "endsAt": "2026-09-21T01:16:22.000Z",
      "tier": "B",
      "prestigeScore": 55,
      "region": "South America",
      "isLan": true,
      "location": null,
      "prizePool": 2500,
      "currency": "USD",
      "format": "Playoffs: Double elimination Bo3",
      "teamCount": null,
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp",
      "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp",
      "bannerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/94643b0a8eb390b6b41cd3d1850aef12.webp",
      "hasBracketStructure": true,
      "standingsAvailable": false,
      "lastSyncedAt": "2026-09-18T21:00:47.512Z",
      "…": "3 more fields"
    },
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-9034",
      "id": "cs2-event-9034",
      "name": "Liga Gamers Club 2026 Serie A February Cup",
      "slug": "liga-gamers-club-2026-serie-a-february-cup",
      "status": "completed",
      "confirmedStatus": "detail_unavailable",
      "startsAt": "2026-02-27T19:00:00.000Z",
      "endsAt": "2026-09-20T23:59:59.000Z",
      "tier": "A",
      "prestigeScore": 75,
      "region": "Europe",
      "isLan": true,
      "location": null,
      "prizePool": 2000,
      "currency": "USD",
      "format": "Playoffs: Grand final Bo3",
      "teamCount": 2,
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/3c16adb151dc0aeaf3d4fd611241f448.webp",
      "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/3c16adb151dc0aeaf3d4fd611241f448.webp",
      "bannerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/e423ed2e72d478274c8ca9da4f420b1d.webp",
      "hasBracketStructure": true,
      "standingsAvailable": true,
      "lastSyncedAt": "2026-09-20T00:50:07.733Z",
      "…": "3 more fields"
    }
  ],
  "meta": {
    "count": 2,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Event calendar

GET/api/v1/cs2/tournaments/calendar
GET/api/v1/cs2/events/calendar

Tournaments in a date range. Filter with `from` and `to`. Same response as `GET /api/v1/cs2/events/calendar`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
fromstringStart of the date range (ISO 8601, UTC).
limitintegerRows to return. Maximum 250; larger values are reduced to 250.
statusstringFilter by status.
tostringEnd of the date range (ISO 8601, UTC).

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_tournament_calendar",
    "dataAvailable": true,
    "events": [
      {
        "entityType": "cs2_event",
        "eventId": "cs2-event-9390",
        "id": "cs2-event-9390",
        "name": "ESEA Intermediate Season 58 Oceania",
        "slug": "esea-intermediate-season-58-oceania",
        "status": "completed",
        "confirmedStatus": "detail_unavailable",
        "startsAt": "2026-09-03T07:30:00.000Z",
        "endsAt": "2026-09-17T09:00:00.000Z",
        "tier": null,
        "prestigeScore": null,
        "region": null,
        "isLan": true,
        "location": null,
        "prizePool": null,
        "currency": "USD",
        "prizeDistribution": [
          {
            "label": "1st",
            "amount": null,
            "teamId": "cs2-team-13686",
            "currency": "USD",
            "teamName": "Abyssal",
            "clubPrize": null,
            "placement": "1st",
            "spotPrize": null,
            "playerPrize": null
          },
          {
            "label": "2nd",
            "amount": null,
            "teamId": null,
            "currency": "USD",
            "teamName": null,
            "clubPrize": null,
            "placement": "2nd",
            "spotPrize": null,
            "playerPrize": null
          }
        ],
        "format": "Playoffs: Double elimination Bo3",
        "teamCount": 8,
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b3b6c675c0b486f6d1aad32e024f6640.webp",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b3b6c675c0b486f6d1aad32e024f6640.webp",
        "bannerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/10cea6fcaa71cda7f16863dab16cac31.jpg",
        "eventStructure": {
          "other": [],
          "teams": [],
          "playIn": [],
          "mapPool": [
            {
              "…": "…"
            },
            {
              "…": "…"
            }
          ],
          "brackets": [],
          "groupStage": [],
          "allBrackets": [],
          "relatedEvents": [
            {
              "…": "…"
            }
          ]
        },
        "hasBracketStructure": true,
        "…": "5 more fields"
      },
      {
        "entityType": "cs2_event",
        "eventId": "cs2-event-9345",
        "id": "cs2-event-9345",
        "name": "WINLINE MPKBK CIS LAN Season 7",
        "slug": "winline-mpkbk-cis-lan-season-7",
        "status": "completed",
        "confirmedStatus": "detail_unavailable",
        "startsAt": "2026-09-13T06:00:00.000Z",
        "endsAt": "2026-09-16T23:59:59.000Z",
        "tier": "B",
        "prestigeScore": 55,
        "region": "CIS",
        "isLan": true,
        "location": null,
        "prizePool": 40000,
        "currency": "USD",
        "prizeDistribution": [
          {
            "label": "Total prize pool",
            "amount": 40000,
            "percent": 100,
            "currency": "USD"
          },
          {
            "label": "1st",
            "amount": 20000,
            "teamId": "cs2-team-7969",
            "currency": "USD",
            "teamName": "Nemiga",
            "clubPrize": null,
            "placement": "1st",
            "spotPrize": null,
            "playerPrize": 20000
          }
        ],
        "format": "Group stage: GSL Bo3 / Playoffs: Single elimination Bo3 - Grand final Bo5",
        "teamCount": 16,
        "logoUrl": "https://api.c
…

Active events

GET/api/v1/cs2/tournaments/active
GET/api/v1/cs2/events/active

Tournaments in progress or starting soon. Same response as `GET /api/v1/cs2/events/active`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
fieldsstringComma-separated list of fields to return.
includeUpcomingstringFilter by includeUpcoming.
include_upcomingstringFilter by include_upcoming.
limitintegerRows to return. Maximum 250; larger values are reduced to 250.
summarybooleantrue returns a summary instead of full rows.
upcomingLimitstringFilter by upcomingLimit.
upcoming_limitstringFilter by upcoming_limit.

Example

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

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-8266",
      "id": "cs2-event-8266",
      "name": "FISSURE Playground 3",
      "slug": "fissure-playground-3",
      "status": "completed",
      "confirmedStatus": "detail_unavailable",
      "startsAt": "2026-09-08T03:00:00.000Z",
      "endsAt": "2026-09-13T23:59:59.000Z",
      "tier": "A",
      "prestigeScore": 75,
      "region": "Asia",
      "isLan": true,
      "location": "Shenzhen, China",
      "prizePool": 1000000,
      "currency": "USD",
      "prizeDistribution": null,
      "format": null,
      "teamCount": 16,
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d9d4c3f2cd813bd882aba0867173d3d8.webp",
      "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/d9d4c3f2cd813bd882aba0867173d3d8.webp",
      "bannerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/4136fd9dafdb58d6d881db924e6fa42a.webp",
      "eventStructure": null,
      "hasBracketStructure": false,
      "…": "8 more fields"
    },
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-9240",
      "id": "cs2-event-9240",
      "name": "Esports Nations Cup 2026",
      "slug": "esports-nations-cup-2026",
      "status": "upcoming",
      "confirmedStatus": "detail_unavailable",
      "startsAt": "2026-11-10T00:00:00.000Z",
      "endsAt": "2026-11-15T23:59:59.000Z",
      "tier": "A",
      "prestigeScore": 75,
      "region": null,
      "isLan": true,
      "location": null,
      "prizePool": 1320000,
      "currency": "USD",
      "prizeDistribution": [
        {
          "label": "Total prize pool",
          "amount": 1320000,
          "percent": 100,
          "currency": "USD"
        },
        {
          "label": "1st",
          "amount": 300000,
          "teamId": null,
          "currency": "USD",
          "teamName": null,
          "clubPrize": null,
          "placement": "1st",
          "spotPrize": null,
          "playerPrize": 300000
        }
      ],
      "format": "Group stage: Round-robin Bo1 / Playoffs: Single elimination Bo3 - Grand final Bo5 3rd place decider match Bo3 Event d…",
      "teamCount": 24,
      "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0c2fb0ed12bab08f0f0cf7bea895b2d4.webp",
      "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/0c2fb0ed12bab08f0f0cf7bea895b2d4.webp",
      "bannerImageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/43105bff49c2aed223bf834eaac0682b.png",
      "eventStructure": {
        "other": [
          {
            "name": "3rd Place Decider Match",
            "type": null,
            "rounds": [
              "…"
            ],
            "display": "Collapsed",
            "section": "other"
          }
        ],
        "teams": [],
        "playIn": [],
        "mapPool": [
          {
            "key": "cache",
            "name": "Cache",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"
          },
          {
            "key": "dust2",
            "name": "Dust2",
            "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"
          }
        ],
        "brackets": [
          {
            "name": "Playoffs",
            "type": null,
            "rounds": [
              "…"
            ],
            "display": "Colla
…

List events

GET/api/v1/cs2/tournaments
GET/api/v1/cs2/events

Tournaments with filters for status and date. List rows are compact; fetch one event for its full structure and standings. Same response as `GET /api/v1/cs2/events`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
fieldsstringComma-separated list of fields to return.
limitintegerRows to return. Maximum 100; larger values are reduced to 100.
offsetintegerRows to skip, for paging.
pageintegerPage number, starting at 1.
summarybooleantrue returns a summary instead of full rows.

Example

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

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-8300",
      "id": "cs2-event-8300",
      "name": "Major #2 2028",
      "slug": "major-2-2028",
      "status": "upcoming",
      "confirmedStatus": "source_listed",
      "startsAt": "2028-12-10T00:00:00.000Z",
      "endsAt": "2028-12-10T23:59:59.000Z",
      "tier": "S",
      "prestigeScore": 100,
      "region": "Europe",
      "isLan": true,
      "location": null,
      "prizePool": null,
      "currency": "USD",
      "format": null,
      "teamCount": 4,
      "logoUrl": null,
      "imageUrl": null,
      "bannerImageUrl": null,
      "hasBracketStructure": true,
      "standingsAvailable": true,
      "lastSyncedAt": "2026-09-23T03:15:26.387Z",
      "…": "12 more fields"
    },
    {
      "entityType": "cs2_event",
      "eventId": "cs2-event-8822",
      "id": "cs2-event-8822",
      "name": "PGL Event #8 2028",
      "slug": "pgl-event-8-2028",
      "status": "upcoming",
      "confirmedStatus": "source_listed",
      "startsAt": "2028-11-13T00:00:00.000Z",
      "endsAt": "2028-11-13T23:59:59.000Z",
      "tier": null,
      "prestigeScore": null,
      "region": "Europe",
      "isLan": true,
      "location": null,
      "prizePool": null,
      "currency": "USD",
      "format": null,
      "teamCount": 4,
      "logoUrl": null,
      "imageUrl": null,
      "bannerImageUrl": null,
      "hasBracketStructure": true,
      "standingsAvailable": true,
      "lastSyncedAt": "2026-09-23T03:15:26.259Z",
      "…": "12 more fields"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 2,
    "total": 1308,
    "count": 2,
    "totalPages": 654,
    "hasNext": true,
    "hasPrev": false
  }
}

Event matches

GET/api/v1/cs2/tournaments/{eventIdOrSlug}/matches
GET/api/v1/cs2/events/{eventIdOrSlug}/matches

All matches of a tournament. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}/matches`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

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

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398335",
      "eventId": "cs2-event-9405",
      "eventName": "CCT 2026 Challengers South America Series 3",
      "eventSlug": "cct-2026-challengers-south-america-series-3",
      "stageName": null,
      "startsAt": "2026-09-17T23:45:00.000Z",
      "endsAt": "2026-09-18T01:35:27.865Z",
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-13907",
      "team2Id": "cs2-team-13978",
      "team1Name": "RUSH",
      "team2Name": "Sementes do Mal",
      "team1Score": 2,
      "team2Score": 0,
      "winnerTeamId": "cs2-team-13907",
      "liveState": {
        "teams": {
          "team1Name": "RUSH",
          "team2Name": "Sementes do Mal",
          "ctTeamName": "RUSH",
          "terroristTeamName": "Sementes do Mal"
        },
        "source": "live",
        "status": "live",
        "matchId": "cs2-match-2398335",
        "roundEnds": [
          {
            "winner": "CT",
            "eventId": "8c7dd19ad868b4e7839eeef70f496ac8",
            "payload": {
              "…": "…"
            },
            "winType": "CTs_Win",
            "eventType": "RoundEnd",
            "observedAt": "2026-09-18T01:21:07.634Z",
            "terroristScore": 8,
            "webhookEligible": true,
            "counterTerroristScore": 13
          },
          {
            "winner": "TERRORIST",
            "eventId": "916676e20e999307d8105ff1f5d3ebeb",
            "payload": {
              "…": "…"
            },
            "winType": "Terrorists_Win",
            "eventType": "RoundEnd",
            "observedAt": "2026-09-18T01:21:07.634Z",
            "terroristScore": 8,
            "webhookEligible": true,
            "counterTerroristScore": 12
          }
        ],
        "bombEvents": [
          {
            "source": "live",
            "eventId": "1f29548ca0ceb17014c035e6ffed2740",
            "payload": {
              "…": "…"
            },
            "bombSite": "B",
            "tPlayers": 2,
            "ctPlayers": 0,
            "eventType": "BombPlanted",
            "observedAt": "2026-09-18T01:21:07.634Z",
            "playerName": "coxinha",
            "playerNick": "coxa",
            "webhookEligible": true
          },
          {
            "source": "live",
            "eventId": "f3960568b0c249e7e68165d061323faa",
            "payload": {
              "…": "…"
            },
            "bombSite": "A",
            "tPlayers": 1,
            "ctPlayers": 1,
            "eventType": "BombPlanted",
            "observedAt": "2026-09-18T01:21:07.635Z",
            "playerName": "Kaiserzy",
            "playerNick": "Kaiserzy",
            "webhookEligible": true
          }
        ],
        "capturedAt": "2026-09-18T01:21:07.639Z",
        "currentMap": "de_mirage",
        "team1Score": 13,
        "team2Score": 8,
        "bombPlanted": false,
        "playerStats": [
          {
            "hp": 0,
            "adr": 87.95238095238095,
            "name": "terran",
            "nick": "terran",
            "side": "T",
            "alive": false,
            "kills": 17,
            "money": 450,
            "deaths": 16,
            "helmet": false,
            "kevlar": false,
            "assists": 3,
            "steamId": "1:0:227765279",
            "hasDefuseKit": false,
            "primaryWeapon": null
          },
          {
            "hp": 0,
            "adr": 79.3809
…

Event teams

GET/api/v1/cs2/tournaments/{eventIdOrSlug}/teams
GET/api/v1/cs2/events/{eventIdOrSlug}/teams

Teams in a tournament. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}/teams`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_event_teams",
    "eventId": "cs2-event-9405",
    "eventName": "CCT 2026 Challengers South America Series 3",
    "dataAvailable": true,
    "teams": [
      {
        "id": "cs2-team-13978",
        "name": "Sementes do Mal",
        "eventSeed": null,
        "eventPlacement": null,
        "eventStatus": "attending",
        "lastSyncedAt": "2026-09-17T20:55:03.035Z"
      },
      {
        "id": "cs2-team-13811",
        "name": "QUINTESSÊNCIA",
        "slug": "quintessncia",
        "teamTag": "QUINTESS",
        "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/b83bfcf22f50f55d9a7b96441358a4e0.webp",
        "countryName": "Brazil",
        "countryCode": "BR",
        "region": "Americas",
        "worldRanking": 132,
        "lastSyncedAt": "2026-09-23T03:09:20.146Z",
        "lastVerified": "2026-09-23T03:09:20.146Z",
        "confidence": "high"
      }
    ]
  },
  "meta": {
    "count": 7,
    "participantCount": 4,
    "matchTeamCount": 8,
    "dataAvailable": true,
    "limit": 7,
    "total": 7,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Event participants

GET/api/v1/cs2/tournaments/{eventIdOrSlug}/participants
GET/api/v1/cs2/events/{eventIdOrSlug}/participants

Teams in a tournament with their players. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}/participants`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.
limitintegerRows to return. Maximum 250; larger values are reduced to 250.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_event_participants",
    "eventId": "cs2-event-9405",
    "eventName": "CCT 2026 Challengers South America Series 3",
    "dataAvailable": true,
    "teams": [
      {
        "eventId": "cs2-event-9405",
        "teamId": "cs2-team-13907",
        "teamName": "RUSH",
        "seed": null,
        "placement": null,
        "status": "attending",
        "lastSyncedAt": "2026-09-17T20:55:03.000Z"
      },
      {
        "eventId": "cs2-event-9405",
        "teamId": "cs2-team-13978",
        "teamName": "Sementes do Mal",
        "seed": null,
        "placement": null,
        "status": "attending",
        "lastSyncedAt": "2026-09-17T20:55:03.035Z"
      }
    ]
  },
  "meta": {
    "count": 2,
    "dataAvailable": true,
    "limit": 2,
    "total": 2,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Event standings

GET/api/v1/cs2/tournaments/{eventIdOrSlug}/standings
GET/api/v1/cs2/events/{eventIdOrSlug}/standings

Teams of a tournament with seed, final placement and prize, ordered by placement. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}/standings`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.

Example

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

Response

json
{
  "success": true,
  "data": {
    "dataAvailable": false,
    "unavailableReason": "not_yet_indexed",
    "dataQuality": "unavailable",
    "message": "Event standings have not been indexed for this CS2 event yet."
  },
  "meta": {
    "count": 0,
    "dataAvailable": false,
    "source": null,
    "limit": 0,
    "total": 0,
    "page": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Event results

GET/api/v1/cs2/tournaments/{eventIdOrSlug}/results
GET/api/v1/cs2/events/{eventIdOrSlug}/results

Final placements and prize money for a tournament. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}/results`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

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

Response

json
{
  "success": true,
  "data": [
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398341",
      "eventId": "cs2-event-9405",
      "eventName": "CCT 2026 Challengers South America Series 3",
      "eventSlug": "cct-2026-challengers-south-america-series-3",
      "stageName": null,
      "startsAt": "2026-09-21T01:16:22.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-14008",
      "team2Id": "cs2-team-13811",
      "team1Name": "your end",
      "team2Name": "QUINTESSÊNCIA",
      "team1Score": 0,
      "team2Score": 2,
      "winnerTeamId": "cs2-team-13811",
      "liveState": {
        "status": "completed",
        "team1Score": 0,
        "team2Score": 2,
        "winnerTeamId": "cs2-team-13811"
      },
      "vetoOrder": [
        {
          "map": "anubis",
          "order": 1,
          "action": "ban",
          "teamId": "cs2-team-13811",
          "teamName": "QUINTESSÊNCIA"
        },
        {
          "map": null,
          "order": 2,
          "action": "ban",
          "teamId": "cs2-team-14008",
          "teamName": "your end"
        }
      ],
      "streamLinks": [
        {
          "url": null,
          "label": null,
          "language": null,
          "platform": "twitch"
        },
        {
          "url": null,
          "label": null,
          "language": null,
          "platform": "youtube"
        }
      ],
      "vodLinks": [],
      "lastSyncedAt": "2026-09-23T03:06:59.572Z",
      "lastVerified": "2026-09-23T03:06:59.572Z",
      "confidence": "high",
      "…": "18 more fields"
    },
    {
      "entityType": "cs2_match",
      "id": "cs2-match-2398340",
      "eventId": "cs2-event-9405",
      "eventName": "CCT 2026 Challengers South America Series 3",
      "eventSlug": "cct-2026-challengers-south-america-series-3",
      "stageName": null,
      "startsAt": "2026-09-20T22:19:43.000Z",
      "endsAt": null,
      "bestOf": 3,
      "status": "completed",
      "team1Id": "cs2-team-11008",
      "team2Id": "cs2-team-13811",
      "team1Name": "RUSH",
      "team2Name": "QUINTESSÊNCIA",
      "team1Score": 0,
      "team2Score": 2,
      "winnerTeamId": "cs2-team-13811",
      "liveState": {
        "status": "completed",
        "team1Score": 0,
        "team2Score": 2,
        "winnerTeamId": "cs2-team-13811"
      },
      "vetoOrder": [
        {
          "map": "nuke",
          "order": 1,
          "action": "ban",
          "teamId": "cs2-team-13811",
          "teamName": "QUINTESSÊNCIA"
        },
        {
          "map": "anubis",
          "order": 2,
          "action": "ban",
          "teamId": "cs2-team-13907",
          "teamName": "RUSH"
        }
      ],
      "streamLinks": [
        {
          "url": null,
          "label": null,
          "language": null,
          "platform": "twitch"
        },
        {
          "url": null,
          "label": null,
          "language": null,
          "platform": "youtube"
        }
      ],
      "vodLinks": [],
      "lastSyncedAt": "2026-09-23T03:07:01.475Z",
      "lastVerified": "2026-09-23T03:07:01.475Z",
      "confidence": "high",
      "…": "18 more fields"
    }
  ],
  "meta": {
    "count": 2,
    "indexedCount": 2,
    "eventStructureCount": 0,
    "dataAvailable": true,
    "event": {
      "id": "cs2-event-9405",
      "name": "CCT 2026 Challengers South America Series 3",
      "slug": "cct-2026-challengers-south-america-series-3",
      
…

Event stats

GET/api/v1/cs2/tournaments/{eventIdOrSlug}/stats
GET/api/v1/cs2/events/{eventIdOrSlug}/stats

Top players and teams by stats within a tournament. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}/stats`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.
limitintegerRows to return. Maximum 200; larger values are reduced to 200.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_event_stats",
    "eventId": "cs2-event-9405",
    "eventName": "CCT 2026 Challengers South America Series 3",
    "dataAvailable": true,
    "lastSyncedAt": "2026-09-23T01:40:58.954Z",
    "demoCoverage": {
      "matchesIndexed": 8,
      "demos": {
        "total": 0,
        "byStatus": {}
      }
    },
    "topPlayers": [
      {
        "playerId": "cs2-player-24716",
        "playerName": "cLd",
        "teamId": "cs2-team-13907",
        "teamName": "RUSH",
        "maps": 2,
        "kills": 34,
        "deaths": 24,
        "assists": 11,
        "kdDiff": 10,
        "kdRatio": 1.4167,
        "adr": null,
        "kast": null,
        "rating": 1.525,
        "rating3Profile": {
          "rating3": null,
          "rating3Available": false,
          "subratings": {
            "kills": 17,
            "damage": null,
            "survival": 1.875,
            "kast": null,
            "multiKills": null,
            "roundSwing": null
          },
          "openingDuels": {
            "openingKills": 0,
            "openingDeaths": 0,
            "successRate": null
          },
          "unavailableSubratings": [
            "multi_kills",
            "round_swing"
          ],
          "rating2": 1.525
        },
        "source": "live",
        "lastSyncedAt": "2026-09-23T01:40:58.954Z"
      },
      {
        "playerId": "cs2-player-22423",
        "playerName": "clon7",
        "teamId": "cs2-team-13907",
        "teamName": "RUSH",
        "maps": 2,
        "kills": 37,
        "deaths": 25,
        "assists": 8,
        "kdDiff": 12,
        "kdRatio": 1.48,
        "adr": null,
        "kast": null,
        "rating": 1.505,
        "rating3Profile": {
          "rating3": null,
          "rating3Available": false,
          "subratings": {
            "kills": 18.5,
            "damage": null,
            "survival": 1.8,
            "kast": null,
            "multiKills": null,
            "roundSwing": null
          },
          "openingDuels": {
            "openingKills": 0,
            "openingDeaths": 0,
            "successRate": null
          },
          "unavailableSubratings": [
            "multi_kills",
            "round_swing"
          ],
          "rating2": 1.505
        },
        "source": "live",
        "lastSyncedAt": "2026-09-23T01:40:58.954Z"
      }
    ],
    "topWeapons": []
  },
  "meta": {
    "playerCount": 2,
    "weaponCount": 0,
    "dataAvailable": true,
    "demoCoverage": {
      "matchesIndexed": 8,
      "demos": {
        "total": 0,
        "byStatus": {}
      }
    }
  }
}

Event bracket

GET/api/v1/cs2/tournaments/{eventIdOrSlug}/bracket
GET/api/v1/cs2/events/{eventIdOrSlug}/bracket

Bracket, group stage, play-in and Swiss structure of a tournament, each slot with its teams, scores and winner. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}/bracket`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_event_bracket",
    "eventId": "cs2-event-9405",
    "eventName": "CCT 2026 Challengers South America Series 3",
    "dataAvailable": true,
    "bracket": [],
    "groupStage": [],
    "playIn": [],
    "swiss": null,
    "teams": [],
    "mapPool": [
      {
        "key": "cache",
        "name": "Cache",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"
      },
      {
        "key": "dust2",
        "name": "Dust2",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"
      }
    ],
    "relatedEvents": [
      {
        "id": "cs2-event-9313",
        "name": "CCT 2026 Challengers South America Series 2",
        "slug": "cct-2026-challengers-south-america-series-2",
        "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp",
        "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp"
      }
    ],
    "completedMatchesFromStructure": [],
    "lastVerified": "2026-09-18T21:00:04.293Z"
  },
  "meta": {
    "dataAvailable": true,
    "swissAvailable": false,
    "completedStructureMatchCount": 0
  }
}

Event details

GET/api/v1/cs2/tournaments/{eventIdOrSlug}
GET/api/v1/cs2/events/{eventIdOrSlug}

One tournament: dates, location, prize pool, tier, teams and format. Same response as `GET /api/v1/cs2/events/{eventIdOrSlug}`. These routes are equivalent; use whichever reads best.

Query parameters

ParameterTypeDescription
eventIdOrSlug (path)*stringEvent id (cs2-event-8038) or slug.

Example

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

Response

json
{
  "success": true,
  "data": {
    "entityType": "cs2_event",
    "eventId": "cs2-event-9405",
    "id": "cs2-event-9405",
    "name": "CCT 2026 Challengers South America Series 3",
    "slug": "cct-2026-challengers-south-america-series-3",
    "status": "completed",
    "confirmedStatus": "detail_unavailable",
    "startsAt": "2026-09-17T23:45:00.000Z",
    "endsAt": "2026-09-21T01:16:22.000Z",
    "tier": "B",
    "prestigeScore": 55,
    "region": "South America",
    "isLan": true,
    "location": null,
    "prizePool": 2500,
    "currency": "USD",
    "prizeDistribution": [
      {
        "label": "Total prize pool",
        "amount": 2500,
        "percent": 100,
        "currency": "USD"
      }
    ],
    "format": "Playoffs: Double elimination Bo3",
    "teamCount": null,
    "logoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp",
    "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp",
    "bannerImageUrl": null,
    "eventStructure": {
      "other": [],
      "teams": [],
      "playIn": [],
      "mapPool": [
        {
          "key": "cache",
          "name": "Cache",
          "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"
        },
        {
          "key": "dust2",
          "name": "Dust2",
          "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"
        }
      ],
      "brackets": [],
      "groupStage": [],
      "allBrackets": [],
      "relatedEvents": [
        {
          "id": "cs2-event-9313",
          "name": "CCT 2026 Challengers South America Series 2",
          "slug": "cct-2026-challengers-south-america-series-2",
          "imageUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp",
          "darkUiLogoUrl": "https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp"
        }
      ]
    },
    "hasBracketStructure": true,
    "…": "15 more fields"
  },
  "meta": {}
}

Try the CS2 Tournaments 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/events/upcoming?limit=5" \
  -H "x-api-key: YOUR_API_KEY"