Geben Sie Ihren API-Schlüssel nicht in öffentlichem Client-Code oder öffentlichen Repos preis.
Guthaben
Jeder API-Aufruf verbraucht Guthaben. Guthaben verfällt nie. Neue Konten erhalten 100 kostenlose Credits.
Endpunkt
Kosten
GET /matches
1 Credit pro Aufruf
GET /match/scores
1 Credit pro Aufruf
GET /match/statistics
1 Credit pro Aufruf
GET /match/h2h
1 Credit pro Aufruf
GET /match/tracker
Kostenlos — kein API-Key erforderlich
GET /rankings
1 Credit pro Aufruf
GET /tournament/details
1 Credit pro Aufruf
GET /tournament/bracket
1 Credit pro Aufruf
GET /tournament/results
1 Credit pro Aufruf
GET /player/profile
1 Credit pro Aufruf
GET /player/matches
1 Credit pro Aufruf
GET /player/statistics
1 Credit pro Aufruf
GET /webhook/register
Kostenlos — kein API-Key erforderlich
GET /webhook/list
Kostenlos — kein API-Key erforderlich
GET /webhook/delete
Kostenlos — kein API-Key erforderlich
Das verbleibende Guthaben wird in jeder Antwort unter credits_remaining und im X-Credits-Remaining-Header zurückgegeben.
Fehler
Alle Fehler geben JSON mit code und message zurück:
{ "error": "Invalid API key.", "code": 401 }
Code
Bedeutung
401
Fehlender oder ungültiger api_key
402
Unzureichendes Guthaben
400
Ungültiger Parameter (z.B. falsches Datumsformat)
503
Upstream-Datenquelle nicht verfügbar
GET /matches
Gibt Tennisspiele für ein bestimmtes Datum zurück. Team- und Liganamen können optional übersetzt werden.
GET/api/v1/matches1 credit
Parameter
Parameter
Erforderlich
Standard
Beschreibung
api_key
Ja
—
Ihr API-Schlüssel
date
Nein
Heute
Spieldatum im Format YYYY-MM-DD
lang
Nein
en
Antwortsprache: entrderu
Beispielanfragen
# Today's matches (English)
https://live-tennis-api.com/api/v1/matches?api_key=YOUR_KEY# Specific date
https://live-tennis-api.com/api/v1/matches?api_key=YOUR_KEY&date=2026-07-13
# Turkish translation
https://live-tennis-api.com/api/v1/matches?api_key=YOUR_KEY&lang=tr
# Russian + specific date
https://live-tennis-api.com/api/v1/matches?api_key=YOUR_KEY&date=2026-07-13&lang=ru
id, name, country (ISO-2), ranking (integer|null), photo (proxied image URL)
match.tournament
object
id, name, tour, surface
match.round
string|null
Round label — e.g. "Final", "Round of 32"
score.sets_won
array
[player1_sets, player2_sets]
score.s1–s5
array
[player1_games, player2_games] per set; only present if the set was played
score.s1_tb–s5_tb
array
Tiebreak score for that set; only present if a tiebreak was played
score.current_game
object|—
Live game score {player1, player2} — values: "0""15""30""40""A". Only present when status is inprogress
score.serving
string|—
"player1" or "player2" — who is currently serving. Only present when status is inprogress
winner
string|null
"player1", "player2", or null
credits_remaining
integer|string
Credits left after this call. "unlimited" for subscription users
GET /match/statistics
Gibt vollständige Matchstatistiken nach Periode (GESAMT + je Satz) zurück. Enthält Aufschlag-, Return-, Punkt-, Spiel- und sonstige Statistiken für beide Spieler.
Players of the requested match — id, name, country, ranking, photo
summary.player1_wins
integer
Head-to-head wins for player1 in all-time meetings
summary.player2_wins
integer
Head-to-head wins for player2 in all-time meetings
summary.total
integer
Total number of H2H meetings ever played
meetings[]
array
Historical meetings between the two players, most recent first
meetings[].winner
string|null
"player1" or "player2" — refers to the home/away of that specific match
meetings[].result
string|null
"win" or "loss" — from player1's perspective (the home team of the current requested match)
recent_form.player1[]
array
Last 5 matches for player1, excluding the current match. Same object structure as meetings[]
recent_form.player2[]
array
Last 5 matches for player2, excluding the current match
score.sets_won
array
[player1_sets, player2_sets]
score.s1–s5
array
[player1_games, player2_games] per set
score.s1_tb–s5_tb
array
Tiebreak score; only present if a tiebreak was played
credits_remaining
integer|string
Credits left after this call. "unlimited" for subscription users
GET /match/tracker
Gibt den Live-Match-Tracker als vollständig gerenderte HTML-Seite zurück. Kein API-Key erforderlich — holen Sie die tracker_url aus GET /match/scores und betten Sie sie direkt in einen iframe ein. Ihr API-Key wird Endbenutzern nie angezeigt.
GET/api/v1/match/trackerKostenlos — kein API-Key erforderlich
Tipp: Rufen Sie GET /match/scores serverseitig auf, um die tracker_url zu erhalten, und setzen Sie sie als src eines iframes. So bleibt Ihr API-Key auf Ihrem Server und ist im Seitenquelltext nie sichtbar.
Parameter
Parameter
Erforderlich
Standard
Beschreibung
match_id
Ja
—
Spiel-ID aus der /matches-Antwort
lang
Nein
en
Antwortsprache: entrderu
Beispielanfragen
# Step 1: call match/scores with your API key to get tracker_url
https://live-tennis-api.com/api/v1/match/scores?api_key=YOUR_KEY&match_id=16498578
# Step 2: embed the tracker_url from the response — no API key exposed
<iframe src="https://live-tennis-api.com/api/v1/match/tracker?match_id=16498578" width="800" height="600"></iframe>
# Direct access also works
https://live-tennis-api.com/api/v1/match/tracker?match_id=16498578&lang=de
Dieser Endpunkt gibt text/html zurück — eine vollständige HTML-Seite, bereit zum Einbetten in einen iframe. Keine JSON-Antwort.
GET /rankings
Gibt ATP-, WTA-, ATP-Live- oder WTA-Live-Spielerranglisten zurück. Die vollständige Liste von bis zu 500 Spielern wird serverseitig zwischengespeichert — nutzen Sie from und limit zur Seitennavigation ohne zusätzliche API-Credits.
GET/api/v1/rankings1 credit
Parameter
Parameter
Erforderlich
Standard
Beschreibung
api_key
Ja
—
Ihr API-Schlüssel
type
Nein
atp
Rangliste: atp, wta, atp_live oder wta_live
from
Nein
1
Startposition (1-basiert). Z.B. 51 beginnt bei Rang 51.
limit
Nein
100
Anzahl der zurückgegebenen Spieler (Standard 100, max. 500).
Beispielanfragen
# ATP top 100
https://live-tennis-api.com/api/v1/rankings?api_key=YOUR_KEY&type=atp&limit=100
# WTA positions 51–100
https://live-tennis-api.com/api/v1/rankings?api_key=YOUR_KEY&type=wta&from=51&limit=50
true if more players exist beyond this slice — increment from by limit to paginate
position_change
integer
Positions gained (positive) or lost (negative) since the previous update
best_position
integer
Career best ranking position
previous_points
integer
Points from the previous ranking update
tournaments_played
integer
Tournaments counted toward the current ranking
credits_remaining
integer|string
docs_f_credits_remaining
GET /tournament/details
Gibt die Kernmetadaten eines Turniers für eine bestimmte Saison zurück — Name, Belag, Land, Stadt, Preisgeld, Feldgröße und Termine. Enthält außerdem ein seasons-Array für die Jahresnavigation und ein info_boxes-Array mit zusätzlichen Feldern von SofaScore.
GET/api/v1/tournament/details1 credit
Parameter
Parameter
Erforderlich
Standard
Beschreibung
api_key
Ja
—
Ihr API-Schlüssel
tournament_id
Ja
—
Turnier-ID aus der SofaScore-Turnier-URL (z.B. 23140 für ATP Challenger Lincoln)
season_id
Nein
neueste
Saison-ID — verwenden Sie seasons[].id aus GET /tournament/results für ein bestimmtes Jahr. Standard: neueste Saison.
Gibt den vollständigen Auslosungsbaum für eine Turniersaison zurück — Hauptfeld und Qualifikationsfeld. Jede Runde enthält alle Matches mit Spielern, Rankings und dem Gewinner-Flag. Verwenden Sie season_id aus GET /tournament/results für die Jahresauswahl.
GET/api/v1/tournament/bracket1 credit
Parameter
Parameter
Erforderlich
Standard
Beschreibung
api_key
Ja
—
Ihr API-Schlüssel
tournament_id
Ja
—
Turnier-ID aus der SofaScore-Turnier-URL (z.B. 23140 für ATP Challenger Lincoln)
season_id
Nein
neueste
Saison-ID — verwenden Sie seasons[].id aus GET /tournament/results für ein bestimmtes Jahr. Standard: neueste Saison.
Beispielanfragen
# Latest season (auto-detected)
https://live-tennis-api.com/api/v1/tournament/bracket?api_key=YOUR_KEY&tournament_id=23140
# Specific season
https://live-tennis-api.com/api/v1/tournament/bracket?api_key=YOUR_KEY&tournament_id=23140&season_id=89928
All available seasons — id, year, name. Use season_id param to switch year.
draws[].type
string
"main" or "qualifying"
draws[].rounds[].name
string
Round label — e.g. "Round of 32", "Quarterfinal", "Final"
draws[].rounds[].order
integer
Round order starting from 1 (1 = earliest round)
matches[].event_id
integer|null
Match ID — use with GET /match/scores; null if not yet scheduled
matches[].finished
boolean
Whether the match has been played
matches[].player1 / player2
object|null
id, name, ranking, photo, winner (boolean); null if slot is empty (BYE or not yet filled)
credits_remaining
integer|string
Credits left after this call
GET /tournament/results
Gibt abgeschlossene und bevorstehende Matches einer Turniersaison sowie eine Liste aller verfügbaren Saisons zurück. Enthält die Setzlisten-Nummer der Spieler, wenn verfügbar.
GET/api/v1/tournament/results1 credit
Parameter
Parameter
Erforderlich
Standard
Beschreibung
api_key
Ja
—
Ihr API-Schlüssel
tournament_id
Ja
—
Turnier-ID aus der SofaScore-Turnier-URL (z.B. 23140 für ATP Challenger Lincoln)
season_id
Nein
neueste
Saison-ID — verwenden Sie seasons[].id aus GET /tournament/results für ein bestimmtes Jahr. Standard: neueste Saison.
lang
Nein
en
Antwortsprache: entrderu
Beispielanfragen
# Current season results (auto-detected)
https://live-tennis-api.com/api/v1/tournament/results?api_key=YOUR_KEY&tournament_id=23140
# Specific season + language
https://live-tennis-api.com/api/v1/tournament/results?api_key=YOUR_KEY&tournament_id=23140&season_id=89928&lang=tr
true if a next page exists; false when you've reached the last page
next_page
integer|null
Page number to pass for the next request; null on the last page
type
string
all (default), singles, or doubles
result
string|null
"W" (win) or "L" (loss); null for upcoming matches
opponent.members
array|null
Doubles only — lists both players in the opponent pair
surface
string|null
Translated with lang param
round
string|null
Translated with lang param
upcoming_matches
array
Only populated on page 0
credits_remaining
integer|string
docs_f_credits_remaining
GET /player/statistics
Gibt Sieg/Niederlage-Statistiken eines Spielers für ein bestimmtes Saisonjahr zurück — gesamt und nach Untergrund aufgeschlüsselt. Deckt bis zu 60 aktuelle Matches ab.
GET/api/v1/player/statistics1 credit
Parameter
Parameter
Erforderlich
Standard
Beschreibung
api_key
Ja
—
Ihr API-Schlüssel
player_id
Ja
—
Spieler-ID aus der SofaScore-Spieler-URL (z.B. 457262 für Nicolas Arseneault)
season_year
Nein
aktuelles Jahr
Jahr, für das Statistiken berechnet werden sollen (z.B. 2026). Standard: aktuelles Jahr.
The year the statistics are filtered to (defaults to current year)
singles.by_surface
object
W/L breakdown per surface — keys: hardcourt, clay, grass, carpet
recent_form
string[]
Last 10 singles match results, newest first — "W" or "L"
credits_remaining
integer|string
docs_f_credits_remaining
GET /webhook/register
Registriert einen neuen Webhook-Endpunkt. Wenn ein abonniertes Ereignis eintritt, erhält Ihre URL eine POST-Anfrage mit JSON-Payload. Bis zu 10 aktive Webhooks pro Konto. Kostenlos — verbraucht keine Credits.
GET/api/v1/webhook/registerKostenlos — kein API-Key erforderlich
Parameter
Parameter
Erforderlich
Standard
Beschreibung
api_key
Ja
—
Ihr API-Schlüssel
url
Ja
—
Eine öffentlich erreichbare http- oder https-URL, die POST-Anfragen empfängt
events
Nein
all
Kommagetrennte Liste der Ereignistypen (z.B. match.start,score.update). Leer lassen, um alle Ereignisse zu abonnieren.
secret
Nein
—
Optionaler Secret-String — wenn gesetzt, enthält jede Anfrage einen X-Webhook-Signature: sha256=<hmac>-Header zur Verifizierung
Verfügbare Ereignisse
Ereignis
Beschreibung
match.start
Spiel hat begonnen (notstarted → inprogress)
match.finish
Spiel ist mit Endergebnis abgeschlossen
match.postponed
Spiel wurde verschoben
match.cancelled
Spiel wurde abgesagt
score.update
Set-Score geändert oder aktueller Spielstand aktualisiert (15 / 30 / 40 / A). Enthält current_game-Feld bei laufendem Spiel.
Ihr Endpunkt empfängt eine POST-Anfrage mit Content-Type: application/json und folgendem Body:
Every event follows the same envelope: event, timestamp, a match object (always present), and an event-specific data object.
Click an event below to see its example response.
⚠️ Wichtiger Sicherheitshinweis Webhook-Benachrichtigungen werden von unserem System über die IP-Adresse 45.94.4.69 gesendet. Für zusätzliche Sicherheit können Sie eingehende Anfragen an Ihren Webhook-Endpunkt auf Ihrem Server (auf Firewall-Ebene) so einschränken, dass nur diese IP-Adresse zugelassen wird.
GET /webhook/list
Gibt alle aktiven Webhooks zurück, die mit Ihrem API-Schlüssel registriert sind. Kostenlos — verbraucht keine Credits.
GET/api/v1/webhook/listKostenlos — kein API-Key erforderlich