League standings
Last updated
Last updated
Standings, also known as rankings, show the positions of the teams competing in a season. Standings show the total number of games played, won, lost, the number of goals for and against and the number of points they have accumulated.
So, how do you request all of this data yourself? We’re going to show you how! In this tutorial, we will first show you how to request standings for the English Premier League season 20/21 (season id: 17420 ).
Afterward, we’ll go more in-depth with an example about the Champions League’s standings. We’ll then show you how to request standings for groups and stages. And finally, how to request live standings!
Let’s get started.
The English Premier League is an example of a domestic league, similar to the Italian Serie A, German Bundesliga, etc.
Standings can easily be requested with the standings by season id endpoint.
In order to request the standings of the English Premier League, we need the following things:
A valid API token
Access to the English Premier League (league id: 8) in your paid plan
The season id of the English Premier League season 20/21 (season id: 17420 ).
This will result in the following request and response.
https://soccer.sportmonks.com/api/v2.0/standings/season/17420?api_token={API_TOKEN}
{
"data": [
{
"id": 77448322,
"name": "Regular Season",
"league_id": 8,
"season_id": 17420,
"round_id": 201972,
"round_name": 10,
"type": "Group Stage",
"stage_id": 77448322,
"stage_name": "Regular Season",
"resource": "stage",
"standings": {
"data": [
{
"position": 1,
"team_id": 6,
"team_name": "Tottenham Hotspur",
"round_id": 201972,
"round_name": 10,
"group_id": null,
"group_name": null,
"overall": {
"games_played": 10,
"won": 6,
"draw": 3,
"lost": 1,
"goals_scored": 21,
"goals_against": 9
},
"home": {
"games_played": 5,
"won": 2,
"draw": 2,
"lost": 1,
"goals_scored": 8,
"goals_against": 6
},
"away": {
"games_played": 5,
"won": 4,
"draw": 1,
"lost": 0,
"goals_scored": 13,
"goals_against": 3
},
"total": {
"goal_difference": "12",
"points": 21
},
"result": "UEFA Champions League",
"points": 21,
"recent_form": "WWWWD",
"status": null
},
{
"position": 2,
"team_id": 8,
"team_name": "Liverpool",
"round_id": 201972,
"round_name": 10,
"group_id": null,
"group_name": null,
"overall": {
"games_played": 10,
"won": 6,
"draw": 3,
"lost": 1,
"goals_scored": 22,
"goals_against": 17
},
"home": {
"games_played": 5,
"won": 5,
"draw": 0,
"lost": 0,
"goals_scored": 14,
"goals_against": 6
},
"away": {
"games_played": 5,
"won": 1,
"draw": 3,
"lost": 1,
"goals_scored": 8,
"goals_against": 11
},
"total": {
"goal_difference": "5",
"points": 21
},
"result": "UEFA Champions League",
"points": 21,
"recent_form": "WWDWD",
"status": null
},
{
"position": 3,
"team_id": 18,
"team_name": "Chelsea",
"round_id": 201972,
"round_name": 10,
"group_id": null,
"group_name": null,
"overall": {
"games_played": 10,
"won": 5,
"draw": 4,
"lost": 1,
"goals_scored": 22,
"goals_against": 10
},
"home": {
"games_played": 5,
"won": 2,
"draw": 2,
"lost": 1,
"goals_scored": 11,
"goals_against": 6
},
"away": {
"games_played": 5,
"won": 3,
"draw": 2,
"lost": 0,
"goals_scored": 11,
"goals_against": 4
},
"total": {
"goal_difference": "12",
"points": 19
},
"result": "UEFA Champions League",
"points": 19,
"recent_form": "DWWWD",
"status": null
},
{
"position": 4,
"team_id": 42,
"team_name": "Leicester City",
"round_id": 201972,
"round_name": 10,
"group_id": null,
"group_name": null,
"overall": {
"games_played": 10,
"won": 6,
"draw": 0,
"lost": 4,
"goals_scored": 19,
"goals_against": 14
},
"home": {
"games_played": 5,
"won": 2,
"draw": 0,
"lost": 3,
"goals_scored": 6,
"goals_against": 8
},
"away": {
"games_played": 5,
"won": 4,
"draw": 0,
"lost": 1,
"goals_scored": 13,
"goals_against": 6
},
"total": {
"goal_difference": "5",
"points": 18
},
"result": "UEFA Champions League",
"points": 18,
"recent_form": "WWWLL",
"status": null
},
Season Field Description
Standings Field Description
Most of the data speaks for itself. Just like in our other tutorials, we've added a field description overview in the third tab.
However, a field that needs some further explanation is result
.
This field will contain the standing rules of a season. Each season has its own standing rules. The number one at the end of the season will be crowned champions and “earns” something.
For example, the winner of the English Premier League will earn the right to compete in a different competition, such as the Champions League or Europa League.
Or, in case of finishing last, the team will relegate to a lower division. You can find the possible outcomes in our API references.
You can enrich your request with includes. But beware, the includes on our standings by season id endpoint requires additional action. Namely, you will need to prefix the include.
What is prefixing exactly? With nested includes, you add the additional information at the end of the include. i.e., lineup.player
With prefixing, it’s the other way around. You will need to prefix every available include with standings.
So, for example, if you want to have additional team information, you will need to prefix teams with standings like this: standings.team
https://soccer.sportmonks.com/api/v2.0/standings/season/17420?api_token={API_TOKEN}&include=standings.team
{
"data": [
{
"id": 77448322,
"name": "Regular Season",
"league_id": 8,
"season_id": 17420,
"round_id": 201972,
"round_name": 10,
"type": "Group Stage",
"stage_id": 77448322,
"stage_name": "Regular Season",
"resource": "stage",
"standings": {
"data": [
{
"position": 1,
"team_id": 6,
"team_name": "Tottenham Hotspur",
"round_id": 201972,
"round_name": 10,
"group_id": null,
"group_name": null,
"overall": {
"games_played": 10,
"won": 6,
"draw": 3,
"lost": 1,
"goals_scored": 21,
"goals_against": 9
},
"home": {
"games_played": 5,
"won": 2,
"draw": 2,
"lost": 1,
"goals_scored": 8,
"goals_against": 6
},
"away": {
"games_played": 5,
"won": 4,
"draw": 1,
"lost": 0,
"goals_scored": 13,
"goals_against": 3
},
"total": {
"goal_difference": "12",
"points": 21
},
"result": "UEFA Champions League",
"points": 21,
"recent_form": "WWWWD",
"status": null,
"team": {
"data": {
"id": 6,
"legacy_id": 148,
"name": "Tottenham Hotspur",
"short_code": "TOT",
"twitter": "@SpursOfficial",
"country_id": 462,
"national_team": false,
"founded": 1882,
"logo_path": "https://cdn.sportmonks.com/images//soccer/teams/6/6.png",
"venue_id": 281313,
"current_season_id": 17420
}
}
}
For ‘normal’ domestic Leagues, the response format is different compared to Cups.
If you have Cups and ‘normal’ leagues in your plan, make sure to check out the response correctly. Let’s look at one of the most requested leagues: the Champions League 2020/2021 season (league id: 2 and season id: 17299).
You can use the same endpoint as with a standard league. However, the response will be very different.
https://soccer.sportmonks.com/api/v2.0/standings/season/17299?api_token={API_TOKEN}
{
"data": [
{
"id": 244365,
"name": "Group A",
"league_id": 2,
"season_id": 17299,
"round_id": 211702,
"round_name": 1,
"stage_id": 77448760,
"stage_name": "Group Stage",
"resource": "group",
"standings": {
"data": [
{
"position": 1,
"team_id": 503,
"team_name": "Bayern München",
"round_id": 211702,
"round_name": 1,
"group_id": 244365,
"group_name": "Group A",
"overall": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 4,
"goals_against": 0
},
"home": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 4,
"goals_against": 0
},
"away": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"total": {
"goal_difference": "4",
"points": 3
},
"result": "8th Finals",
"points": 3,
"recent_form": "W",
"status": null
},
{
"position": 2,
"team_id": 490,
"team_name": "Lokomotiv Moskva",
"round_id": 211702,
"round_name": 1,
"group_id": 244365,
"group_name": "Group A",
"overall": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"home": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"away": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"total": {
"goal_difference": "0",
"points": 1
},
"result": "8th Finals",
"points": 1,
"recent_form": "D",
"status": null
},
{
"position": 3,
"team_id": 49,
"team_name": "Salzburg",
"round_id": 211702,
"round_name": 1,
"group_id": 244365,
"group_name": "Group A",
"overall": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"home": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"away": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"total": {
"goal_difference": "0",
"points": 1
},
"result": "UEFA Europa League",
"points": 1,
"recent_form": "D",
"status": null
},
{
"position": 4,
"team_id": 7980,
"team_name": "Atlético Madrid",
"round_id": 211702,
"round_name": 1,
"group_id": 244365,
"group_name": "Group A",
"overall": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 0,
"goals_against": 4
},
"home": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"away": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 0,
"goals_against": 4
},
"total": {
"goal_difference": "-4",
"points": 0
},
"result": null,
"points": 0,
"recent_form": "L",
"status": null
}
]
}
},
{
"id": 244366,
"name": "Group B",
"league_id": 2,
"season_id": 17299,
"round_id": 211702,
"round_name": 1,
"stage_id": 77448760,
"stage_name": "Group Stage",
"resource": "group",
"standings": {
"data": [
{
"position": 1,
"team_id": 621,
"team_name": "Shakhtar Donetsk",
"round_id": 211702,
"round_name": 1,
"group_id": 244366,
"group_name": "Group B",
"overall": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 3,
"goals_against": 2
},
"home": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"away": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 3,
"goals_against": 2
},
"total": {
"goal_difference": "1",
"points": 3
},
"result": "8th Finals",
"points": 3,
"recent_form": "W",
"status": null
},
{
"position": 2,
"team_id": 683,
"team_name": "Borussia M'gladbach",
"round_id": 211702,
"round_name": 1,
"group_id": 244366,
"group_name": "Group B",
"overall": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"home": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"away": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"total": {
"goal_difference": "0",
"points": 1
},
"result": "8th Finals",
"points": 1,
"recent_form": "D",
"status": null
},
{
"position": 3,
"team_id": 2930,
"team_name": "Inter",
"round_id": 211702,
"round_name": 1,
"group_id": 244366,
"group_name": "Group B",
"overall": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"home": {
"games_played": 1,
"won": 0,
"draw": 1,
"lost": 0,
"goals_scored": 2,
"goals_against": 2
},
"away": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"total": {
"goal_difference": "0",
"points": 1
},
"result": "UEFA Europa League",
"points": 1,
"recent_form": "D",
"status": null
},
{
"position": 4,
"team_id": 3468,
"team_name": "Real Madrid",
"round_id": 211702,
"round_name": 1,
"group_id": 244366,
"group_name": "Group B",
"overall": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 2,
"goals_against": 3
},
"home": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 2,
"goals_against": 3
},
"away": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"total": {
"goal_difference": "-1",
"points": 0
},
"result": null,
"points": 0,
"recent_form": "L",
"status": null
}
]
}
},
Season Field Description
Standings Field Description
As you can see, the standings are grouped by ... groups!
We can’t stress this enough. It’s paramount that you read the response correctly.
Due to our unique group ids, you can also request the specific groups you’re interested in with the group_ids
parameter.
Let’s say you only want the standings of Group C. You can add the group_ids
parameter with the group id of Group C (244367) to the request. You can also request multiple groups by separating them with a comma.
https://soccer.sportmonks.com/api/v2.0/standings/season/17299?api_token={API_TOKEN}&group_ids=244367
{
"data": [
{
"id": 244367,
"name": "Group C",
"league_id": 2,
"season_id": 17299,
"round_id": 211702,
"round_name": 1,
"stage_id": 77448760,
"stage_name": "Group Stage",
"resource": "group",
"standings": {
"data": [
{
"position": 1,
"team_id": 9,
"team_name": "Manchester City",
"round_id": 211702,
"round_name": 1,
"group_id": 244367,
"group_name": "Group C",
"overall": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 3,
"goals_against": 1
},
"home": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 3,
"goals_against": 1
},
"away": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"total": {
"goal_difference": "2",
"points": 3
},
"result": "8th Finals",
"points": 3,
"recent_form": "W",
"status": null
},
{
"position": 2,
"team_id": 602,
"team_name": "Olympiakos Piraeus",
"round_id": 211702,
"round_name": 1,
"group_id": 244367,
"group_name": "Group C",
"overall": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 1,
"goals_against": 0
},
"home": {
"games_played": 1,
"won": 1,
"draw": 0,
"lost": 0,
"goals_scored": 1,
"goals_against": 0
},
"away": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"total": {
"goal_difference": "1",
"points": 3
},
"result": "8th Finals",
"points": 3,
"recent_form": "W",
"status": null
},
{
"position": 3,
"team_id": 44,
"team_name": "Olympique Marseille",
"round_id": 211702,
"round_name": 1,
"group_id": 244367,
"group_name": "Group C",
"overall": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 0,
"goals_against": 1
},
"home": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"away": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 0,
"goals_against": 1
},
"total": {
"goal_difference": "-1",
"points": 0
},
"result": "UEFA Europa League",
"points": 0,
"recent_form": "L",
"status": null
},
{
"position": 4,
"team_id": 652,
"team_name": "Porto",
"round_id": 211702,
"round_name": 1,
"group_id": 244367,
"group_name": "Group C",
"overall": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 1,
"goals_against": 3
},
"home": {
"games_played": 0,
"won": 0,
"draw": 0,
"lost": 0,
"goals_scored": 0,
"goals_against": 0
},
"away": {
"games_played": 1,
"won": 0,
"draw": 0,
"lost": 1,
"goals_scored": 1,
"goals_against": 3
},
"total": {
"goal_difference": "-2",
"points": 0
},
"result": null,
"points": 0,
"recent_form": "L",
"status": null
}
]
}
As mentioned multiple times before, it's really important to check the API response carefully. The standings response of a particular season can be different compared to another season.
For example, the EURO U21 tournament has another season structure compared to the UEFA Champions League. This will result in different structured API response when you request the standings.
https://soccer.sportmonks.com/api/v2.0/standings/season/15717?api_token={API_TOKEN}
{
"data": [
{
"id": 77442385,
"name": "Qualifying Round",
"league_id": 1327,
"season_id": 15717,
"round_id": 163461,
"round_name": 1,
"type": "Qualifying",
"stage_id": 77442385,
"stage_name": "Qualifying Round",
"resource": "stage",
"standings": {
"data": [
{
"id": 224954,
"name": "Group 1",
"league_id": 1327,
"season_id": 15717,
"round_id": 163461,
"round_name": 1,
"stage_id": 77442385,
"stage_name": "Qualifying Round",
"resource": "group",
"standings": {
"data": [
{
"position": 1,
"team_id": 60073,
"team_name": "Italy U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224954,
"group_name": "Group 1",
"overall": {
"games_played": 10,
"won": 8,
"draw": 1,
"lost": 1,
"goals_scored": 27,
"goals_against": 5
},
"home": {
"games_played": 5,
"won": 5,
"draw": 0,
"lost": 0,
"goals_scored": 20,
"goals_against": 1
},
"away": {
"games_played": 5,
"won": 3,
"draw": 1,
"lost": 1,
"goals_scored": 7,
"goals_against": 4
},
"total": {
"goal_difference": "22",
"points": 25
},
"result": "Possible Final",
"points": 25,
"recent_form": "LWWWW",
"status": null
},
{
"position": 2,
"team_id": 75896,
"team_name": "Iceland U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224954,
"group_name": "Group 1",
"overall": {
"games_played": 10,
"won": 7,
"draw": 0,
"lost": 3,
"goals_scored": 19,
"goals_against": 12
},
"home": {
"games_played": 5,
"won": 4,
"draw": 0,
"lost": 1,
"goals_scored": 12,
"goals_against": 3
},
"away": {
"games_played": 5,
"won": 3,
"draw": 0,
"lost": 2,
"goals_scored": 7,
"goals_against": 9
},
"total": {
"goal_difference": "7",
"points": 21
},
"result": "Possible Final Tournament",
"points": 21,
"recent_form": "WWLWW",
"status": null
},
{
"position": 3,
"team_id": 133374,
"team_name": "Republic of Ireland U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224954,
"group_name": "Group 1",
"overall": {
"games_played": 10,
"won": 6,
"draw": 1,
"lost": 3,
"goals_scored": 15,
"goals_against": 8
},
"home": {
"games_played": 5,
"won": 3,
"draw": 1,
"lost": 1,
"goals_scored": 9,
"goals_against": 3
},
"away": {
"games_played": 5,
"won": 3,
"draw": 0,
"lost": 2,
"goals_scored": 6,
"goals_against": 5
},
"total": {
"goal_difference": "7",
"points": 19
},
"result": null,
"points": 19,
"recent_form": "WWLLW",
"status": null
},
{
"position": 4,
"team_id": 60052,
"team_name": "Sweden U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224954,
"group_name": "Group 1",
"overall": {
"games_played": 10,
"won": 6,
"draw": 0,
"lost": 4,
"goals_scored": 31,
"goals_against": 12
},
"home": {
"games_played": 5,
"won": 4,
"draw": 0,
"lost": 1,
"goals_scored": 23,
"goals_against": 3
},
"away": {
"games_played": 5,
"won": 2,
"draw": 0,
"lost": 3,
"goals_scored": 8,
"goals_against": 9
},
"total": {
"goal_difference": "19",
"points": 18
},
"result": null,
"points": 18,
"recent_form": "WWWWL",
"status": null
},
{
"position": 5,
"team_id": 132967,
"team_name": "Luxembourg U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224954,
"group_name": "Group 1",
"overall": {
"games_played": 10,
"won": 1,
"draw": 0,
"lost": 9,
"goals_scored": 3,
"goals_against": 29
},
"home": {
"games_played": 5,
"won": 1,
"draw": 0,
"lost": 4,
"goals_scored": 3,
"goals_against": 12
},
"away": {
"games_played": 5,
"won": 0,
"draw": 0,
"lost": 5,
"goals_scored": 0,
"goals_against": 17
},
"total": {
"goal_difference": "-26",
"points": 3
},
"result": null,
"points": 3,
"recent_form": "WLLLL",
"status": null
},
{
"position": 6,
"team_id": 60082,
"team_name": "Armenia U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224954,
"group_name": "Group 1",
"overall": {
"games_played": 10,
"won": 1,
"draw": 0,
"lost": 9,
"goals_scored": 4,
"goals_against": 33
},
"home": {
"games_played": 5,
"won": 1,
"draw": 0,
"lost": 4,
"goals_scored": 2,
"goals_against": 8
},
"away": {
"games_played": 5,
"won": 0,
"draw": 0,
"lost": 5,
"goals_scored": 2,
"goals_against": 25
},
"total": {
"goal_difference": "-29",
"points": 3
},
"result": null,
"points": 3,
"recent_form": "LLLLL",
"status": null
}
]
}
},
{
"id": 224955,
"name": "Group 2",
"league_id": 1327,
"season_id": 15717,
"round_id": 163461,
"round_name": 1,
"stage_id": 77442385,
"stage_name": "Qualifying Round",
"resource": "group",
"standings": {
"data": [
{
"position": 1,
"team_id": 61491,
"team_name": "France U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224955,
"group_name": "Group 2",
"overall": {
"games_played": 10,
"won": 9,
"draw": 0,
"lost": 1,
"goals_scored": 32,
"goals_against": 10
},
"home": {
"games_played": 5,
"won": 5,
"draw": 0,
"lost": 0,
"goals_scored": 17,
"goals_against": 3
},
"away": {
"games_played": 5,
"won": 4,
"draw": 0,
"lost": 1,
"goals_scored": 15,
"goals_against": 7
},
"total": {
"goal_difference": "22",
"points": 27
},
"result": "Possible Final",
"points": 27,
"recent_form": "WWWWW",
"status": null
},
{
"position": 2,
"team_id": 60080,
"team_name": "Switzerland U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224955,
"group_name": "Group 2",
"overall": {
"games_played": 10,
"won": 9,
"draw": 0,
"lost": 1,
"goals_scored": 26,
"goals_against": 8
},
"home": {
"games_played": 5,
"won": 5,
"draw": 0,
"lost": 0,
"goals_scored": 14,
"goals_against": 4
},
"away": {
"games_played": 5,
"won": 4,
"draw": 0,
"lost": 1,
"goals_scored": 12,
"goals_against": 4
},
"total": {
"goal_difference": "18",
"points": 27
},
"result": "Possible Final Tournament",
"points": 27,
"recent_form": "WWWWL",
"status": null
},
{
"position": 3,
"team_id": 75715,
"team_name": "Georgia U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224955,
"group_name": "Group 2",
"overall": {
"games_played": 10,
"won": 5,
"draw": 0,
"lost": 5,
"goals_scored": 17,
"goals_against": 14
},
"home": {
"games_played": 5,
"won": 3,
"draw": 0,
"lost": 2,
"goals_scored": 7,
"goals_against": 6
},
"away": {
"games_played": 5,
"won": 2,
"draw": 0,
"lost": 3,
"goals_scored": 10,
"goals_against": 8
},
"total": {
"goal_difference": "3",
"points": 15
},
"result": null,
"points": 15,
"recent_form": "LWLWW",
"status": null
},
{
"position": 4,
"team_id": 60058,
"team_name": "Slovakia U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224955,
"group_name": "Group 2",
"overall": {
"games_played": 10,
"won": 4,
"draw": 0,
"lost": 6,
"goals_scored": 22,
"goals_against": 21
},
"home": {
"games_played": 5,
"won": 3,
"draw": 0,
"lost": 2,
"goals_scored": 15,
"goals_against": 10
},
"away": {
"games_played": 5,
"won": 1,
"draw": 0,
"lost": 4,
"goals_scored": 7,
"goals_against": 11
},
"total": {
"goal_difference": "1",
"points": 12
},
"result": null,
"points": 12,
"recent_form": "LWLLW",
"status": null
},
{
"position": 5,
"team_id": 75718,
"team_name": "Azerbaijan U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224955,
"group_name": "Group 2",
"overall": {
"games_played": 10,
"won": 2,
"draw": 0,
"lost": 8,
"goals_scored": 6,
"goals_against": 18
},
"home": {
"games_played": 5,
"won": 2,
"draw": 0,
"lost": 3,
"goals_scored": 4,
"goals_against": 7
},
"away": {
"games_played": 5,
"won": 0,
"draw": 0,
"lost": 5,
"goals_scored": 2,
"goals_against": 11
},
"total": {
"goal_difference": "-12",
"points": 6
},
"result": null,
"points": 6,
"recent_form": "WLLLL",
"status": null
},
{
"position": 6,
"team_id": 60078,
"team_name": "Liechtenstein U21",
"round_id": 163461,
"round_name": 1,
"group_id": 224955,
"group_name": "Group 2",
"overall": {
"games_played": 10,
"won": 1,
"draw": 0,
"lost": 9,
"goals_scored": 3,
"goals_against": 35
},
"home": {
"games_played": 5,
"won": 1,
"draw": 0,
"lost": 4,
"goals_scored": 3,
"goals_against": 16
},
"away": {
"games_played": 5,
"won": 0,
"draw": 0,
"lost": 5,
"goals_scored": 0,
"goals_against": 19
},
"total": {
"goal_difference": "-32",
"points": 3
},
"result": null,
"points": 3,
"recent_form": "LLLLL",
"status": null
}
]
}
},
Now you know how to request the standings per group, but what about stages? As you know from our stages tutorial, a season can consist of multiple stages. Just like how you can request the standings per group, you can also request a stage’s standings by adding the stage_ids
parameter.
https://soccer.sportmonks.com/api/v2.0/standings/season/17299?api_token={API_TOKEN}&stage_ids=77448760
You can identify whether a stage has standings by first requesting all the stages of a season. Please visit our stages tutorial for more info.
Besides regular standings, we also offer live standings. Live standings represent the rankings of teams in real-time. So if a game is currently being played, the live standing returns the season standings based on the score at that moment. For example: If team A leads with 2-0, the API sees them as the ‘winner.’
The principle is almost the same. You can use the live standings by season id endpoint and parse a valid season id:
https://soccer.sportmonks.com/api/v2.0/standings/season/live/{ID}?api_token={API_TOKEN}
https://soccer.sportmonks.com/api/v2.0/standings/season/live/{ID}?api_token={API_TOKEN}&group_ids={ID}
Are you interested in live standings of a season with multiple stages?
If for example in one season two stages are played at the same time, you can add the stage_id
parameter to filter on the stage you're interested in.
You do need to add thegroup_ids
parameter for cups.
The standings by round id is the go-to endpoint if you want to request the standings until a specific round.
With this endpoint, you can request the standings of the teams until the round id you provided. So, if, for example:
The Spanish La Liga 2019/2020 season (league id: 564 and season id: 16326) ended and Real Madrid was crowned champions. But we want to know what the standings of the season were, halfway through. That’s why we make this request:
https://soccer.sportmonks.com/api/v2.0/standings/season/16326/round/175893?api_token={API_TOKEN}
{
"data": [
{
"position": 1,
"team_id": 83,
"team_name": "Barcelona",
"short_code": "FCB",
"team_logo": "https://cdn.sportmonks.com/images/soccer/teams/19/83.png",
"overall": {
"games_played": 25,
"won": 17,
"draw": 4,
"lost": 4,
"goals_scored": 62,
"goals_against": 29,
"goal_diff": 33
},
"home": {
"games_played": 13,
"won": 12,
"draw": 1,
"lost": 0,
"goals_scored": 44,
"goals_against": 12
},
"away": {
"games_played": 12,
"won": 5,
"draw": 3,
"lost": 4,
"goals_scored": 18,
"goals_against": 17
},
"points": 55,
"description": "UEFA Champions League",
"recent_form": "LWDWLWWWWWLWWWWDDWDWLWWWW"
},
{
"position": 2,
"team_id": 3468,
"team_name": "Real Madrid",
"short_code": "RMA",
"team_logo": "https://cdn.sportmonks.com/images/soccer/teams/12/3468.png",
"overall": {
"games_played": 25,
"won": 15,
"draw": 8,
"lost": 2,
"goals_scored": 46,
"goals_against": 17,
"goal_diff": 29
},
"home": {
"games_played": 12,
"won": 8,
"draw": 4,
"lost": 0,
"goals_scored": 25,
"goals_against": 9
},
"away": {
"games_played": 13,
"won": 7,
"draw": 4,
"lost": 2,
"goals_scored": 21,
"goals_against": 8
},
"points": 53,
"description": "UEFA Champions League",
"recent_form": "WDDWWWDWLWDWWWWDDDWWWWWDL"
},
Want to know how to retrieve a round ID? Please check our rounds tutorial for more info.
Next to the standings by round id, you can also request the season by giving a specific date and time. This endpoint will calculate the games played up until the given date or time and provide the standing results.
The date time has to be parsed in the following format: YYYY-MM-DD-T-H-M-S. For example: 2020-10-19T18:45:04
https://soccer.sportmonks.com/api/v2.0/standings/season/16326/date/2020-10-19T18:45:04?api_token={API_TOKEN}
Inplay games are not calculated using this endpoint. It will only take finished games into account.
On some occasions, a stage proceeds with standings from an earlier stage. In these situations, we will also provide correction objects to understand how a stage’s standing has been calculated.
Furthermore, in case a team got points corrections, they can be found on this endpoint. It will return an array of correction objects on a per stage basis.
https://soccer.sportmonks.com/api/v2.0/corrections/season/{ID}?api_token={API_TOKEN}
Field
Description
id
The unique id of the current stage
name
The name of the stage
league_id
The unique league id the stage belongs to
season_id
The unique id of the current season
round_id
The unique id of the current round
round_name
The name of the round
type
Indicates what kind of type this stage is
stage_id
The unique id of the current stage
stage_name
The name of the stage
Field
Description
position
The actual position in the rankings in the stage
team_id
The unique team id of the team in that position in the stage
team_name
The team name in that position in the stage
round_id
The unique id of the current round
round_name
The name of the round
group_id
The unique id of the group, in which the team participates in
group_name
The name of the group, in which the team participates in
overall
The overall results of the team, i.e., the number of games, points and goals
home
The home results of the team, i.e., the number of games, points and goals
away
The away results of the team, i.e., the number of games, points and goals
total
The total points of the team and their goal difference
results
The standing rules of the place the team is in
points
The accumulated number of points the team has
recent_form
The recent form of the team
status
Will be available in API 3.0: Indicates if the team moves up on down based on the last standings.
Field
Description
id
The unique id of the current group
name
The name of the group
league_id
The unique league id the stage belongs to
season_id
The unique id of the current season
round_id
The unique id of the current round
round_name
The name of the round
stage_id
The unique id of the current stage
stage_name
The name of the stage
Field
Description
position
The actual position in the rankings in the group
team_id
The unique team id of the team in that position in the group
team_name
The team name in that position in the group
round_id
The unique id of the current round
round_name
The name of the round
group_id
The unique id of the group, in which the team participates in
group_name
The name of the group, in which the team participates in
overall
The overall results of the team, i.e., the number of games, points and goals
home
The home results of the team, i.e., the number of games, points and goals
away
The away results of the team, i.e., the number of games, points and goals
total
The total points of the team and their goal difference
results
The standing rules of the place the team is in
points
The accumulated number of points the team has
recent_form
The recent form of the team
status
Will be available in API 3.0: Indicates if the team moves up on down based on the last standings.