SofaScore API endpoint
Returns one SofaScore match by event id: home and away teams and scores, status, start time, tournament, attendance and winner code, plus venue and referee when SofaScore has them. An unknown or malformed id surfaces as an upstream error.
/sofascore/eventQuery parameters:
id: required. Numeric SofaScore event (match) id.Notable response behavior:
venue and referee are omitted when SofaScore has no data for them (e.g. neutral/unconfirmed venues).| Field | In the sample | Value in the sample |
|---|---|---|
| event.id | Has a value | |
| event.slug | Has a value | |
| event.start_timestamp | Has a value | 2025-08-15 |
| event.start_time | Has a value | 2025-08-15 |
| event.status | Has a value | |
| event.winner_code | Has a value | |
| event.tournament | Has a value | |
| event.home_team | Has a value | |
| event.away_team | Has a value | |
| event.home_score | Has a value | |
| event.away_score | Has a value | |
| event.venue | Has a value | |
| event.referee | Has a value | |
| event.attendance | Has a value | 60,315 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Numeric SofaScore event (match) id | 14025013 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/event?id=14025013" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"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
}
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.eventResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.EventResponse | No | ||||
| data.event | object | No | The match. | |||
| data.event.attendance | integer | No | Reported attendance. | |||
| data.event.away_score | object | No | Away side's score, when available. | |||
| data.event.away_score.current | integer | No | Current score, which is the final score once the match is over. | |||
| data.event.away_score.period1 | integer | No | Score in the first period. | |||
| data.event.away_score.period2 | integer | No | Score in the second period. | |||
| data.event.away_team | object | No | Away side. | |||
| data.event.away_team.country | string | No | Spain | Country the team belongs to. | ||
| data.event.away_team.id | integer | No | 2817 | SofaScore team id. Use it with the team endpoints. | ||
| data.event.away_team.name | string | No | FC Barcelona | Full team name. | ||
| data.event.away_team.national | boolean | No | True for a national team. | |||
| data.event.away_team.short_name | string | No | Barcelona | Shortened team name. | ||
| data.event.away_team.slug | string | No | barcelona | URL slug of the team on SofaScore. | ||
| data.event.home_score | object | No | Home side's score, when available. | |||
| data.event.home_score.current | integer | No | Current score, which is the final score once the match is over. | |||
| data.event.home_score.period1 | integer | No | Score in the first period. | |||
| data.event.home_score.period2 | integer | No | Score in the second period. | |||
| data.event.home_team | object | No | Home side. | |||
| data.event.home_team.country | string | No | Spain | Country the team belongs to. | ||
| data.event.home_team.id | integer | No | 2817 | SofaScore team id. Use it with the team endpoints. | ||
| data.event.home_team.name | string | No | FC Barcelona | Full team name. | ||
| data.event.home_team.national | boolean | No | True for a national team. | |||
| data.event.home_team.short_name | string | No | Barcelona | Shortened team name. | ||
| data.event.home_team.slug | string | No | barcelona | URL slug of the team on SofaScore. | ||
| data.event.id | integer | No | 14025013 | SofaScore event id. Use it with the event endpoints. | ||
| data.event.referee | object | No | Match referee. Omitted when SofaScore has none for it. | |||
| data.event.referee.country | string | No | England | Referee's country. | ||
| data.event.referee.id | integer | No | SofaScore referee id. | |||
| data.event.referee.name | string | No | Anthony Taylor | Referee's name. | ||
| data.event.slug | string | No | URL slug of the match on SofaScore. | |||
| data.event.start_time | string | No | 2025-08-15T19:00:00Z | Start time in UTC (RFC 3339). | ||
| data.event.start_timestamp | integer | No | Start time as a Unix timestamp in seconds. | |||
| data.event.status | object | No | Current status of the match. | |||
| data.event.status.code | integer | No | SofaScore's numeric status code, for example 0 for not started and 100 for ended. | |||
| data.event.status.description | string | No | Ended | Status as displayed, for example "Ended". | ||
| data.event.status.type | string | No | finished | Status group, for example `notstarted`, `inprogress` or `finished`. | ||
| data.event.tournament | object | No | Tournament and parent competition the match belongs to. | |||
| data.event.tournament.category | string | No | England | Category the tournament sits under, usually a country or region. | ||
| data.event.tournament.id | integer | No | SofaScore id of the tournament the match is filed under. The seasons, standings and round endpoints take `unique_tournament_id` instead. | |||
| data.event.tournament.name | string | No | Premier League | Tournament name. | ||
| data.event.tournament.slug | string | No | premier-league | URL slug of the tournament on SofaScore. | ||
| data.event.tournament.unique_tournament_id | integer | No | 17 | Id of the parent competition. This is the tournament id the tournament-seasons, standings and round-events endpoints take. | ||
| data.event.tournament.unique_tournament_name | string | No | Premier League | Name of the parent competition. | ||
| data.event.venue | object | No | Venue of the match. Omitted when SofaScore has none for it. | |||
| data.event.venue.capacity | integer | No | 61276 | Venue capacity. | ||
| data.event.venue.city | string | No | Liverpool | City the venue is in. | ||
| data.event.venue.country | string | No | England | Country the venue is in. | ||
| data.event.venue.name | string | No | Anfield | Venue name. | ||
| data.event.winner_code | integer | No | Result code: 1 when the home side won, 2 when the away side won, 3 for a draw. Omitted until the match is decided. | |||
| data.fetched_at | string | No | Time the data was fetched, in UTC (RFC 3339). | |||
| data.source_url | string | No | SofaScore URL the data was read from. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/sofascore/event?id=14025013" \
-H "x-api-key: $CRAWLORA_API_KEY"