Skip to content

Product

CS2 API endpoints

GGScore exposes REST JSON for played and upcoming matches, per-map scores and player box scores, teams, events, maps, players, and countries. Use your API key in the X-API-Key header. See the API documentation for schemas. Comparing scrapers or marketplace calendars? CS2 API vs scraping.

Played matches

GET /api/v2/matches

Paginated finished CS2 results: teams, scores, event, format (BO1/BO3/BO5), and played date. Each match may include per-map games (round totals) and games[].players (K/D/A, ADR, rating when ingested), plus highlight clips.

Latest matches

GET /api/v2/matches/latest

Newest finished matches first — same payload as the played list, for trackers and home widgets.

One match

GET /api/v2/match/{id}

Fetch a single finished match by UUID, including maps, box scores, and clips when stored.

Upcoming matches

GET /api/v2/upcoming_matches

Scheduled fixtures before they have a final score. Teams, event, and start time for calendars, bots, and countdowns.

Teams

GET /api/v2/teams · /team/{id}

Paginated team directory and compact team cards (id, title, logo when available).

Events

GET /api/v2/events · /event/{id}

Tournament / event directory and cards. IDs match the event object on match payloads.

Maps

GET /api/v2/maps · /maps/{slug}/recent_matches

CS2 maps used in finished matches, plus recent results for a map slug (dust2, mirage, …).

Players

GET /api/v2/player/{id}

Player identity, recent per-map box scores, and an optional career/profile snapshot when ingest has run. Player ids also appear on games[].players.

Countries

GET /api/v2/countries

Country rows used for filters and team geography (id, title, image).

Why developers choose our CS2 API

  • — Structured JSON: no HTML parsing, no regex. Clean data out of the box.
  • — Pagination: handle large datasets with offset and limit.
  • — RESTful: standard HTTP, works with any client library.
  • — Rate limits per plan: daily caps on Free and Premium; unlimited daily requests on Black. See the table below or Pricing.
  • — Swagger docs: try endpoints directly in the browser.

Authentication

All data endpoints require an API key. Get your key from the cabinet after signing in. Include it in the X-API-Key header with every request. Same examples as on /docs:

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

Response format

All endpoints return JSON. Finished matches include teams, scores, event, format, per-map games (round totals) and player box scores when ingested. Responses use standard HTTP status codes: 200 (success), 401 (invalid key), 429 (rate limit exceeded).

Rate limits & quotas

PlanRequests/dayAPI keys (max)
Free3 req/day5
Premium100 req/day5
BlackUnlimited5

Same numbers as on Pricing; admins can adjust tariffs over time.

Use cases by endpoint

Matches

  • • History, calendars, bots
  • • Per-map scores
  • • Highlight clips

Players

  • • Map box scores (K/D/A)
  • • Profile snapshot when ingested
  • • Fantasy scoring inputs

Catalog

  • • Teams and events
  • • Maps + recent on a map
  • • Country filters

Upcoming

  • • Match calendars
  • • Notifications and alerts
  • • Countdown widgets

Need more?

Check the API documentation for full schemas and examples. Have a custom use case? Contact us — we may be able to help.