Football API#
The football API is free — you only need a token (register here). It covers 30+ leagues with deep match data: live scores, statistics with xG and shotmaps, lineups, standings, head-to-heads, player stats, transfers, multi-bookmaker odds (pre-match) and model predictions.
Base URL: https://sports.bzzoiro.com/api/v2/
Auth: Authorization: Token YOUR_API_KEY
Two versions exist. Use v2 — it is the actively developed one. v1
(/api/) remains for existing integrations: v1 API (legacy).
Resources#
| Area | Endpoints | Reference |
|---|---|---|
| Events & live | /events/, /events/live/, /events/{id}/ + 12 sub-resources (stats, lineups, incidents, h2h, odds…) |
Events & live scores |
| Leagues & seasons | /leagues/, standings, seasons, leaderboards, best XI, venues |
Leagues, seasons & standings |
| Teams & players | /teams/, /players/, squads, fixtures, stats, transfers, World Cup squads |
Teams, players & transfers |
| People & places | /managers/, /referees/, /venues/ |
Managers, referees & venues |
| Odds & predictions | /odds/, /odds/best/, /bookmakers/, /predictions/ |
Odds & predictions |
| Media | /tv-channels/, /broadcasts/, /social/ |
TV, broadcasts & social |
| Coverage | /coverage/ — what every sport holds right now, in one call |
see below |
What is there to poll#
GET /api/v2/coverage/ answers, for every sport on the platform, whether it has
fixtures ahead, how many of them are priced, and when the next and last events
are. It needs no token. Worth one call before a polling loop decides what to ask
for: hockey and basketball are out of season for months at a time, and their
fixture endpoints can only answer that with an empty list.
curl "https://sports.bzzoiro.com/api/v2/coverage/"
{"generated_at": "2026-08-19T17:44:40+00:00", "sports": [
{"sport": "football", "status": "in_season", "events_next_7d": 527,
"events_next_30d": 1911, "priced_next_7d": 439, "live_now": 0,
"next_event_at": "2026-08-19T18:00:00+00:00",
"last_event_at": "2026-08-19T17:30:00+00:00", "docs_url": "/docs/football/"},
{"sport": "hockey", "status": "off_season", "events_next_7d": 0,
"events_next_30d": 0, "priced_next_7d": 0, "live_now": 0,
"next_event_at": null, "last_event_at": "2026-06-18T00:00:00+00:00",
"docs_url": "/docs/hockey/"}
]}
status is in_season, between_events, off_season or no_fixtures.
Add ?sport=hockey for one sport.
Quick example#
# Live matches right now
curl -H "Authorization: Token YOUR_API_KEY" \
"https://sports.bzzoiro.com/api/v2/events/live/"
Conventions#
Pagination (limit/offset, default 50, max 200), UTC ISO-8601 dates,
decimal odds and the uniform error shape are shared with every BSD API —
see Conventions & limits. Hot endpoints (events,
leagues, teams) are edge-cached ~5 s (X-Cache-Status header).
Interactive reference#
- OpenAPI explorer — browse every endpoint and schema
- Swagger UI · ReDoc · raw schema at /openapi.json
Typical workflows#
- Build a league page
- Get a player profile
- Live data via WebSocket (separate $3/mo addon)