API anahtarınızı herkese açık istemci kodunda veya açık repolarda paylaşmayın.
Krediler
Her API çağrısı kredinizden düşer. Krediler hiç sona ermez. Yeni hesaplara 100 ücretsiz kredi verilir.
Endpoint
Maliyet
GET /matches
çağrı başına 1 kredi
GET /match/scores
çağrı başına 1 kredi
GET /match/statistics
çağrı başına 1 kredi
GET /match/h2h
çağrı başına 1 kredi
GET /match/tracker
Ücretsiz — API key gerekmez
GET /rankings
çağrı başına 1 kredi
GET /tournament/details
çağrı başına 1 kredi
GET /tournament/bracket
çağrı başına 1 kredi
GET /tournament/results
çağrı başına 1 kredi
GET /player/profile
çağrı başına 1 kredi
GET /player/matches
çağrı başına 1 kredi
GET /player/statistics
çağrı başına 1 kredi
GET /webhook/register
Ücretsiz — API key gerekmez
GET /webhook/list
Ücretsiz — API key gerekmez
GET /webhook/delete
Ücretsiz — API key gerekmez
Kalan bakiye her yanıtta credits_remaining alanında ve X-Credits-Remaining başlığında döner.
Hatalar
Tüm hatalar code ve message içeren JSON döner:
{ "error": "Invalid API key.", "code": 401 }
Kod
Anlam
401
Eksik veya geçersiz api_key
402
Yetersiz kredi
400
Geçersiz parametre (örn. hatalı tarih formatı)
503
Kaynak veri servisi erişilemez
GET /matches
Belirtilen tarihteki tenis maçlarını döner. Takım ve lig adlarını isteğe bağlı çevirebilirsiniz.
GET/api/v1/matches1 credit
Parametreler
Parametre
Zorunlu
Varsayılan
Açıklama
api_key
Evet
—
API anahtarınız
date
Hayır
Bugün
YYYY-MM-DD formatında maç tarihi
lang
Hayır
en
Yanıt dili: entrderu
Örnek istekler
# 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
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
Canlı maç izleyicisini tam render edilmiş bir HTML sayfası olarak döner. API key gerekmez — GET /match/scores yanıtındaki tracker_url'yi alıp doğrudan iframe'e gömün. API key'iniz son kullanıcılara hiç gösterilmez.
GET/api/v1/match/trackerÜcretsiz — API key gerekmez
İpucu:GET /match/scores'u sunucu tarafında çağırarak tracker_url'yi alın, ardından iframe'in src'ine atayın. Bu sayede API key'iniz sunucunuzda kalır, sayfa kaynağında görünmez.
Parametreler
Parametre
Zorunlu
Varsayılan
Açıklama
match_id
Evet
—
/matches yanıtındaki maç kimliği
lang
Hayır
en
Yanıt dili: entrderu
Örnek istekler
# 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
Bu endpoint text/html döndürür — iframe'e gömmek için hazır tam bir HTML sayfası. JSON yanıt değildir.
GET /rankings
ATP, WTA, ATP Live veya WTA Live oyuncu sıralamalarını döndürür. 500 oyuncuya kadar tam liste sunucu tarafında önbelleğe alınır ve dilimlenir — ek kredi harcamadan sayfalamak için from ve limit kullanın.
GET/api/v1/rankings1 credit
Parametreler
Parametre
Zorunlu
Varsayılan
Açıklama
api_key
Evet
—
API anahtarınız
type
Hayır
atp
Sıralama listesi: atp, wta, atp_live veya wta_live
from
Hayır
1
Başlangıç sıralama pozisyonu (1 tabanlı). Örn. 51 ile 51. sıradan başlar.
limit
Hayır
100
Döndürülecek oyuncu sayısı (varsayılan 100, maks 500).
Örnek istekler
# 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
Belirli bir sezon için turnuvanın temel bilgilerini döner — isim, zemin, ülke, şehir, ödül parası, çizelge büyüklüğü ve tarihler. Yıl seçimi için seasons dizisi ve SofaScore'un sağladığı ek alanlar için info_boxes dizisi de içerir.
GET/api/v1/tournament/details1 credit
Parametreler
Parametre
Zorunlu
Varsayılan
Açıklama
api_key
Evet
—
API anahtarınız
tournament_id
Evet
—
SofaScore turnuva URL'sindeki turnuva ID'si (örn. ATP Challenger Lincoln için 23140)
season_id
Hayır
en güncel
Sezon ID — belirli bir yıl için GET /tournament/results'daki seasons[].id'yi kullanın. Varsayılan: son sezon.
Bir turnuva sezonu için tam eleme çizelgesini döner — ana çizelge ve eleme turu. Her tur; oyuncuları, sıralamalarını ve kazanan bilgisini içerir. Yıl seçimi için GET /tournament/results'dan season_id alın.
GET/api/v1/tournament/bracket1 credit
Parametreler
Parametre
Zorunlu
Varsayılan
Açıklama
api_key
Evet
—
API anahtarınız
tournament_id
Evet
—
SofaScore turnuva URL'sindeki turnuva ID'si (örn. ATP Challenger Lincoln için 23140)
season_id
Hayır
en güncel
Sezon ID — belirli bir yıl için GET /tournament/results'daki seasons[].id'yi kullanın. Varsayılan: son sezon.
Örnek istekler
# 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
Bir turnuva sezonu için tamamlanmış ve yaklaşan maçları ve tüm sezonların listesini döner. Mümkünse oyuncu sıralama numarasını içerir.
GET/api/v1/tournament/results1 credit
Parametreler
Parametre
Zorunlu
Varsayılan
Açıklama
api_key
Evet
—
API anahtarınız
tournament_id
Evet
—
SofaScore turnuva URL'sindeki turnuva ID'si (örn. ATP Challenger Lincoln için 23140)
season_id
Hayır
en güncel
Sezon ID — belirli bir yıl için GET /tournament/results'daki seasons[].id'yi kullanın. Varsayılan: son sezon.
lang
Hayır
en
Yanıt dili: entrderu
Örnek istekler
# 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
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
Yeni bir webhook endpointi kaydeder. Abone olunan bir olay gerçekleştiğinde URL'nize JSON içerikli bir POST isteği gönderilir. Hesap başına en fazla 10 aktif webhook. Ücretsiz — kredi tüketmez.
GET/api/v1/webhook/registerÜcretsiz — API key gerekmez
Parametreler
Parametre
Zorunlu
Varsayılan
Açıklama
api_key
Evet
—
API anahtarınız
url
Evet
—
POST isteklerini alacak, kamuya açık bir http veya https URL'si
events
Hayır
all
Abone olunacak olay türlerinin virgülle ayrılmış listesi (ör. match.start,score.update). Boş bırakılırsa tüm olaylara abone olunur.
secret
Hayır
—
İsteğe bağlı gizli anahtar — ayarlandığında her istekte doğrulama için X-Webhook-Signature: sha256=<hmac> başlığı eklenir
Kullanılabilir olaylar
Olay
Açıklama
match.start
Maç başladı (notstarted → inprogress)
match.finish
Maç final skoruyla tamamlandı
match.postponed
Maç ertelendi
match.cancelled
Maç iptal edildi
score.update
Set skoru değişti veya oyun içi puan güncellendi (15 / 30 / 40 / A). Sayım sürecindeyken current_game alanı eklenir.
Endpoint'iniz Content-Type: application/json ile bir POST isteği ve aşağıdaki gövdeyi alır:
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.
⚠️ Önemli Güvenlik Uyarısı Webhook bildirimleri sistemimizden 45.94.4.69 IP adresi üzerinden gönderilmektedir. Ek güvenlik sağlamak amacıyla sunucunuzda (Firewall tarafında) webhook endpoint'inize gelen istekleri sadece bu IP adresine izin verecek şekilde kısıtlayabilirsiniz.
GET /webhook/list
API anahtarınıza kayıtlı tüm aktif webhook'ları döndürür. Ücretsiz — kredi tüketmez.
GET/api/v1/webhook/listÜcretsiz — API key gerekmez