Tony Wang6 Min. LesezeitSofaScore scrapen 2026 (API & Python)
SofaScore 2026 scrapen — Live-Ergebnisse, Quoten, Aufstellungen und Tabellen per DIY-Python, No-Code oder strukturierter API — plus die rechtlichen Grundlagen.
Am schnellsten scrapst du SofaScore 2026, indem du eine strukturierte API aufrufst, die normalisiertes JSON zurückgibt — Live-Ergebnisse, Spieldetails, Aufstellungen, Quoten, Ereignisse und Tabellen — statt SofaScores undokumentierte interne API und ihren Cloudflare-Schutz selbst zu reverse-engineeren. DIY ist möglich, und es gibt eine echte Community inoffizieller Clients, aber SofaScore veröffentlicht keine offizielle öffentliche API, und die eigenen Nutzungsbedingungen beschränken den automatisierten Zugriff. Dieser Guide behandelt alle drei Ansätze, was jeder zurückgibt, wo jeder an seine Grenzen stößt, und die rechtlichen Grundlagen.
Warum SofaScore scrapen?
Öffentliche SofaScore-Daten treiben eine ganze Kategorie von Sportdaten-Workflows an:
- Live-Ergebnis- und Quoten-Monitoring — verfolge laufende Spiele, Ergebnisse und Wettmärkte über Fußball, Basketball und Tennis hinweg.
- Team- und Spieler-Recherche — hol dir Kader, Team-Profile und die Spielhistorie eines Teams an einem Ort.
- Liga- und Tabellen-Tracking — verfolge Tabellenplatz, Form und Veränderungen von Saison zu Saison.
- Sport-Analytics — speise Event-Statistiken, Aufstellungen, Ereignisse und Head-to-Head-Historie in eine Analyse- oder Prognose-Pipeline ein.
Ist es legal, SofaScore zu scrapen?
Option 1: DIY in Python (und warum es schwieriger ist, als es aussieht)
Es gibt kein offizielles SDK, DIY bedeutet also, dieselbe interne API anzusprechen, die SofaScores eigene Apps nutzen:
import requests
resp = requests.get(
"https://api.sofascore.com/api/v1/search/all",
params={"q": "real madrid"},
)
data = resp.json() # frequently a Cloudflare 403 "challenge" page, not JSON
Das funktioniert, bis es nicht mehr funktioniert, und die wiederkehrenden Probleme sind in den Community-Clients, die diese API reverse-engineeren, gut dokumentiert:
- Keine offizielle API, keine Stabilitätsgarantie. SofaScore veröffentlicht keine öffentliche Entwickler-API —
api.sofascore.comist dieselbe undokumentierte interne API, die auch die Web- und Mobile-Apps aufrufen, und sie kann sich in Form oder Zugriffsregeln ändern, sobald SofaScore eine neue App-Version ausliefert — ohne Changelog für externe Entwickler. - Die Cloudflare-Challenge. Laut den Client-Docs des Sofascore-API-Bundle beantwortet SofaScores Edge jede Anfrage ohne
X-Requested-With-Header mit einer Cloudflare-403-„Challenge". Sie zuverlässig zu umgehen braucht außerdem einen modernen TLS-Handshake — ältere Stacks werden selbst von einer sauberen IP aus gefingerprintet — und laut denselben Docs bekommen manche IPs (bestimmte Rechenzentrums-Bereiche, geo-blockierte Regionen) unabhängig von den Headern eine403. - Rechtliches Risiko zusätzlich zu den technischen Hürden. Automatisierter Zugriff und Scraping verstoßen gegen SofaScores eigene Nutzungsbedingungen (siehe oben), unabhängig davon, ob dein Client an Cloudflare vorbeikommt.
- Keine Struktur, sobald du drin bist. Eine rohe Antwort spiegelt SofaScores internes App-Schema, nicht einen dokumentierten öffentlichen Vertrag — jeder Feldname und jede Verschachtelung musst du selbst reverse-engineeren und neu parsen, sobald sie sich ändert.
Option 2: No-Code-Tools
Browser-Extraktoren und Marktplatz-„SofaScore-Scraper"-Actors können ein einzelnes Spiel oder eine Tabelle als CSV exportieren, was für einen einmaligen Abzug völlig ausreicht. Aber Live-Ergebnisse und Quoten ändern sich minütlich, und mehrere Spiele über einen Spieltag zu verfolgen ist eine Monitoring-Pipeline, kein einmaliger Export — genau da gewinnt ein geplanter API-Call.
Option 3: Eine strukturierte SofaScore-API
Crawloras SofaScore-API bietet dokumentierte Endpoints für Suche, Live-Events, Spieldetails, Quoten, Aufstellungen, Tabellen und mehr — als normalisiertes JSON über einen einzigen API-Key.
curl -G "https://api.crawlora.net/api/v1/sofascore/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
--data-urlencode "q=real madrid"
Dann verkette in Python Suche → Detail → Quoten/Aufstellungen:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/sofascore"
# search resolves a team, player, or competition name to a numeric id
hits = requests.get(f"{base}/search", headers=h, params={"q": "real madrid"}).json()["data"]["results"]
event_id = 14025013 # from a search result's matches or the live-events endpoint
event = requests.get(f"{base}/event", headers=h, params={"id": event_id}).json()["data"]
odds = requests.get(f"{base}/event-odds", headers=h, params={"id": event_id}).json()["data"]
lineups = requests.get(f"{base}/event-lineups", headers=h, params={"id": event_id}).json()["data"]
Eine Event-Antwort ist normalisiertes JSON (die Felder sind beispielhaft — prüfe das Schema in den Docs):
{
"code": 200,
"msg": "OK",
"data": {
"event": {
"id": 14025013,
"slug": "bournemouth-liverpool",
"start_time": "2025-08-15T19:00:00Z",
"status": { "code": 100, "description": "Ended", "type": "finished" },
"tournament": { "id": 52, "name": "Premier League", "unique_tournament_id": 17 },
"home_team": { "id": 60, "name": "Bournemouth", "country": "England" },
"away_team": { "id": 44, "name": "Liverpool", "country": "England" },
"home_score": { "current": 2, "period1": 1, "period2": 1 },
"away_score": { "current": 4, "period1": 1, "period2": 3 },
"venue": { "name": "Vitality Stadium", "city": "Bournemouth", "capacity": 11307 }
}
}
}
Tabellen und Live-Events brauchen ihre eigenen Pflichtparameter — eine Saison-id (aufgelöst über tournament-seasons) beziehungsweise einen Sport-Key:
standings = requests.get(f"{base}/standings", headers=h,
params={"id": 17, "season": 76986, "type": "total"}).json()["data"]
live = requests.get(f"{base}/live-events", headers=h, params={"sport": "football"}).json()["data"]
Speichere eine Zeile pro Event (oder pro Tabellen-Snapshot) mit ihrem fetched_at-Zeitstempel und lass es nach Plan erneut laufen — live-events in Intervallen abzufragen ist, wie du ein Spiel während des Verlaufs verfolgst.
Was du sammeln kannst
- Universelle Suche über Teams, Spieler und Wettbewerbe, jeweils mit numerischer id, Sportart und Land
- Spiel-(Event-)Detail: Ergebnisse nach Abschnitt, Status, Spielstätte, Schiedsrichter und Zuschauerzahl, plus Turnier und Saison, zu der es gehört
- Event-Statistiken, Aufstellungen (Formation, Startelf und Ersatzspieler), Spielereignisse (Tore, Karten, Auswechslungen) und Head-to-Head-Historie zwischen zwei Teams
- Wettmärkte und Quoten pro Spiel — nur zur Information (siehe Abschnitt zur Rechtslage)
- Team-Profile und die Spielhistorie sowie der Kader eines Teams; Spieler-Profile
- Liga-Tabellen (gesamt, Heim, Auswärts) plus Turnier-Saisons und Runden-für-Runde-Ansetzungen
- Live laufende Events nach Sportart (Fußball, Basketball, Tennis)
Grenzen und typische Herausforderungen
- Keine offizielle API als Rückfalloption. Das hier basiert vollständig auf SofaScores interner App-API; wenn SofaScore sie ändert, passen sich sowohl DIY-Code als auch jeder Scraper erst hinterher an, nicht vorher.
- Cloudflare plus IP-Reputation. Korrekte Header allein garantieren keinen Zugriff aus jedem Netzwerk — Rechenzentrums-Bereiche und manche Regionen werden laut den oben zitierten inoffiziellen Client-Docs komplett blockiert.
- Quoten sind zur Information, kein Wett-Feed. SofaScores eigene Nutzungsbedingungen sagen, dass die gezeigten Quoten nur der Information dienen, kein Glücksspieldienst sind und keine Rechts- oder Steuerberatung darstellen — behandle sie als Orientierungswert, nicht als lizenzierten Quoten-Feed für ein Wettprodukt.
- Nicht Push/Echtzeit. „Live" bedeutet hier, den
live-events-Endpoint nach Plan abzufragen; es gibt keinen Websocket- oder Streaming-Feed, wähl also ein Polling-Intervall, das dazu passt, wie schnell sich der Spielstand tatsächlich aktualisieren muss. - Saison-ids verändern sich. Die Saison-id eines Wettbewerbs ändert sich jedes Jahr (die Saison-id der Premier League ist zum Beispiel jedes Jahr anders) — löse sie frisch über
tournament-seasonsauf, statt eine fest zu verdrahten.
Quellen
Wo das reinpasst
Probier es erst kostenlos aus: Lass eine beliebige öffentliche URL durch den Free Web Scraper laufen oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
SofaScore-Daten speisen Live-Sport-Dashboards, Team- und Spieler-Recherche sowie Tabellen-Tracking. Für US-fokussierte Ergebnisse, Tabellen und Kader über andere Ligen hinweg siehe die ESPN-API, und für eine einzelne Liga in voller Tiefe — Spielpläne, Boxscores und Spielerstatistiken — siehe how to scrape MLB. Sobald du die Spielansetzungen hast, deckt how to scrape Ticketmaster den Ticketmarkt für genau diese Spiele ab. Für das Such- und Social-Interesse rund um dieselben Spiele statt der Ergebnisse selbst siehe wonach Amerika nach dem WM-Finale 2026 gesucht hat. Für das breitere Toolkit siehe how to choose a web scraping API, und für die rechtlichen Grundlagen is web scraping legal in 2026.
Leg los, indem du den Endpoint im Playground testest, das Request- und Response-Schema in den API-Docs nachliest und die Credit-Kosten auf der Pricing-Seite prüfst.
Häufig gestellte Fragen
Hat SofaScore eine offizielle öffentliche API?
Nein. SofaScore veröffentlicht keine öffentliche Entwickler-API. Die Daten stammen aus einer undokumentierten internen API (api.sofascore.com), die auch die eigenen Web- und Mobile-Apps aufrufen und die Community-Projekte reverse-engineert haben — sie kann sich in Form oder Zugriffsregeln ändern, sobald SofaScore eine neue App-Version ausliefert, ohne Changelog für externe Entwickler.
Kann ich SofaScore scrapen, ohne blockiert zu werden?
DIY-Anfragen an api.sofascore.com ohne X-Requested-With-Header bekommen eine Cloudflare-403-„Challenge", und selbst korrekte Header garantieren laut Dokumentation von Drittanbieter-Clients keinen Zugriff aus jedem Netzwerk — manche IPs (bestimmte Rechenzentrums-Bereiche, geo-blockierte Regionen) bekommen trotzdem eine 403. Eine strukturierte API übernimmt Header, TLS und IP-Routing hinter einem einzigen Key.
Ist es legal, SofaScore zu scrapen?
SofaScores Live-Ergebnisse und Statistiken sind öffentliche Web-Inhalte, aber SofaScores eigene Nutzungsbedingungen verbieten automatisierten Zugriff bzw. Scraping, behandeln die Daten als geschützte Datenbank und beschränken die Plattform auf private, nicht-kommerzielle Nutzung. Prüf die Nutzungsbedingungen und dein lokales Recht vor kommerzieller Nutzung. Keine Rechtsberatung.
Kann ich SofaScore-Quoten für ein Wettprodukt nutzen?
Nein — SofaScores eigene Nutzungsbedingungen legen fest, dass die auf der Plattform gezeigten Wettquoten nur der Information dienen, kein Glücksspieldienst sind und keine Rechts- oder Steuerberatung darstellen. Behandle Quoten-Daten als Orientierungswert für Recherche und Analyse, nicht als lizenzierten Feed für ein Wettprodukt.
Welche SofaScore-Daten kann ich sammeln?
Universelle Suche über Teams, Spieler und Wettbewerbe; Spieldetails, Statistiken, Aufstellungen, Ereignisse und Head-to-Head-Historie; Wettquoten pro Spiel; Team- und Spieler-Profile; Liga-Tabellen (gesamt, Heim, Auswärts); Turnier-Saisons und Runden-für-Runde-Ansetzungen; sowie live laufende Events nach Sportart (Fußball, Basketball, Tennis).
Wie finde ich die id eines Teams, Spielers oder Events?
Ruf /sofascore/search mit einem Freitext-Namen auf — die Antwort liefert numerische ids vom Typ Team, Spieler oder Wettbewerb, zusammen mit Sportart und Land. Für ein konkretes Spiel hol dir die Spielhistorie eines Teams oder den live-events-Feed, statt eine id zu raten.
Wie oft kann ich Live-Ergebnisse aktualisieren?
Der live-events-Endpoint gibt laufende Spiele für eine Sportart (Fußball, Basketball, Tennis) zum Zeitpunkt deines Aufrufs zurück — es gibt keinen Websocket- oder Streaming-Feed, frag ihn also in einem Intervall ab, das dazu passt, wie schnell sich der Spielstand aktualisieren muss, im Rahmen deines Tarifs und der Responsible-Use-Limits.