Season schedule
This tutorial will teach you how competitions are structured and how you can use this to your advantage. We will walk through different stages, groups and rounds together. Please visit our API references for a complete overview of the possible values of the stages attribute. Let’s get started with the definitions of rounds, groups and stages:
  • Rounds: represent the game-week the season is in. For example round 1.
  • Stages: represent the stage the season is in. For example: ‘regular season’, ‘semi-finals’.
  • Groups: represent the groups of the season. For example group A, group B etc...

What are rounds?

Most of the football competitions are played once a week. The majority of the competitions handles a double round-robin structure, meaning that every team will play matches until everyone has played against each other twice. Competitions have divided every match day into a specific round. This way, you can see exactly how many rounds are scheduled and which team plays against whom per round. Quite convenient, huh? We at Sportmonks have given every round a name and a unique round id. This will greatly help you with requesting data about the rounds. We’ll show you how the rounds are structured. For instance, imagine you want to know how many rounds are scheduled for the Scottish Premiership’s current season. We use the season by id endpoint.

Our request

Here are the details of the Scottish Premiership (league id: 501 and season id: 17141).
If you have followed our previous tutorials, you will know that the API returns a basic response by default. Let’s enrich our response by using the rounds include.
Request
Response
Field Description
1
https://soccer.sportmonks.com/api/v2.0/seasons/17141?api_token={API_TOKEN}&include=rounds
Copied!
1
{
2
"data": {
3
"id": 17141,
4
"name": "2020/2021",
5
"league_id": 501,
6
"is_current_season": true,
7
"current_round_id": 194976,
8
"current_stage_id": 77447501,
9
"rounds": {
10
"data": [
11
{
12
"id": 194968,
13
"name": 1,
14
"league_id": 501,
15
"season_id": 17141,
16
"stage_id": 77447501,
17
"start": "2020-08-01",
18
"end": "2020-08-03"
19
},
20
{
21
"id": 194969,
22
"name": 2,
23
"league_id": 501,
24
"season_id": 17141,
25
"stage_id": 77447501,
26
"start": "2020-08-08",
27
"end": "2020-08-09"
28
},
29
{
30
"id": 194970,
31
"name": 3,
32
"league_id": 501,
33
"season_id": 17141,
34
"stage_id": 77447501,
35
"start": "2020-08-11",
36
"end": "2020-08-12"
37
},
38
{
39
"id": 194971,
40
"name": 4,
41
"league_id": 501,
42
"season_id": 17141,
43
"stage_id": 77447501,
44
"start": "2020-08-15",
45
"end": "2020-08-16"
46
},
47
{
48
"id": 194972,
49
"name": 5,
50
"league_id": 501,
51
"season_id": 17141,
52
"stage_id": 77447501,
53
"start": "2020-08-22",
54
"end": "2020-08-23"
55
},
Copied!
Season Field Description
Field
Description
data
Opens an array of data you've requested
id
The unique season id
name
The name of the season
league_id
The unique league id the season belongs to
is_current_season
Indicates if the season is the current one. Possible values are "true" or "false"
current_round_id
The unique id of the current round
current_stage_id
The unique id of the current stage
Rounds Field Description
Field
Description
id
The unique id of the round
name
The name of the round
league_id
The unique league id the round belongs to
season_id
The unique season id the round belongs to
stage_id
The unique stage id the round belongs to
start
The start date of the round
end
The end date of the round
And just like that, you’ve successfully requested all the rounds including their ID of the Scottish Premiership 20/21 season! You can use these ids to request fixtures per round. However, you might’ve noticed that the API also returns a stage id. What exactly is this stage id?

What are stages?

Every competition has the main stage, which is often the regular season with the double round-robin structure. Teams that do well in the main stage get to advance to the next stage, which is the play-offs. Sounds confusing? Let’s take a look together at three examples: The English Premier League (league id: 8), the Scottish Premiership (league id: 501) and the UEFA Champions League (league id: 2). Just like with rounds, you can best request an overview of all the stages of one season with our season by id endpoint.

The English Premier League

Instead of rounds we are going to request all the stages of this season. Of course, you can also request both in the same request.
Request
Response
Field Description
1
https://soccer.sportmonks.com/api/v2.0/seasons/17420?api_token={API_TOKEN}&include=stages
Copied!
1
{
2
"data": {
3
"id": 17420,
4
"name": "2020/2021",
5
"league_id": 8,
6
"is_current_season": true,
7
"current_round_id": 201973,
8
"current_stage_id": 77448322,
9
"stages": {
10
"data": [
11
{
12
"id": 77448322,
13
"name": "Regular Season",
14
"type": "Group Stage",
15
"league_id": 8,
16
"season_id": 17420,
17
"sort_order": 1,
18
"has_standings": true
19
}
20
]
21
}
22
},
Copied!
Season Field Description
Field
Description
data
Opens an array of data you've requested
id
The unique season id
name
The name of the season
league_id
The unique league id the season belongs to
is_current_season
Indicates if the season is the current one. Possible values are "true" or "false"
current_round_id
The unique id of the current round
current_stage_id
The unique id of the current stage
Stages Field Description
Field
Description
id
The unique id of the stage
name
The name of the stage
type
Indicates what kind of type the stage is
league_id
The unique league id the stage belongs to
season_id
The unique season id the stage belongs to
sort_order
The order of the stages
has_standings
Indicates if the stage supports standings
You can see that there is one regular season, which is an indication that this is the ‘main’ stage of the competition. Want to know which team plays in the Champions League based on the standings? You can find this out by requesting the standings by season id.
For more detailed information, please refer to our standings tutorial.
Let’s take a look at another example.

The Scottish Premiership

Once again, we request the stages for the current season of the league we’re interested in:
Request
Response
1
https://soccer.sportmonks.com/api/v2.0/seasons/17141?api_token={API_TOKEN}&include=stages
Copied!
1
{
2
"data": {
3
"id": 17141,
4
"name": "2020/2021",
5
"league_id": 501,
6
"is_current_season": true,
7
"current_round_id": 194976,
8
"current_stage_id": 77447501,
9
"stages": {
10
"data": [
11
{
12
"id": 77447500,
13
"name": "2nd Phase",
14
"type": "Group Stage",
15
"league_id": 501,
16
"season_id": 17141,
17
"sort_order": 1,
18
"has_standings": false
19
},
20
{
21
"id": 77447501,
22
"name": "1st Phase",
23
"type": "Group Stage",
24
"league_id": 501,
25
"season_id": 17141,
26
"sort_order": -1,
27
"has_standings": true
28
}
29
]
30
}
Copied!
You can see that this season contains multiple phases and that it’s not one regular season. It has a first and second phase. You can see that the current stage id is the first phase. The second phase will start when the first one has ended.
We just looked at two domestic leagues. But how does a cup work?

International cup: UEFA Champions League

Request
Response
1
https://soccer.sportmonks.com/api/v2.0/seasons/17299?api_token={API_TOKEN}&include=stages
Copied!
1
{
2
"data": {
3
"id": 17299,
4
"name": "2020/2021",
5
"league_id": 2,
6
"is_current_season": true,
7
"current_round_id": 211702,
8
"current_stage_id": 77448760,
9
"stages": {
10
"data": [
11
{
12
"id": 77447933,
13
"name": "Final",
14
"type": "Knock Out",
15
"league_id": 2,
16
"season_id": 17299,
17
"sort_order": 11,
18
"has_standings": false
19
},
20
{
21
"id": 77447934,
22
"name": "Semi-finals",
23
"type": "Knock Out",
24
"league_id": 2,
25
"season_id": 17299,
26
"sort_order": 10,
27
"has_standings": false
28
},
29
{
30
"id": 77447935,
31
"name": "Quarter-finals",
32
"type": "Knock Out",
33
"league_id": 2,
34
"season_id": 17299,
35
"sort_order": 9,
36
"has_standings": false
37
},
38
{
39
"id": 77447936,
40
"name": "8th Finals",
41
"type": "Knock Out",
42
"league_id": 2,
43
"season_id": 17299,
44
"sort_order": 8,
45
"has_standings": false
46
},
47
{
48
"id": 77448760,
49
"name": "Group Stage",
50
"type": "Group Stage",
51
"league_id": 2,
52
"season_id": 17299,
53
"sort_order": 7,
54
"has_standings": true
55
},
56
{
57
"id": 77447937,
58
"name": "Play-offs",
59
"type": "Qualifying",
60
"league_id": 2,
61
"season_id": 17299,
62
"sort_order": 6,
63
"has_standings": false
64
},
65
{
66
"id": 77447938,
67
"name": "3rd Qualifying Round",
68
"type": "Qualifying",
69
"league_id": 2,
70
"season_id": 17299,
71
"sort_order": 5,
72
"has_standings": false
73
},
74
{
75
"id": 77447939,
76
"name": "2nd Qualifying Round",
77
"type": "Qualifying",
78
"league_id": 2,
79
"season_id": 17299,
80
"sort_order": 4,
81
"has_standings": false
82
},
83
{
84
"id": 77447940,
85
"name": "1st Qualifying Round",
86
"type": "Qualifying",
87
"league_id": 2,
88
"season_id": 17299,
89
"sort_order": 3,
90
"has_standings": false
91
},
92
{
93
"id": 77447941,
94
"name": "Preliminary Round - Final",
95
"type": "Knock Out",
96
"league_id": 2,
97
"season_id": 17299,
98
"sort_order": 2,
99
"has_standings": false
100
},
101
{
102
"id": 77447942,
103
"name": "Preliminary Round - Semi-finals",
104
"type": "Knock Out",
105
"league_id": 2,
106
"season_id": 17299,
107
"sort_order": 1,
108
"has_standings": false
109
}
Copied!
This season has a lot of different stages. First, teams need to qualify via the preliminary stages for the qualifying stages. Once they’ve placed themselves for the qualifying rounds, they will need to progress through the play-offs before entering the group stage. As you can see, the group stage is the current stage. Based on the group stages’ standings, some teams will progress to the next stage: 8th finals and some will be knocked out. It’s crucial that you read the response properly to avoid confusion.

What are groups?

We just mentioned groups briefly. Now let’s have a look at how our API shows you this data. We will continue with our example of the Champions League. Just like the stages and rounds, you can use groups as an include on the season by id endpoint:
Request
Response
Field Description
1
https://soccer.sportmonks.com/api/v2.0/seasons/17299?api_token={API_TOKEN}&include=groups
Copied!
1
{
2
"data": {
3
"id": 17299,
4
"name": "2020/2021",
5
"league_id": 2,
6
"is_current_season": true,
7
"current_round_id": 211702,
8
"current_stage_id": 77448760,
9
"groups": {
10
"data": [
11
{
12
"id": 244365,
13
"name": "Group A",
14
"league_id": 2,
15
"season_id": 17299,
16
"round_id": 211702,
17
"round_name": 1,
18
"stage_id": 77448760,
19
"stage_name": "Group Stage",
20
"resource": "group"
21
},
22
{
23
"id": 244366,
24
"name": "Group B",
25
"league_id": 2,
26
"season_id": 17299,
27
"round_id": 211702,
28
"round_name": 1,
29
"stage_id": 77448760,
30
"stage_name": "Group Stage",
31
"resource": "group"
32
},
33
{
34
"id": 244367,
35
"name": "Group C",
36
"league_id": 2,
37
"season_id": 17299,
38
"round_id": 211702,
39
"round_name": 1,
40
"stage_id": 77448760,
41
"stage_name": "Group Stage",
42
"resource": "group"
43
},
44
{
45
"id": 244368,
46
"name": "Group D",
47
"league_id": 2,
48
"season_id": 17299,
49
"round_id": 211702,
50
"round_name": 1,
51
"stage_id": 77448760,
52
"stage_name": "Group Stage",
53
"resource": "group"
54
},
55
{
56
"id": 244369,
57
"name": "Group E",
58
"league_id": 2,
59
"season_id": 17299,
60
"round_id": 211702,
61
"round_name": 1,
62
"stage_id": 77448760,
63
"stage_name": "Group Stage",
64
"resource": "group"
65
},
66
{
67
"id": 244370,
68
"name": "Group F",
69
"league_id": 2,
70
"season_id": 17299,
71
"round_id": 211702,
72
"round_name": 1,
73
"stage_id": 77448760,
74
"stage_name": "Group Stage",
75
"resource": "group"
76
},
77
{
78
"id": 244371,
79
"name": "Group G",
80
"league_id": 2,
81
"season_id": 17299,
82
"round_id": 211702,
83
"round_name": 1,
84
"stage_id": 77448760,
85
"stage_name": "Group Stage",
86
"resource": "group"
87
},
88
{
89
"id": 244372,
90
"name": "Group H",
91
"league_id": 2,
92
"season_id": 17299,
93
"round_id": 211702,
94
"round_name": 1,
95
"stage_id": 77448760,
96
"stage_name": "Group Stage",
97
"resource": "group"
98
}
99
]
100
}
101
Copied!
Group Field Description
Field
Description
id
The unique id of the round
name
The name of the round
league_id
The unique league id the round belongs to
season_id
The unique season id the round belongs to
round_id
The unique id of the round
round_name
The name of the round
stage_id
The unique id of the stage
stage_name
The name of the stage
resource
Indicates to which stage the group is linked
Let’s evaluate the response. You can see eight groups ( A – H ). The field description is available in the third tab. Just like with the stage and round ids, you can use the group ids as a filter on many other endpoints.

Conclusion

Armed with information about rounds, groups and stages of a season, you’re now capable of filtering your requests. For example, the below request will give us the top scorers of the group stage in the UEFA Champions League. Please refer to our topscorers tutorial for more information.
1
https://soccer.sportmonks.com/api/v2.0/seasons/17299?api_token={API_TOKEN}&include=goalscorers.player&stage_ids=77448760
Copied!