Documentation โ€” Tennis API
Login Get API Key

Tennis API Documentation

Simple REST API. Pass your API key as a query parameter โ€” no headers required.

Base URL: https://live-tennis-api.com/api/v2

Authentication

Add api_key to every request URL. You can get a key by creating a free account.

https://live-tennis-api.com/api/v2/<endpoint>?api_key=YOUR_KEY
Do not expose your API key in public client-side code or public repos.

Credits

Each API call consumes credits from your balance. Credits never expire. New accounts get 100 free credits.

Remaining balance is returned in every response under credits_remaining and the X-Credits-Remaining header.

Errors

All errors return JSON with a code and message:

{ "error": "Invalid API key.", "code": 401 }
CodeMeaning
401Missing or invalid api_key
402Insufficient credits
400Invalid parameter (e.g. bad date format)
503Upstream data source unavailable

GET /matches

Returns tennis matches for a given date. Optionally translate player and tournament names.

GET /api/v2/matches 1 credit

Parameters

ParameterRequiredDefaultDescription
api_keyYesYour API key
dateNoTodayMatch date in YYYY-MM-DD format
langNoenResponse language: en tr de ru (en, tr, de, ru)

Example requests

# Today's matches (English) https://live-tennis-api.com/api/v2/matches?api_key=YOUR_KEY
curl "https://live-tennis-api.com/api/v2/matches?api_key=YOUR_KEY"
const data = await (await fetch('https://live-tennis-api.com/api/v2/matches?api_key=YOUR_KEY')).json();
<?php $data = json_decode(file_get_contents('https://live-tennis-api.com/api/v2/matches?api_key=YOUR_KEY'), true);
import requests data = requests.get('https://live-tennis-api.com/api/v2/matches', params={'api_key': 'YOUR_KEY'}).json()

Response

{
  "status": "ok",
  "date": "2026-09-13",
  "count": 23,
  "matches": [
    {
      "id": "2e2f3c81-eef9-63ec-5373-b9751f43d68e",
      "start_time": "2026-09-12 21:15:00",
      "status": "Played",
      "player1": {
        "players": [
          {
            "id": "1cb0df81-3d4f-60e1-2cd4-d9d6f869fa2e",
            "name": "A. Candiotto",
            "country_id": "1bf74acb-d76d-f7e7-cb1d-d9409981d57b",
            "photo": "https://live-tennis-api.com/image/v2/players/1cb0df81-3d4f-60e1-2cd4-d9d6f869fa2e.png",
            "flag": "https://live-tennis-api.com/image/v2/flags/1bf74acb-d76d-f7e7-cb1d-d9409981d57b.png"
          }
        ],
        "position": 1,
        "seed": null
      },
      "player2": {
        "players": [
          {
            "id": "9fbc11c4-b65f-3df7-8632-6fbc7da4c756",
            "name": "C. Brace",
            "country_id": "c7a13592-8281-736f-2dba-f6fa53248df1",
            "photo": "https://live-tennis-api.com/image/v2/players/9fbc11c4-b65f-3df7-8632-6fbc7da4c756.png",
            "flag": "https://live-tennis-api.com/image/v2/flags/c7a13592-8281-736f-2dba-f6fa53248df1.png"
          }
        ],
        "position": 2,
        "seed": 6
      },
      "tournament": {
        "id": "cf9ef0d6-70c6-780e-d77b-376ad2a98812",
        "name": "Sao Paulo wta",
        "country": "Brazil",
        "category": "Womens Singles"
      },
      "round": "Qualifying 1st Round",
      "sets": [
        { "set": 1, "games": [3, 6] },
        { "set": 2, "games": [4, 6] }
      ],
      "score": { "sets_won": [0, 2] },
      "winner": "player2",
      "result_type": "Win",
      "has_broadcast": false,
      "has_broadcast": false
    }
  ],
  "credits_remaining": 97
}

GET /match/details

Returns full details for a single match: court, start time, tournament, players and current set score.

GET /api/v2/match/details 1 credit

Parameters

ParameterRequiredDefaultDescription
api_keyYesYour API key
match_idYesMatch ID from /matches
langNoenResponse language: en tr de ru (en, tr, de, ru)

Example requests

https://live-tennis-api.com/api/v2/match/details?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf
curl "https://live-tennis-api.com/api/v2/match/details?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf"
const data = await (await fetch('https://live-tennis-api.com/api/v2/match/details?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf')).json();
<?php $data = json_decode(file_get_contents('https://live-tennis-api.com/api/v2/match/details?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf'), true);
import requests data = requests.get('https://live-tennis-api.com/api/v2/match/details', params={'api_key': 'YOUR_KEY', 'match_id': 'b6d1d33d-925d-f37d-13a1-58cda25553cf'}).json()

Response

{
  "status": "ok",
  "id": "b6d1d33d-925d-f37d-13a1-58cda25553cf",
  "match_status": "Fixture",
  "court": "Arthur Ashe Stadium",
  "start_time": "2026-09-13 18:00:00",
  "number_of_sets": 5,
  "player1": {
    "players": [{ "id": "d9c7059a-...", "name": "A. Zverev", "country_id": "a8298c84-...", "photo": "https://live-tennis-api.com/image/v2/players/d9c7059a-....png", "flag": "https://live-tennis-api.com/image/v2/flags/a8298c84-....png" }],
    "position": 1, "seed": 1
  },
  "player2": { // same shape },
  "tournament": {
    "id": "34740885-...", "name": "US Open", "surface": "Hard",
    "category": "Mens Singles", "round": "Final"
  },
  "tv_channels": { "tr": [{ "name": "Eurosport 1" }] },
  "sets": [],
  "score": { "sets_won": [0, 0] },
  "winner": null,
  "result_type": null,
  "credits_remaining": 98
}

GET /match/form

Returns each player's last 5 results (recent form) leading into this match, with opponent, round and score for each.

GET /api/v2/match/form 1 credit

Parameters

ParameterRequiredDefaultDescription
api_keyYesYour API key
match_idYesMatch ID from /matches
langNoenResponse language: en tr de ru (en, tr, de, ru)

Example requests

https://live-tennis-api.com/api/v2/match/form?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf
curl "https://live-tennis-api.com/api/v2/match/form?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf"
const data = await (await fetch('https://live-tennis-api.com/api/v2/match/form?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf')).json();
<?php $data = json_decode(file_get_contents('https://live-tennis-api.com/api/v2/match/form?api_key=YOUR_KEY&match_id=b6d1d33d-925d-f37d-13a1-58cda25553cf'), true);
import requests data = requests.get('https://live-tennis-api.com/api/v2/match/form', params={'api_key': 'YOUR_KEY', 'match_id': 'b6d1d33d-925d-f37d-13a1-58cda25553cf'}).json()

Response

{
  "status": "ok",
  "match_id": "b6d1d33d-925d-f37d-13a1-58cda25553cf",
  "player1": {
    "series": "WWWWW",
    "recent_matches": [
      {
        "id": "2bc1008b-...",
        "start_time": "2026-09-11 19:20:00",
        "tournament": { "id": "34740885-...", "name": "US Open" },
        "round": "Semifinal",
        "opponent": { "id": "b03e422b-...", "name": "K. Khachanov", "country_id": "8956c473-...", "photo": "https://live-tennis-api.com/image/v2/players/b03e422b-....png", "flag": "https://live-tennis-api.com/image/v2/flags/8956c473-....png" },
        "result": "win",
        "score": { "sets_won": [3, 0] }
      }
      // ...up to 5 recent matches
    ]
  },
  "player2": { // same shape },
  "credits_remaining": 97
}