← Developer blog

Tennis API: live scores, stats and data guide

A developer's guide to the Live Tennis API: live ATP/WTA/Challenger/ITF scores, player stats, point-by-point, tiers, and a curl/Python/JS quickstart.

· · By the Live Tennis API team

A tennis API is an HTTP service that returns tennis data as JSON your code can read. That means live scores, player and ranking data, fixtures, historical match tape and market prices. The Live Tennis API covers ATP, WTA, Challenger and ITF, with a free tier (no card) for live scores, players and fixtures.

This guide is the overview: what the API returns, how the tiers split, and a runnable quickstart in curl, Python and JavaScript. It ends with links to five deep-dives for the surfaces you're most likely to build on.

What the Live Tennis API returns

Every request goes to the base URL https://api.livetennisapi.com/api/public/v1 and authenticates with an X-API-Key header. Responses are JSON. The core surfaces:

There is no draws/bracket endpoint. We cover professional tennis tours only (not table tennis).

Tiers and what each includes

Entitlements are cumulative. Each tier includes everything below it.

Tier Price Rate limits Adds
Free $0 (no card) 30/min, 100/day Live matches & scores, players (ranking + Elo), fixtures, usage
Basic $9.99/mo 60/min, 1k/day Completed-match history + point-by-point tape
Pro $29.99/mo 300/min, 10k/day Market prices/events, rank-ordered rankings listing
Ultra $99.99/mo 600/min, 500k/day Win-probability/analysis, live per-point events, WebSocket stream

The Free tier gives you the current state of play: live scores, any player's own current ranking and Elo, and upcoming fixtures. Grab a key at livetennisapi.com/subscribe/free.

Quickstart

Set your API key once and pull the current live matches.

curl

export TENNIS_API_KEY="your_key_here"

# Live matches right now
curl -s https://api.livetennisapi.com/api/public/v1/matches?status=live \
  -H "X-API-Key: $TENNIS_API_KEY"

# The current score for one match
curl -s https://api.livetennisapi.com/api/public/v1/matches/12345/score \
  -H "X-API-Key: $TENNIS_API_KEY"

Python

Authenticate with the X-API-Key header and call the endpoints directly with requests:

import os, requests

BASE = "https://api.livetennisapi.com/api/public/v1"
headers = {"X-API-Key": os.environ["TENNIS_API_KEY"]}

# Every live match across ATP, WTA, Challenger, ITF
r = requests.get(f"{BASE}/matches", params={"status": "live"}, headers=headers)
r.raise_for_status()
for match in r.json().get("matches", []):
    print(match["id"], match["status"])

# A player's current ranking and Elo (free tier)
p = requests.get(f"{BASE}/players/4321", headers=headers)
p.raise_for_status()
print(p.json())

An official Python SDK is available too (pip install livetennisapi) and wraps these same endpoints.

JavaScript

Use fetch with the same base URL and header:

const BASE = "https://api.livetennisapi.com/api/public/v1";
const headers = { "X-API-Key": process.env.TENNIS_API_KEY };

const res = await fetch(`${BASE}/matches?status=live`, { headers });
const { matches } = await res.json();
for (const m of matches) {
  console.log(m.id, m.status);
}

An official JavaScript SDK (npm i livetennisapi) wrapping the same endpoints is available for Node and modern runtimes.

The full reference lives at docs.livetennisapi.com, with an OpenAPI spec at github.com/livetennisapi/openapi.

There's also an MCP server at mcp.livetennisapi.com if you're wiring the data into an AI agent.

Deep-dives

Each surface has its own guide with worked examples:

Frequently asked questions

What is a tennis API?

A tennis API is an HTTP endpoint that returns tennis data as JSON: live scores, player rankings, fixtures, historical results, point-by-point tape and market prices. The Live Tennis API serves this from https://api.livetennisapi.com/api/public/v1, authenticated with the header X-API-Key.

Is there a free tennis API?

Yes. The Live Tennis API has a free tier with no card required at livetennisapi.com/subscribe/free. It covers live matches and scores, player data with current ranking and Elo, and fixtures, at 30 requests/minute and 100/day.

Which tennis tours are covered?

ATP, WTA, Challenger and ITF, the main professional circuits. The API does not cover table tennis.

How do I authenticate with the Live Tennis API?

Send your API key on every request in the HTTP header X-API-Key, for example 'X-API-Key: your_key_here'. Official Python (pip install livetennisapi) and JavaScript (npm i livetennisapi) SDKs set the header for you.

How do I get live tennis scores from the API?

Call GET /matches?status=live for the current live matches, then GET /matches/{id}/score for one match's score. Both are on the free tier.

What do the paid tiers add?

Basic ($9.99/mo) adds completed-match history and point-by-point tape. Pro ($29.99/mo) adds market prices and the ranking listing. Ultra ($99.99/mo) adds win-probability analysis, live per-point events and a WebSocket stream.

Built with the Live Tennis API, which serves real-time scores, players, odds and model win-probability for ATP, WTA, Challenger and ITF.

API reference SDKs on GitHub Plans from $9.99/mo