Live event monitoring
Use SofaScore endpoints to turn live event monitoring into repeatable API requests with documented inputs and JSON responses.
Collect SofaScore live sports events, teams, players, standings, lineups, odds, incidents, statistics, and head-to-head data as normalized JSON.
Extract public SofaScore live events, teams, players, standings, event statistics, lineups, odds, incidents, and head-to-head data as structured JSON.
Endpoint families
6
Documented params
36
Examples
15
Live catalog snapshot
Active endpoints
15
Methods
GET
Required params
35
Schema refs
15
{
"platform": "SofaScore",
"endpoint": "sofascore-search",
"method": "GET",
"path": "/sofascore/search",
"auth": "apiKey"
}Use cases
Extract public SofaScore live events, teams, players, standings, event statistics, lineups, odds, incidents, and head-to-head data as structured JSON.
Use SofaScore endpoints to turn live event monitoring into repeatable API requests with documented inputs and JSON responses.
Use SofaScore endpoints to turn team and player enrichment into repeatable API requests with documented inputs and JSON responses.
Use SofaScore endpoints to turn sports analytics into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live SofaScore endpoint catalog — 15 endpoints, 36 documented request parameters, and 15 published response schemas — the same catalog Docs and Playground run against.
15 documented SofaScore endpoints, grouped into 15 request families — Event, Event H2h and Event Incidents, plus 12 more.
36 request parameters are documented across those SofaScore endpoints, 35 of them required — the full input contract is public before you write any integration code.
15 of the 15 SofaScore endpoints ship a recorded example response, and 15 carry a documented response schema — you can code against the real JSON before the first request.
SofaScore endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
15 hosted MCP tools back the SofaScore endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/sofascore/event
/sofascore/event-h2h
/sofascore/event-incidents
/sofascore/event-lineups
/sofascore/event-odds
/sofascore/event-statistics
Featured endpoints
/sofascore/searchSearches SofaScore's credential-free public JSON for teams, players, and competitions matching a free-text query. An empty `results` list is a valid response when nothing matches.
Response notes
- An empty `results` array is a valid response when nothing matches the query (not an error). - Each result carries a `type` (e.g. `team`, `player`, `uniqueTournament`); player results also carry `team_id`/`team_name` for their current club. - A missing `q` value returns an invalid-parameter error before upstream IO. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "barcelona", "count": 2, "source_url": "https://api.sofascore.com/api/v1/search/all?q=barcelona", "fetched_at": "2026-07-08T16:45:00Z", "results": [ { "type": "team", "id": 2817, "name": "FC Barcelona", "slug": "barcelona", "sport": "Football", "country": "Spain" }, { "type": "player", "id": 1102841, "name": "Alejandro Balde", "slug": "alejandro-balde", "team_id": 2817, "team_name": "FC Barcelona" } ] } } ```
MCP tool sofascore_search
/sofascore/live-eventsReturns currently live events for a sport from SofaScore's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, and `tennis`. An empty `events` list is a valid response when nothing is live right now.
Response notes
- An empty `events` array is a valid response when nothing is live right now (not an error). - Invalid `sport` values return an invalid-parameter error before upstream IO. Example response: ```json { "code": 200, "msg": "OK", "data": { "sport": "football", "count": 1, "source_url": "https://api.sofascore.com/api/v1/sport/football/events/live", "fetched_at": "2026-07-08T16:45:00Z", "events": [ { "id": 16467444, "slug": "pfc-cska-ii-sofia-fc-marek-1915-dupnitsa", "start_timestamp": 1751980800, "start_time": "2026-07-08T12:00:00Z", "status": { "code": 6, "description": "1st half", "type": "inprogress" }, "tournament": { "id": 1339, "name": "Club Friendly Games", "category": "World", "unique_tournament_id": 853, "unique_tournament_name": "Club Friendly Games" }, "home_team": { "id": 1, "name": "PFC CSKA II Sofia", "short_name": "CSKA II Sofia", "slug": "pfc-cska-ii-sofia", "country": "Bulgaria" }, "away_team": { "id": 2, "name": "FC Marek 1915 Dupnitsa", "short_name": "Marek Dupnitsa", "slug": "fc-marek-1915-dupnitsa", "country": "Bulgaria" }, "home_score": { "current": 0 }, "away_score": { "current": 1 } } ] } } ```
MCP tool sofascore_live_events
/sofascore/eventReturns one match's detail (teams, score, status, venue, referee) from SofaScore's credential-free public JSON.
Response notes
- `venue` and `referee` are omitted when SofaScore has no data for them (e.g. neutral/unconfirmed venues). - An unknown or malformed id surfaces as an upstream error (SofaScore returns 404 for a missing event). Example response: ```json { "code": 200, "msg": "OK", "data": { "source_url": "https://api.sofascore.com/api/v1/event/14025013", "fetched_at": "2026-07-08T16:45:00Z", "event": { "id": 14025013, "slug": "bournemouth-liverpool", "start_timestamp": 1755288000, "start_time": "2025-08-15T19:00:00Z", "status": { "code": 100, "description": "Ended", "type": "finished" }, "winner_code": 2, "tournament": { "id": 52, "name": "Premier League", "category": "England", "unique_tournament_id": 17, "unique_tournament_name": "Premier League" }, "home_team": { "id": 60, "name": "Bournemouth", "short_name": "Bournemouth", "slug": "bournemouth", "country": "England" }, "away_team": { "id": 44, "name": "Liverpool", "short_name": "Liverpool", "slug": "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", "country": "England", "capacity": 11307 }, "referee": { "id": 69853, "name": "Anthony Taylor", "country": "England" }, "attendance": 11036 } } } ```
MCP tool sofascore_event
/sofascore/event-statisticsReturns one match's statistics (possession, shots, passes, and more, grouped and split by period) from SofaScore's credential-free public JSON. Returns 404 when SofaScore has no tracked statistics for the match.
Response notes
- Returns `404` when SofaScore has no tracked statistics for the match (common for lower-tier/friendly fixtures). - `periods` groups statistics by period (e.g. `ALL`, `1ST`, `2ND`); each period has named `groups` (e.g. "Match overview", "Shots") of home/away `items`. Example response: ```json { "code": 200, "msg": "OK", "data": { "event_id": 14025013, "source_url": "https://api.sofascore.com/api/v1/event/14025013/statistics", "fetched_at": "2026-07-08T16:45:00Z", "periods": [ { "period": "ALL", "groups": [ { "name": "Match overview", "items": [ { "name": "Ball possession", "key": "ballPossession", "home": "61%", "away": "39%" } ] } ] } ] } } ```
MCP tool sofascore_event_statistics
/sofascore/event-lineupsReturns one match's starting XI and substitutes per side, with formation, from SofaScore's credential-free public JSON. Returns 404 when SofaScore has no lineups for the match.
Response notes
- Returns `404` when SofaScore has no lineups for the match (not yet announced or not tracked). - `confirmed` indicates whether the lineup is the official confirmed lineup rather than a predicted one. - `home`/`away` each carry a `formation` (e.g. `4-3-3`) and a `players` list; `substitute` marks bench players. Example response: ```json { "code": 200, "msg": "OK", "data": { "event_id": 14025013, "confirmed": true, "source_url": "https://api.sofascore.com/api/v1/event/14025013/lineups", "fetched_at": "2026-07-08T16:45:00Z", "home": { "formation": "4-3-3", "players": [ { "player": { "id": 66101, "name": "Alisson", "short_name": "Alisson", "position": "G", "country": "Brazil" }, "jersey_number": "1", "position": "G", "substitute": false } ] }, "away": { "formation": "4-4-2", "players": [] } } } ```
MCP tool sofascore_event_lineups
/sofascore/event-incidentsReturns one match's goal, card, substitution, and period timeline from SofaScore's credential-free public JSON. An empty `incidents` list is a valid response before kickoff.
Response notes
- An empty `incidents` array is a valid response before kickoff (not an error). - `type` is one of `period`, `goal`, `card`, `substitution`, `injuryTime`, or another SofaScore incident type; fields not relevant to a given type are omitted. - Card incidents carry `card_color` (`yellow` or `red`); substitutions carry `player_in`/`player_out`. Example response: ```json { "code": 200, "msg": "OK", "data": { "event_id": 14025013, "count": 3, "source_url": "https://api.sofascore.com/api/v1/event/14025013/incidents", "fetched_at": "2026-07-08T16:45:00Z", "incidents": [ { "type": "goal", "time": 23, "is_home": true, "home_score": 1, "away_score": 0, "player": "A. Player" }, { "type": "card", "time": 60, "is_home": false, "card_color": "yellow", "player": "B. Player" }, { "type": "substitution", "time": 70, "is_home": true, "player_in": "C. Sub", "player_out": "A. Player" } ] } } ```
MCP tool sofascore_event_incidents
Related APIs
Media & Streaming
Research streaming catalogs, title availability, providers, offers, seasons, episodes, and release changes from JustWatch with normalized JSON.
Media & Streaming
Turn Apple Books ebook and audiobook pages into structured data — search, catalog detail, paginated customer reviews, similar titles, author bibliographies, series listings, and chart rankings as normalized JSON. Credential-free.
Media & Streaming
Search public Ticketmaster events and browse the full discovery hierarchy by category or city, with pagination plus event, attraction, and venue detail endpoints -- including fan reviews, related attractions, trending attractions, and enhanced venue branding -- for live-entertainment research.
How to scrape SofaScore
SofaScore publishes no documented API for third parties, so integrations read its public JSON surface. Crawlora's 15 SofaScore endpoints wrap that surface: every call is a GET authenticated with an x-api-key header, and IDs for teams, players, and competitions come from the search endpoint.
Send a free-text query to the SofaScore search endpoint (q=barcelona) and get back matching teams, players, and competitions with their numeric IDs and sport.
Events, statistics, lineups, incidents, odds, and head-to-head take an event id; team, team fixtures, team players, and player take their own id; standings and round fixtures also take season.
Every SofaScore endpoint is a GET with an x-api-key header — no SofaScore login, cookie, or session token is involved.
Poll live events by sport (football, basketball, or tennis) for in-play data, or iterate IDs across the detail endpoints to build a standings, fixture, or squad dataset.
FAQ
SofaScore publishes no documented API or developer program for third parties, so there is no SofaScore API key to request. Its apps are backed by a credential-free public JSON surface, which is what integrations read. Crawlora is not affiliated with SofaScore — it normalizes that public surface into stable, documented endpoints, and you authenticate with your own Crawlora key in an x-api-key header. The free tier includes 2,000 credits per month with no card, and billing is pay-on-success.
Use the search endpoint. It takes a free-text q parameter and returns matching teams, players, and competitions with their numeric id, slug, sport, and country — those ids are what every other SofaScore endpoint takes. An empty results list is a valid response when nothing matches.
Each response carries the source_url it was collected from, so the mapping is visible in the payload itself — for example the player endpoint reports https://api.sofascore.com/api/v1/player/<id> and search reports https://api.sofascore.com/api/v1/search/all?q=<query>. Responses also carry a fetched_at timestamp so you can tell how fresh a record is.
Yes. The live events endpoint returns what is currently in play for a sport — football, basketball, or tennis — and an empty events list is a valid response when nothing is live. From an event id you can then pull statistics, lineups, incidents, odds, and head-to-head history.
Collecting publicly accessible sports data is generally treated differently from accessing private accounts, but it is not unconditional. Collect only public data, respect SofaScore's terms and rate limits, and check redistribution rights before republishing — sports fixtures and odds data can carry separate licensing obligations. This is not legal advice; review your local law before commercial use.