🎾 Tennis API Documentation

Complete reference for the Tennis API at tennis.bzzoiro.com. Free, no rate limits, no credit card.

Overview

The Tennis API provides read-only access to tennis data including tournaments, players, matches, live scores, ML predictions, and ATP/WTA rankings. All responses are JSON.

Base URLhttps://tennis.bzzoiro.com/api/
FormatJSON
AuthToken-based (see below)
MethodsGET only (read-only API)
PriceFree
Authentication

Every API request requires a token. Get yours by registering a free account on sports.bzzoiro.com.

Note: Your API key from sports.bzzoiro.com works here too. One account, all platforms.

Include the token in the Authorization header:

Authorization: Token YOUR_API_KEY

Example:

curl -H "Authorization: Token abc123def456" https://tennis.bzzoiro.com/api/tournaments/
Unauthenticated requests return 401 Unauthorized.
Error Responses
CodeMeaningExample
401UnauthorizedMissing or invalid token
404Not FoundInvalid endpoint or object ID
500Server ErrorUnexpected server issue

Endpoints

GET/api/tournaments/

Returns tennis tournaments. Cached 5 min.

Query parameters
ParamTypeRequiredDescription
circuitstringNoATP or WTA
categorystringNogrand_slam, masters_1000, atp_500, atp_250, wta_1000, etc.
Response fields
FieldTypeDescription
idintegerTournament ID
namestringTournament name
categorystringgrand_slam, masters_1000, atp_500, etc.
surfacestringhard, clay, grass, carpet
circuitstringATP or WTA
countrystringHost country
citystringHost city
GET/api/players/

Returns tennis player profiles. 4,700+ players. Cached 5 min.

Query parameters
ParamTypeRequiredDescription
genderstringNoM or F
countrystringNoCountry code (e.g. ES, US)
searchstringNoSearch by name
GET/api/matches/

Returns tennis matches with scores and stats. Defaults to next 7 days. Cached 2 min.

Query parameters
ParamTypeRequiredDescription
date_fromdateNoStart date (YYYY-MM-DD)
date_todateNoEnd date (YYYY-MM-DD)
tournamentintegerNoFilter by tournament id
playerintegerNoFilter by player id
statusstringNoscheduled, live, finished
Key response fields
FieldTypeDescription
player1_obj / player2_objobjectNested player with ranking
tournamentobjectTournament info
player1_sets / player2_setsintegerSets won
sets_detailarrayPer-set scores [{p1, p2, tiebreak}]
odds_player1 / odds_player2floatMatch odds
p1_aces, p1_double_faults, ...integer/floatServe/return stats per player
GET/api/live/

Returns only live tennis matches with real-time scores, current set/game/point, and serving player. Cached 30 sec.

Query parameters

None. Returns all currently live matches.

Key response fields
FieldTypeDescription
player1_obj / player2_objobjectNested player with ranking
player1_sets / player2_setsintegerSets won
current_setintegerCurrent set number
current_game_scorestringCurrent game score (e.g. "40-30")
serving_playerinteger1 or 2 (who is serving)
sets_detailarrayPer-set scores
GET/api/predictions/

Returns ML predictions for tennis matches. Defaults to upcoming. Cached 2 min.

Query parameters
ParamTypeRequiredDescription
upcomingbooleanNoDefault true. Set false for past.
date_fromdateNoStart date (YYYY-MM-DD)
date_todateNoEnd date (YYYY-MM-DD)
Key response fields
FieldTypeDescription
prob_player1_wins / prob_player2_winsfloatWin probability (0-100)
predicted_winnerinteger1 or 2
confidencefloatModel confidence
expected_total_setsfloatExpected number of sets
expected_total_gamesfloatExpected total games
prob_over_22_5_gamesfloatP(total games > 22.5)
GET/api/rankings/

Returns ATP/WTA rankings. Latest snapshot by default. Cached 5 min.

Query parameters
ParamTypeRequiredDescription
typestringNoATP (default) or WTA
datedateNoRanking date. Default: latest.
topintegerNoLimit to top N (e.g. ?top=100)
Example
curl -H "Authorization: Token YOUR_API_KEY" \
     "https://tennis.bzzoiro.com/api/rankings/?type=ATP&top=10"

Guides

Quick Start
  1. Register: Create a free account at sports.bzzoiro.com/register/
  2. Get your token: After registering you'll find your API token on your dashboard. The same token works across all platforms.
  3. Make a request:
    curl -H "Authorization: Token YOUR_API_KEY" https://tennis.bzzoiro.com/api/tournaments/
  4. Explore: Use the endpoints above to fetch players, matches, live scores, predictions, and rankings.
Python Example
import requests

API_TOKEN = "YOUR_API_KEY"
BASE_URL = "https://tennis.bzzoiro.com/api"
headers = {"Authorization": f"Token {API_TOKEN}"}

# Get upcoming predictions
resp = requests.get(f"{BASE_URL}/predictions/", headers=headers)
data = resp.json()

for pred in data["results"]:
    match = pred["match"]
    print(f"{match['player1']} vs {match['player2']}")
    print(f"  Winner: Player {pred['predicted_winner']} "
          f"(P1: {pred['prob_player1_wins']:.1f}% "
          f"P2: {pred['prob_player2_wins']:.1f}%)")
    print(f"  Confidence: {pred['confidence']:.1f}%")
    print(f"  Expected sets: {pred['expected_total_sets']:.1f}")
    print()

# Get live scores
live = requests.get(f"{BASE_URL}/live/", headers=headers).json()
for match in live["results"]:
    print(f"LIVE Set {match['current_set']} "
          f"{match['player1']} {match['player1_sets']}-"
          f"{match['player2_sets']} {match['player2']}")

# Get ATP top 10
rankings = requests.get(
    f"{BASE_URL}/rankings/?type=ATP&top=10",
    headers=headers
).json()
for r in rankings["results"]:
    print(f"#{r['ranking']} {r['player']['name']} - {r['points']} pts")

100% free · Unlimited requests · No credit card required

Get Your Free API Key