SofaScore API endpoint
Returns one venue (stadium or arena): name, capacity, city, country, coordinates, its home teams, the venue-wide match totals (matches, goals, home and away win shares, and for football cards and corners per game) and a per-sport record in `sports`, most matches first. `hidden` venues, such as NBA arenas, have no venue-wide match list in venue-events and are listed per competition season instead. An unknown venue id answers 404. Get `id` from search-typed with `type` `venues`, from tournament-venues or from an event's venue.
/sofascore/venueQuery parameters:
id: required. Numeric SofaScore venue id, e.g. 624 for the Emirates Stadium. Find ids with sofascore/search-typed (type=venues), sofascore/tournament-venues, or the venue of an event.Notable response behavior:
venue holds name, slug, capacity, city, state (US venues, for example US-TX), country, latitude and longitude (omitted when SofaScore has no coordinates) and hidden. A hidden venue (every NBA arena, one Premier League stadium) has no venue-wide match list: sofascore/venue-events answers 404 for it unless tournament and season are given.main_teams are the venue's home teams.totals are the venue-wide aggregates: total_matches always, and, when SofaScore publishes them, home_team_goals_scored, away_team_goals_scored, avg_red_cards_per_game, avg_corner_kicks_per_game, home_team_wins_percentage, away_team_wins_percentage and draws_percentage (percentages from 0 to 100). Football venues carry all of them; other sports carry only what upstream publishes, and a missing value is omitted, not 0. For a venue used by several sports totals.total_matches can be 0 while sports carries the per-sport counts (the Moody Center, an NBA arena that also hosts MMA, reports 0 here and 21 and 8 below).sports lists one entry per sport the venue has hosted, most matches first: sport (the sport key to pass as sport to sofascore/venue-events for a non-hidden venue), total_matches, and when published goals_scored, home_win_percentage and draw_percentage.Example response (shortened):
{
"code": 200,
"msg": "OK",
"data": {
"venue": {
"id": 624,
"name": "Emirates Stadium",
"slug": "emirates-stadium",
"capacity": 60704,
"city": "London",
"country": "England",
"latitude": 51.55504,
"longitude": -0.1084,
"hidden": false
},
"main_teams": [ { "id": 42, "name": "Arsenal", "short_name": "Arsenal", "slug": "arsenal" } ],
"totals": {
"total_matches": 415,
"home_team_goals_scored": 888,
"away_team_goals_scored": 398,
"avg_red_cards_per_game": 0.13253012048193,
"avg_corner_kicks_per_game": 17.272289156627,
"home_team_wins_percentage": 67.951807228916,
"away_team_wins_percentage": 15.66265060241,
"draws_percentage": 16.385542168675
},
"sports": [
{ "sport": "football", "total_matches": 415, "goals_scored": 1286, "home_win_percentage": 67.951807228916, "draw_percentage": 16.385542168675 },
{ "sport": "rugby", "total_matches": 1, "goals_scored": 53, "home_win_percentage": 0, "draw_percentage": 0 }
],
"source_url": "https://api.sofascore.com/api/v1/venue/624",
"fetched_at": "2026-10-07T14:00:00Z"
}
}
| Field | Filled in, of 2 checked | Values in the sample |
|---|---|---|
| sport | 2 | “football” and 1 other value |
| total_matches | 2 | 1 to 416, median 1 |
| goals_scored | 2 | 53 to 1,289, median 53 |
| home_win_percentage | 2 | 0 to 68.03, median 0 |
| draw_percentage | 2 | 0 to 16.35, median 0 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Numeric SofaScore venue id | 624 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/venue?id=624" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"venue": {
"id": 624,
"name": "Emirates Stadium",
"slug": "emirates-stadium",
"capacity": 60704,
"city": "London",
"country": "England",
"latitude": 51.55504,
"longitude": -0.1084,
"hidden": false
},
"main_teams": [
{
"id": 42,
"name": "Arsenal",
"short_name": "Arsenal",
"slug": "arsenal"
}
],
"totals": {
"total_matches": 415,
"home_team_goals_scored": 888,
"away_team_goals_scored": 398,
"avg_red_cards_per_game": 0.13253012048193,
"avg_corner_kicks_per_game": 17.272289156627,
"home_team_wins_percentage": 67.951807228916,
"away_team_wins_percentage": 15.66265060241,
"draws_percentage": 16.385542168675
},
"sports": [
{
"sport": "football",
"total_matches": 415,
"goals_scored": 1286,
"home_win_percentage": 67.951807228916,
"draw_percentage": 16.385542168675
},
{
"sport": "rugby",
"total_matches": 1,
"goals_scored": 53,
"home_win_percentage": 0,
"draw_percentage": 0
}
],
"source_url": "https://api.sofascore.com/api/v1/venue/624",
"fetched_at": "2026-10-07T14:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.venueResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.VenueResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.main_teams | array | No | ||||
| data.main_teams[].country | string | No | Spain | Country the team belongs to. | ||
| data.main_teams[].id | integer | No | 2817 | SofaScore team id. Use it with the team endpoints. | ||
| data.main_teams[].name | string | No | FC Barcelona | Full team name. | ||
| data.main_teams[].national | boolean | No | True for a national team. | |||
| data.main_teams[].short_name | string | No | Barcelona | Shortened team name. | ||
| data.main_teams[].slug | string | No | barcelona | URL slug of the team on SofaScore. | ||
| data.source_url | string | No | ||||
| data.sports | array | No | ||||
| data.sports[].draw_percentage | number | No | ||||
| data.sports[].goals_scored | number | No | ||||
| data.sports[].home_win_percentage | number | No | HomeWinPercentage and DrawPercentage are percentages (0 to 100). | |||
| data.sports[].sport | string | No | football | |||
| data.sports[].total_matches | integer | No | 415 | |||
| data.totals | sofascore.VenueTotals | No | ||||
| data.totals.avg_corner_kicks_per_game | number | No | ||||
| data.totals.avg_red_cards_per_game | number | No | ||||
| data.totals.away_team_goals_scored | number | No | ||||
| data.totals.away_team_wins_percentage | number | No | ||||
| data.totals.draws_percentage | number | No | ||||
| data.totals.home_team_goals_scored | number | No | ||||
| data.totals.home_team_wins_percentage | number | No | ||||
| data.totals.total_matches | integer | No | ||||
| data.venue | sofascore.VenueRecord | No | ||||
| data.venue.capacity | integer | No | 60704 | |||
| data.venue.city | string | No | London | |||
| data.venue.country | string | No | England | |||
| data.venue.hidden | boolean | No | Hidden is SofaScore's hidden flag. A hidden venue has no venue-wide match list (venue-events answers not found without tournament and season), but its matches are still listed per competition season. | |||
| data.venue.id | integer | No | 624 | |||
| data.venue.latitude | number | No | ||||
| data.venue.longitude | number | No | ||||
| data.venue.name | string | No | Emirates Stadium | |||
| data.venue.slug | string | No | emirates-stadium | |||
| data.venue.state | string | No | US-TX | |||
| 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/venue?id=624" \
-H "x-api-key: $CRAWLORA_API_KEY"