Growing Discord community — direct access to the developer, live coverage & picks. Join the Discord Join now →
Leagues Matches Predictions Stats Coverage
BSD · API Documentation

API Documentation.

Pick a sport to get started. All sports share the same authentication and pagination conventions — learn once, use everywhere.

Authentication — same for every sport

Every request needs your API key in the Authorization header. Get a key by registering at sports.bzzoiro.com/register/ → go to your account → copy API key.

# Add this header to every request Authorization: Token YOUR_API_KEY # Example with curl curl -H "Authorization: Token YOUR_API_KEY" \ "https://sports.bzzoiro.com/tennis/api/v2/matches/live/" # Example with Python import requests headers = {"Authorization": "Token YOUR_API_KEY"} r = requests.get("https://sports.bzzoiro.com/tennis/api/v2/matches/live/", headers=headers) print(r.json())

Choose a sport

Football
Match data, live scores, standings, ML predictions, xG shotmaps and odds for 30+ leagues.
Free View Docs →
🎾
Tennis
ATP/WTA matches, tournaments, players, rankings, set-by-set scores and ML predictions.
Pro $5/mo View Docs →
🎮
CS2 / Esports
CS2 matches with map-by-map scores, team stats, player KD ratios and ML predictions.
Pro $5/mo View Docs →
🎯
Darts
PDC matches, player rankings, tournament results and ELO-based ML win predictions.
Pro $5/mo View Docs →
🏒
Hockey
NHL and international hockey — period scores, overtime/shootout flags and predictions.
Pro $5/mo View Docs →
🏀
Basketball
Games with box scores, team stats, standings, pregame briefs and predictions.
Pro $5/mo View Docs →
🐎
Horse Racing
UK + Ireland meetings, races, runners, multi-bookmaker odds, horses, jockeys and trainers.
Pro $5/mo View Docs →
Live WebSocket
Real-time ball positions, live scores, momentum counters and odds via WebSocket stream.
Addon $3/mo /docs/websocket/
📈
Odds API
Multi-sport, multi-bookmaker odds with observation timestamps and pre-match closing prices.
$5/mo · free until Aug 17 View Docs →
💰
Weight of Money
How much money is matched on each selection, and its share of the book. In-play refreshed every 15s.
$20/mo · founder $10 View Docs →
🤖
MCP — AI Agents
Use sports data inside Claude, ChatGPT or any MCP-compatible AI agent.
Football free /docs/mcp/
🖼️
Image API
Badges, logos and player photos by id — cached, no auth, with background removal.
Free View Docs →

Guides

Task-oriented walkthroughs — each one builds something real, request by request.

Quickstart — your first requestFrom zero to live data in five minutes
Build a league pageLeague id → current season → standings, fixtures, top scorers, best XI
Football player profileSearch, bio, stats, transfers, career, photos
Tennis player profileRankings, matches, head-to-heads
Connect to live WebSocketsAuth, subscribe, frames, reconnects — with working clients
Working with imagesLogos and photos straight from ids
Odds & best pricesConsensus, per-bookmaker grids, line movement, value screens
Use BSD from AI agentsMCP connectors, llms.txt, markdown docs

Common conventions

These rules apply to every sport API — you only need to learn them once.

Pagination

All list endpoints return paginated results. Use limit (page size, default 50, max 200) and offset (how many items to skip, default 0) to page through results.

# First page: items 1–50 GET /tennis/api/v2/matches/?limit=50&offset=0 # Second page: items 51–100 GET /tennis/api/v2/matches/?limit=50&offset=50 # Response shape { "count": 408, // total number of items "next": "https://...", // URL to next page (null if last page) "previous": null, // URL to previous page "results": [...] // items for this page }

Dates and times

All dates and times are in ISO 8601 format, UTC timezone. For example: 2026-06-06T14:00:00+00:00. When filtering by date, pass dates as YYYY-MM-DD.

Match status values

Every sport uses the same three primary status values:

StatusMeaning
upcomingMatch hasn't started yet
liveMatch is currently in progress
finishedMatch has ended and results are final
cancelledMatch was called off before it started
postponedMatch rescheduled to a future date

Odds

All odds are decimal format (e.g. 1.85). A value of null means no odds are available for that market yet.

HTTP status codes

CodeMeaning
200Success
401Missing or invalid API token
402Valid token, but this API needs a paid add-on (Sports Addon / Odds API)
404The requested item doesn't exist
429Rate limit exceeded — slow down