SofaScore API endpoint
Returns SofaScore's short list (up to 10) of the most followed competitions of a sport that carry one feature. The `feature` enum accepts `cuptree` (knockout tree, for tournament-cuptree), `standings` (league table), `totw` (team of the week) and `power_rankings`. The `sport` enum accepts `american-football`, `aussie-rules`, `badminton`, `bandy`, `baseball`, `basketball`, `beach-volley`, `cricket`, `darts`, `esports`, `floorball`, `football`, `futsal`, `handball`, `ice-hockey`, `minifootball`, `rugby`, `snooker`, `table-tennis`, `tennis`, `volleyball` and `waterpolo` (`mma` and `padel` are not supported). The list is fixed by SofaScore and cannot be paged or searched; a sport with no such competition returns an empty list. Use search-typed with `type` `unique_tournaments` to find other competitions.
/sofascore/tournaments-with-featureReturns SofaScore's short list (up to 10) of the most followed competitions of a sport that carry one feature, with the competition id, name, category and follower count. Use it to find the id for sofascore/tournament-cuptree and the other competition endpoints.
Query parameters:
feature: required enum. Allowed values: cuptree (the competition has a knockout tree, see sofascore/tournament-cuptree), standings (a league table), totw (a team of the week), power_rankings (power rankings).sport: required enum. Allowed values: american-football, aussie-rules, badminton, bandy, baseball, basketball, beach-volley, cricket, darts, esports, floorball, football, futsal, handball, ice-hockey, minifootball, rugby, snooker, table-tennis, tennis, volleyball, waterpolo. mma and padel are not accepted (see below).Notable response behavior:
page and q are ignored upstream), so it is a starting point rather than a catalogue: use sofascore/search-typed with type=unique_tournaments to find any other competition.tournaments list with a 200 (cricket has no tree, tennis has no team of the week, basketball has no power rankings).sport are dropped. For mma and padel every entry belonged to another sport (tennis and basketball competitions), so those two values are rejected with a 400 instead of returning misleading data.feature or sport is rejected before any upstream request. Every feature was verified on football; the other sports were verified for the cuptree feature (all 22 sports) and for standings on basketball, tennis and ice hockey.Example response (shortened):
{
"code": 200,
"msg": "OK",
"data": {
"feature": "cuptree",
"sport": "football",
"count": 10,
"source_url": "https://api.sofascore.com/api/v1/search/unique-tournaments-with-cuptree/football",
"fetched_at": "2026-10-07T14:00:00Z",
"tournaments": [
{ "id": 16, "name": "FIFA World Cup", "slug": "world-championship", "sport": "football", "category_id": 1468, "category_name": "World", "user_count": 1950147 },
{ "id": 7, "name": "UEFA Champions League", "slug": "uefa-champions-league", "sport": "football", "category_id": 1465, "category_name": "Europe", "user_count": 1144652 }
]
}
}
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| name | 10 | “FIFA World Cup” and 9 other values |
| slug | 10 | |
| sport | 10 | football in all 10 |
| category_id | 10 | |
| category_name | 10 | Europe (5), World (2), South America (2) and 1 more |
| user_count | 10 | 196,314 to 1,937,904, median 377,796 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| feature | string | Yes | Competition feature Allowed values: cuptree, standings, totw, power_rankings. | cuptree | |
| sport | string | Yes | Sport key Allowed values: american-football, aussie-rules, badminton, bandy, baseball, basketball, beach-volley, cricket, darts, esports, floorball, football, futsal, handball, ice-hockey, minifootball, rugby, snooker, table-tennis, tennis, volleyball, waterpolo. | football | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/tournaments-with-feature?feature=cuptree&sport=football" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"feature": "cuptree",
"sport": "football",
"count": 10,
"source_url": "https://api.sofascore.com/api/v1/search/unique-tournaments-with-cuptree/football",
"fetched_at": "2026-10-07T14:00:00Z",
"tournaments": [
{
"id": 16,
"name": "FIFA World Cup",
"slug": "world-championship",
"sport": "football",
"category_id": 1468,
"category_name": "World",
"user_count": 1950147
},
{
"id": 7,
"name": "UEFA Champions League",
"slug": "uefa-champions-league",
"sport": "football",
"category_id": 1465,
"category_name": "Europe",
"user_count": 1144652
}
]
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.tournamentsWithFeatureResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.TournamentsWithFeatureResponse | No | ||||
| data.count | integer | No | ||||
| data.feature | string | No | cuptree | |||
| data.fetched_at | string | No | ||||
| data.source_url | string | No | ||||
| data.sport | string | No | football | |||
| data.tournaments | array | No | ||||
| data.tournaments[].category_id | integer | No | 1465 | |||
| data.tournaments[].category_name | string | No | Europe | |||
| data.tournaments[].id | integer | No | 7 | |||
| data.tournaments[].name | string | No | UEFA Champions League | |||
| data.tournaments[].slug | string | No | uefa-champions-league | |||
| data.tournaments[].sport | string | No | football | |||
| data.tournaments[].user_count | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/tournaments-with-feature?feature=cuptree&sport=football" \
-H "x-api-key: $CRAWLORA_API_KEY"