SofaScore API endpoint
Returns a tennis player's best round at each grand slam (Australian Open, Roland Garros, Wimbledon and US Open) for the last five editions: per edition the `year`, the `season_id`, the best `round` reached and whether the player won it (`winner`). A year without a `round` means no result is recorded for that edition. `id` is the SofaScore team id of a tennis player (tennis players are teams in SofaScore); get it from search or rankings. Returns 404 for ids that are not tennis players.
/sofascore/tennis-player-grand-slam-resultsQuery parameters:
id: required. Numeric SofaScore team id of a tennis player, e.g. 14882. Tennis players are teams in SofaScore; get the id from the search or rankings endpoint.Notable response behavior:
tournaments holds the Australian Open, Roland Garros, Wimbledon and US Open (the men's or the women's editions, depending on the player), each with a tournament_id (a unique-tournament id) and five years. Each year has the season_id, the best round reached, winner (true for the champion) and the is_live / is_upcoming flags.round means SofaScore records no result for that edition (the player did not take part).404 for ids that are not tennis players (a football club id was 404 when checked).| Field | Filled in, of 4 checked | Values in the sample |
|---|---|---|
| tournament_id | 4 | |
| name | 4 | “Australian Open, Men” and 3 other values |
| years | 4 | median 5 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Numeric SofaScore team id of a tennis player | 14882 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/tennis-player-grand-slam-results?id=14882" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"team_id": 14882,
"source_url": "https://api.sofascore.com/api/v1/team/14882/grand-slam/best-results",
"fetched_at": "2026-07-08T00:00:00Z",
"tournaments": [
{
"tournament_id": 2363,
"name": "Australian Open, Men",
"years": [
{
"year": 2022,
"season_id": 40339,
"winner": false,
"is_live": false,
"is_upcoming": false
},
{
"year": 2023,
"season_id": 48186,
"round": "Final",
"winner": true,
"is_live": false,
"is_upcoming": false
},
{
"year": 2024,
"season_id": 55443,
"round": "Semifinals",
"winner": false,
"is_live": false,
"is_upcoming": false
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.tennisGrandSlamResultsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.TennisGrandSlamResultsResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.source_url | string | No | ||||
| data.team_id | integer | No | 14882 | |||
| data.tournaments | array | No | ||||
| data.tournaments[].name | string | No | Australian Open, Men | |||
| data.tournaments[].tournament_id | integer | No | 2363 | |||
| data.tournaments[].years | array | No | ||||
| data.tournaments[].years[].is_live | boolean | No | ||||
| data.tournaments[].years[].is_upcoming | boolean | No | ||||
| data.tournaments[].years[].round | string | No | Final | |||
| data.tournaments[].years[].season_id | integer | No | 48186 | |||
| data.tournaments[].years[].winner | boolean | No | ||||
| data.tournaments[].years[].year | integer | No | 2023 | |||
| 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/tennis-player-grand-slam-results?id=14882" \
-H "x-api-key: $CRAWLORA_API_KEY"