Skip to content

CS2 results API

Finished Counter-Strike 2 series: teams, series score, event, format, and each map's round totals. When a map has been ingested, games[].players carries kills, deaths, assists, ADR, and rating.

GET/api/v2/matches

List played matches

Paginated finished CS2 matches (both teams scored, played_at set), newest first. Each MatchItem may include games (per-map results, BO series order) and clips (Twitch highlights). Optional filters are combined with AND, then paginated: team_id (UUID, either side of the match), event_id (UUID), played_from (inclusive UTC), and played_to (exclusive UTC). A date with no time is midnight at the start of that UTC day. September 2026 is played_from=2026-09-01&played_to=2026-10-01. One calendar day is played_from=2026-09-15&played_to=2026-09-16. meta.total counts only rows that match the filters. The team parameter name is team_id, not team. Authenticate with the X-API-Key header. Authorization: Bearer is a cabinet session and does not accept an API key.

Authorizations

X-API-Keyheader

Required. API key from the GGScore cabinet. Do not send this key as Authorization: Bearer. Bearer is a cabinet session token.

Parameters

pageoptionalquery

1-based page index into the filtered result set.

limitoptionalquery

Page size (hard cap 100). Larger values increase payload size and DB cost.

team_idoptionalquery

Team UUID. A match is included when this team won or lost. The parameter name is team_id.

event_idoptionalquery

Event UUID. Only matches from this tournament.

played_fromoptionalquery

Inclusive UTC lower bound on played_at (upcoming: play_at). YYYY-MM-DD is midnight at the start of that UTC day. An offset is converted to UTC. A value with no timezone is UTC.

played_tooptionalquery

Exclusive UTC upper bound on played_at (upcoming: play_at). YYYY-MM-DD is midnight at the start of that UTC day and is not included. September 2026 is played_from=2026-09-01&played_to=2026-10-01. The calendar day 2026-09-15 is played_from=2026-09-15&played_to=2026-09-16.

Request

curl -sS 'https://ggscore.net/api/v2/matches?page=1&limit=1' \
  -H "X-API-Key: YOUR_API_KEY"

Try it

GET https://ggscore.net/api/v2/matches?page=1&limit=1

Get keys in the cabinet

Example response

{
  "items": [
    {
      "id": "929b8f48-a42f-473f-80c3-b2a8891109c3",
      "played_at": "2026-10-20T16:00:00Z",
      "team_won": { "title": "Vitality" },
      "team_lose": { "title": "MOUZ" },
      "score_won": 2,
      "score_lose": 1,
      "games": [
        {
          "sequence": 1,
          "map": { "slug": "mirage", "title": "Mirage" },
          "winner_rounds": 13,
          "loser_rounds": 9,
          "players": [
            {
              "display_name": "ZywOo",
              "kills": 22,
              "deaths": 14,
              "assists": 4,
              "adr": 86.2,
              "rating": 1.31
            }
          ]
        }
      ]
    }
  ]
}
GET/api/v2/matches/latest

Latest played matches

Convenience alias for GET /matches?page=1: newest finished CS2 matches first. Same MatchItem shape (games, clips when present) and the same optional filters (team_id, event_id, played_from, played_to) as GET /matches. Optional limit (default 10, max 100). page is ignored; this alias is always the first page.

Authorizations

X-API-Keyheader

Required. API key from the GGScore cabinet. Do not send this key as Authorization: Bearer. Bearer is a cabinet session token.

Parameters

limitoptionalquery

How many newest finished matches to return (hard cap 100).

team_idoptionalquery

Team UUID. A match is included when this team won or lost. The parameter name is team_id.

event_idoptionalquery

Event UUID. Only matches from this tournament.

played_fromoptionalquery

Inclusive UTC lower bound on played_at (upcoming: play_at). YYYY-MM-DD is midnight at the start of that UTC day. An offset is converted to UTC. A value with no timezone is UTC.

played_tooptionalquery

Exclusive UTC upper bound on played_at (upcoming: play_at). YYYY-MM-DD is midnight at the start of that UTC day and is not included. September 2026 is played_from=2026-09-01&played_to=2026-10-01. The calendar day 2026-09-15 is played_from=2026-09-15&played_to=2026-09-16.

Request

curl -sS 'https://ggscore.net/api/v2/matches/latest?limit=5' \
  -H "X-API-Key: YOUR_API_KEY"

Try it

GET https://ggscore.net/api/v2/matches/latest?limit=5

Get keys in the cabinet

GET/api/v2/match/{match_id}

Get one played match

Fetch a single finished match by UUID. Response matches MatchItem list entries, including games (per-map) and clips when stored. Use IDs returned from GET /matches.

Authorizations

X-API-Keyheader

Required. API key from the GGScore cabinet. Do not send this key as Authorization: Bearer. Bearer is a cabinet session token.

Parameters

match_idrequiredpath

UUID of a **finished** match (played_at + both scores present).

Request

curl -sS 'https://ggscore.net/api/v2/match/{match_id}' \
  -H "X-API-Key: YOUR_API_KEY"

Try it

GET https://ggscore.net/api/v2/match/{match_id}

Fill the path parameters to send this request.