实时赛事监控
Use SofaScore endpoints to turn 实时赛事监控 into repeatable API requests with documented inputs and JSON responses.
以规范化 JSON 采集 SofaScore 的实时体育赛事、球队、球员、积分榜、阵容、赔率、事件、统计数据和历史交锋记录。
提取公开的 SofaScore 实时赛事、球队、球员、积分榜、赛事统计、阵容、赔率、事件和历史交锋数据,转换为结构化 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
提取公开的 SofaScore 实时赛事、球队、球员、积分榜、赛事统计、阵容、赔率、事件和历史交锋数据,转换为结构化 JSON。
Use SofaScore endpoints to turn 实时赛事监控 into repeatable API requests with documented inputs and JSON responses.
Use SofaScore endpoints to turn 球队和球员数据增强 into repeatable API requests with documented inputs and JSON responses.
Use SofaScore endpoints to turn 体育数据分析 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 并未为第三方开发者提供文档化的 API,因此各类集成读取的都是其公开的 JSON 接口。Crawlora 的 15 个 SofaScore 端点封装了这一接口:每次调用都是通过 x-api-key 请求头认证的 GET 请求,球队、球员和赛事的 ID 均来自搜索端点。
向 SofaScore 搜索端点发送自由文本查询(q=barcelona),即可返回匹配的球队、球员和赛事,包含各自的数字 ID 和所属运动项目。
赛事、统计、阵容、事件、赔率和历史交锋端点接受 event id;球队、球队赛程、球队球员和球员端点接受各自的 id;积分榜和轮次赛程端点还接受 season。
每个 SofaScore 端点都是带有 x-api-key 请求头的 GET 请求——不涉及 SofaScore 登录、Cookie 或会话令牌。
按运动项目(足球、篮球或网球)轮询实时赛事以获取比赛中的数据,或遍历各明细端点的 ID 来构建积分榜、赛程或阵容数据集。
FAQ
SofaScore 没有为第三方提供文档化的 API 或开发者计划,因此不存在可申请的 SofaScore API 密钥。其应用背后是一个无需凭证的公开 JSON 接口,各类集成读取的正是这个接口。Crawlora 与 SofaScore 没有关联——它将这一公开接口规范化为稳定、有文档说明的端点,你使用自己的 Crawlora 密钥通过 x-api-key 请求头进行认证。免费套餐每月包含 2000 额度,无需信用卡,按成功调用计费。
使用搜索端点。它接受自由文本参数 q,返回匹配的球队、球员和赛事,包含各自的数字 id、slug、运动项目和国家——这些 ID 正是其他所有 SofaScore 端点所需要的。当没有匹配结果时,返回空结果列表也是有效响应。
每个响应都携带其采集来源的 source_url 字段,因此对应关系在响应本身中就能看到——例如球员端点会显示 https://api.sofascore.com/api/v1/player/<id>,搜索端点会显示 https://api.sofascore.com/api/v1/search/all?q=<query>。响应中还带有 fetched_at 时间戳,方便你判断数据的新鲜程度。
可以。实时赛事端点会返回某项运动当前正在进行的比赛——足球、篮球或网球——当没有正在进行的比赛时,返回空的赛事列表也是有效响应。有了赛事 ID 之后,你就可以进一步获取统计数据、阵容、事件、赔率和历史交锋记录。
采集公开可访问的体育数据通常与访问私有账号有所区别,但这并非无条件成立。请仅采集公开数据,遵守 SofaScore 的条款和速率限制,并在转发或再分发前核实相关权限——体育赛程和赔率数据可能带有单独的授权要求。这不构成法律建议,商业使用前请核查你所在地区的法律。