SofaScore API endpoint
Returns the children of a stage in upstream order. For a season it is the race calendar: every event with status (`finished`, `notstarted`, `canceled`), dates, round, circuit and winner. For an event it is the sessions: practices, qualifying, sprint qualifying, sprint and race for a Grand Prix, the numbered stages of a cycling race or rally. Qualifying and practice sessions list their `parts`, and the part ids carry the timing results (the parent session of a split qualifying has no standings of its own). Use a child `id` with stage for detail, stage-standings for its results and stage-driver-performance for race progress. A race, session or cycling stage has no children and returns 404, as does an unknown id.
/sofascore/stage-substagesQuery parameters:
id: required. Numeric SofaScore stage id of a season (for example 214140) or an event (for example 214253).Notable response behavior:
status, dates, info.round, circuit and winner, including canceled and notstarted events. An event returns its sessions: Practice 1 to 3, Qualification, Sprint Qualifying, Sprint and Race for Formula 1, the numbered Stage entries of a cycling race or rally.parts. The parent session of a split qualifying (MotoGP Q1 and Q2) has no results of its own: pass a part id to sofascore/stage-standings.stage-seasons), season, event, session.type.Example response (shortened):
{
"code": 200,
"msg": "OK",
"data": {
"stage_id": 214253,
"count": 3,
"source_url": "https://api.sofascore.com/api/v1/stage/214253/substages",
"fetched_at": "2026-10-07T14:00:00Z",
"stages": [
{
"id": 214258,
"name": "Grand Prix",
"slug": "grand-prix",
"type": {
"id": 6,
"name": "Race"
},
"status": {
"type": "finished",
"description": "Finished"
},
"year": "2026",
"start_timestamp": 1790420400,
"start_time": "2026-09-26T11:00:00Z",
"season_name": "Formula 1 2026",
"country": "Azerbaijan",
"country_code": "AZ",
"competition": {
"id": 40,
"name": "Formula 1",
"slug": "formula-1",
"sport": "motorsport",
"category_id": 36,
"category_name": "Formula 1"
},
"parent": {
"id": 214253,
"name": "Azerbaijan GP",
"slug": "azerbaijan-gp",
"start_timestamp": 1790239908
},
"info": {
"circuit": "Baku City Circuit",
"circuit_country": "Azerbaijan",
"laps": 51,
"laps_completed": 51,
"race_distance_m": 306049,
"circuit_length_m": 6003,
"weather": "sunny",
"track_condition": "Dry",
"air_temperature": 26.5,
"track_temperature": 40.1,
"humidity": 50.4,
"lap_record": "1:44.916",
"safety_car": true
},
"winner": {
"id": 271315,
"name": "George Russell",
"short_name": "G. Russell",
"code": "RUS",
"slug": "russell-george",
"kind": "individual",
"country": "United Kingdom",
"country_code": "GB",
"team": {
"id": 214910,
"name": "Mercedes",
"short_name": "Mercedes",
"code": "MER",
"country": "Germany"
}
}
}
]
}
}
| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| id | 5 | |
| name | 5 | “Practice 1” and 4 other values |
| slug | 5 | |
| type | 5 | |
| status | 5 | |
| year | 5 | 2,026 |
| sequence | 3 | 1 to 3, median 2 |
| start_timestamp | 5 | 2026-09-24 to 2026-09-26 |
| start_time | 5 | 2026-09-24 to 2026-09-26 |
| season_name | 5 | Formula 1 2026 in all 5 |
| country | 5 | Azerbaijan in all 5 |
| country_code | 5 | |
| competition | 5 | |
| parent | 5 | |
| info | 5 | |
| winner | 5 | |
| parts | 4 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Numeric SofaScore stage id of a season or an event | 214253 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/stage-substages?id=214253" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"stage_id": 214253,
"count": 3,
"source_url": "https://api.sofascore.com/api/v1/stage/214253/substages",
"fetched_at": "2026-10-07T14:00:00Z",
"stages": [
{
"id": 214258,
"name": "Grand Prix",
"slug": "grand-prix",
"type": {
"id": 6,
"name": "Race"
},
"status": {
"type": "finished",
"description": "Finished"
},
"year": "2026",
"start_timestamp": 1790420400,
"start_time": "2026-09-26T11:00:00Z",
"season_name": "Formula 1 2026",
"country": "Azerbaijan",
"country_code": "AZ",
"competition": {
"id": 40,
"name": "Formula 1",
"slug": "formula-1",
"sport": "motorsport",
"category_id": 36,
"category_name": "Formula 1"
},
"parent": {
"id": 214253,
"name": "Azerbaijan GP",
"slug": "azerbaijan-gp",
"start_timestamp": 1790239908
},
"info": {
"circuit": "Baku City Circuit",
"circuit_country": "Azerbaijan",
"laps": 51,
"laps_completed": 51,
"race_distance_m": 306049,
"circuit_length_m": 6003,
"weather": "sunny",
"track_condition": "Dry",
"air_temperature": 26.5,
"track_temperature": 40.1,
"humidity": 50.4,
"lap_record": "1:44.916",
"safety_car": true
},
"winner": {
"id": 271315,
"name": "George Russell",
"short_name": "G. Russell",
"code": "RUS",
"slug": "russell-george",
"kind": "individual",
"country": "United Kingdom",
"country_code": "GB",
"team": {
"id": 214910,
"name": "Mercedes",
"short_name": "Mercedes",
"code": "MER",
"country": "Germany"
}
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.stageSubstagesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.StageSubstagesResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.source_url | string | No | ||||
| data.stage_id | integer | No | 214253 | |||
| data.stages | array | No | Stage record, 103 fields: competition, country, country_code, end_timestamp, id, info, name, on_date, parent, parts, season_name, sequence and 9 more. Described under SofaScore Stage API. | |||
| 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/stage-substages?id=214253" \
-H "x-api-key: $CRAWLORA_API_KEY"