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/matchesPaginated 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/latestNewest 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_matchesScheduled 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_matchesCS2 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/countriesCountry 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:
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
| Plan | Requests/day | API keys (max) |
|---|---|---|
| Free | 3 req/day | 5 |
| Premium | 100 req/day | 5 |
| Black | Unlimited | 5 |
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.








