FIFA WORLD CUP 2026
Group AMexico·Czechia·South Africa·South KoreaGroup BBosnia & Herzegovina·Canada·Qatar·SwitzerlandGroup CBrazil·Haiti·Morocco·ScotlandGroup DAustralia·Paraguay·Türkiye·USAGroup ECuraçao·Ecuador·Germany·Côte d'IvoireGroup FJapan·Netherlands·Sweden·TunisiaGroup GBelgium·Egypt·Iran·New ZealandGroup HCabo Verde·Saudi Arabia·Spain·UruguayGroup IFrance·Iraq·Norway·SenegalGroup JAlgeria·Argentina·Austria·JordanGroup KColombia·DR Congo·Portugal·UzbekistanGroup LCroatia·England·Ghana·Panama Group AMexico·Czechia·South Africa·South KoreaGroup BBosnia & Herzegovina·Canada·Qatar·SwitzerlandGroup CBrazil·Haiti·Morocco·ScotlandGroup DAustralia·Paraguay·Türkiye·USAGroup ECuraçao·Ecuador·Germany·Côte d'IvoireGroup FJapan·Netherlands·Sweden·TunisiaGroup GBelgium·Egypt·Iran·New ZealandGroup HCabo Verde·Saudi Arabia·Spain·UruguayGroup IFrance·Iraq·Norway·SenegalGroup JAlgeria·Argentina·Austria·JordanGroup KColombia·DR Congo·Portugal·UzbekistanGroup LCroatia·England·Ghana·Panama
Open full hub →
Growing Discord community — direct access to the developer, live coverage & picks. Join the Discord Join now →
Tournaments Teams Matches Predictions ⚡ Get the Sports Addon
CS2 API · v2

CS2 data API.

REST endpoints for CS2 matches, tournaments, teams, players, and ML predictions, plus an MCP server for Claude/ChatGPT/Gemini. Sports Addon · $5/mo

Quickstart

  1. Register at sports.bzzoiro.com/register/ — free account.
  2. Subscribe to the Sports Addon ($5/mo) to unlock the CS2 API.
  3. Copy your token from the dashboard and send Authorization: Token YOUR_TOKEN on every request.
# Live CS2 matches curl -H "Authorization: Token YOUR_TOKEN" \ "https://sports.bzzoiro.com/csgo/api/v2/matches/live/"

Authentication

Pass your token via the Authorization header:

Authorization: Token YOUR_TOKEN

Base URL

Base URL
https://sports.bzzoiro.com/csgo
Alias (301)
https://csgo.bzzoiro.com → /csgo
API prefix
/csgo/api/v2/

Pagination

List endpoints use limit + offset and return:

{ "count": 200, "next": "https://sports.bzzoiro.com/csgo/api/v2/teams/?limit=50&offset=50", "previous": null, "results": [/* … */] }
  • limit — page size. Default 50, max 200.
  • offset — items to skip. Default 0.

Tournaments

GET/csgo/api/v2/tournaments/List

List CS2 tournaments. Active-only by default.

ParameterTypeDescription
include_inactivebooleanInclude inactive. Default false.
limit / offsetintPagination
GET/csgo/api/v2/tournaments/{id}/Detail

Tournament detail. Cached 5 min.

Teams

GET/csgo/api/v2/teams/List

CS2 teams (Natus Vincere, FaZe, G2, etc.).

ParameterTypeDescription
searchstringName fragment
countrystringISO 3166-1 alpha-2
limit / offsetintPagination
GET/csgo/api/v2/teams/{id}/Detail

Team detail. Cached 5 min.

Players

GET/csgo/api/v2/players/List

Players with their current team.

ParameterTypeDescription
teamintFilter by team ID
searchstringSearch by nickname
limit / offsetintPagination
GET/csgo/api/v2/players/{id}/Detail

Full profile. Cached 5 min.

Matches

GET/csgo/api/v2/matches/List

CS2 matches with map results. Defaults to next 7 days.

ParameterTypeDescription
date_from / date_todateYYYY-MM-DD bounds
tournamentint / strTournament ID or name fragment
teamint / strTeam ID or name fragment
statusstringnotstarted, inprogress, finished
limit / offsetintPagination
GET/csgo/api/v2/matches/live/Live

Currently in-progress matches with map-by-map round scores. Cached 30s.

GET/csgo/api/v2/matches/{id}/Detail

Full match details with maps array (per-map round scores including first half / second half / overtime).

{ "id": 1234, "tournament": { "name": "ESL Pro League S20" }, "home_team": { "name": "Natus Vincere", "short_name": "NaVi" }, "away_team": { "name": "FaZe Clan", "short_name": "FaZe" }, "status": "finished", "home_score": 2, "away_score": 1, "best_of": 3, "stage": "Group Stage", "maps": [ { "map_name": "Mirage", "home_score": 16, "away_score": 12 }, { "map_name": "Inferno", "home_score": 11, "away_score": 16 }, { "map_name": "Nuke", "home_score": 16, "away_score": 14 } ] }

Predictions

GET/csgo/api/v2/predictions/List

ML predictions for upcoming CS2 matches.

Each prediction returns:

  • home_win_prob, away_win_prob (0–1)
  • predicted_winner, confidence
  • home_form_score, away_form_score
  • h2h_advantage — positive favours home, negative favours away
  • is_correct — populated after match completes

MCP server

The CS2 MCP exposes 7 typed tools to LLM clients. Mounted at /csgo/mcp/ with token auth.

📘 Full setup guide: step-by-step instructions for Claude Desktop, Cursor, Gemini CLI, VS Code, and a tools reference at /mcp-info/

POST/csgo/mcp/JSON-RPC 2.0

Available tools:

  • list_tournaments
  • list_teams — by country
  • search_teams
  • search_players
  • list_matches — by status, date
  • get_match
  • get_predictions

Claude Desktop config

// claude_desktop_config.json { "mcpServers": { "bzzoiro-csgo": { "url": "https://sports.bzzoiro.com/csgo/mcp/", "transport": "http", "headers": { "Authorization": "Token YOUR_TOKEN" } } } }

Static images

Team logos, player headshots and tournament logos as PNG via the BSD image proxy. Public endpoint, no auth required, drop into <img src=> tags. Cached up to 1 year.

GET/img/csgo-team/{team_id}/PNG

Team logo. team_id is the id from any CS2 API response.

<img src="https://sports.bzzoiro.com/img/csgo-team/3537/" alt="NAVI" />
GET/img/csgo-player/{player_id}/PNG

Player headshot.

GET/img/csgo-tournament/{tournament_id}/PNG

Tournament logo (Major, BLAST, ESL, etc.).

Returns 404 when upstream has no image. Sister endpoints across sports: /img/tennis-player/, /img/darts-player/, /img/hockey-team/, /img/hockey-league/.

Need help? Email bzzoiro@proton.me.