Growing Discord community — direct access to the developer, live coverage & picks. Join now →
v2REST + MCP server

Every match. Every rank. Free.

ATP & WTA matches with set-by-set scores, serve stats, and ML predictions. Live polling, weekly rankings, and an MCP server that drops into Claude, ChatGPT, Gemini. No credit card. No daily quota.

Read the docs → Get a token 7 matches live now
408tournaments
26,747matches
4,974players
144,963rankings
13,671predictions
curl · sports.bzzoiro.com/tennis
$ curl "/tennis/api/v2/matches/live/"
// → 200 OK · 7 live
[{
  "player1": {"name": "Omar Rhazali"},
  "player2": {"name": "Alexander Baez"},
  "player1_sets": 0,
  "player2_sets": 1,
  "current_point": "30-40"
}]
What you get

Match data, rankings, and ML predictions on a single token.

Every ATP/WTA match with set-by-set scores, serve stats, point-by-point progress on live ones, weekly rankings for both tours, and calibrated ML predictions on every upcoming match.

Live · Match data
/api/v2/matches/live/

Live tennis, score and serve in real time.

Each live match returns the current_set, current_game_p1/p2, current_point (e.g. "40-30"), and is_serving_p1. Cached 30 seconds.

30s cache 5 sets free tier
E. Svitolina
6
6
N. Basiletti
1
3
/api/v2/matches/{id}/

Per-match serve stats.

Aces, double faults, first serve %, points won on first/second serve. Both players, on the same response.

sets_detail

Per-set game scores.

Full breakdown of every set as [{p1, p2}, …], plus the running score on a live match.

Tournaments
/api/v2/tournaments/

Grand Slams to Challengers — every tier covered.

Filter by circuit=ATP|WTA, category (grand_slam, masters_1000, atp_500, wta_1000, …), or surface (hard, clay, grass).

408 active tournaments
surface

Hard, clay, grass.

Surface stored on the tournament — useful for surface-conditioned models or filters.

winner_points

ATP/WTA points awarded.

Ranking points up for grabs at each event, so you can model "must-win" weeks vs. low-stakes ones.

Rankings
/api/v2/rankings/?type=ATP

ATP & WTA, weekly snapshots.

Position, points, week-over-week delta, career best — both tours.

#1
Jannik Sinner
14,350 pts
#2
Carlos Alcaraz
12,960 pts
#3
Alexander Zverev
5,805 pts
#4
Novak Djokovic
4,700 pts
#5
Felix Auger-Aliassime
4,050 pts
previous_position

Movement, on every row.

Each ranking entry carries last week's position and points — see who's climbing and who's sliding.

best_position

Career bests on file.

Each player's all-time best ranking, persisted on the ranking row.

ML & AI
/api/v2/predictions/

Calibrated XGBoost predictions on every upcoming match.

Match winner probability, expected total sets, expected total games, P(over 20.5/21.5/22.5 games), P(player 1 wins first set). Probabilities calibrated against historical accuracy.

13,671 predictions and counting
confidence

Self-rated confidence.

Each prediction reports its confidence on a 0–100 scale, so you can filter for the model's strongest signals.

over_22_5_games

Totals, not just 1×2.

Markets beyond match winner: P(over 20.5 / 21.5 / 22.5 games), P(over 2.5 sets), P(player 1 wins first set).

Integration
MCP server · /tennis/mcp/

Plug it into Claude, ChatGPT, or Gemini.

One config block, an /tennis/mcp/ endpoint and a free token. The LLM gets typed tools (list tournaments, search players, get rankings, predictions, …) and can answer in plain English.

Claude ChatGPT Gemini Cursor
free tier

$0. Forever.

No daily quota. No credit card. The whole API is on the same token as the rankings.

$0
Integration

Five lines. Real data.

Pick your stack. Each snippet hits a live tennis endpoint with a real token — copy, paste, $ python, done.

# Live tennis matches with set-by-set scores
curl -H "Authorization: Token YOUR_TOKEN" \
     "https://sports.bzzoiro.com/tennis/api/v2/matches/live/"
Today's spotlight

Player profile, rotating daily

Carlos Alcaraz
#2 ATP Spain W-L 2025