Position and result
A
GET
/v1/stats/positions
How league position tracks the result
How the gap in league position at kickoff tracks the result: the single most complete context field in the archive at 95.9%.
Plan
This endpoint needs Archive.
Calling it on a lower plan returns a 403 naming the plan it needs and
a link to pricing, never a bare refusal.
Parameters
league_id
string
query
Restrict to one competition. Ids come from
/v1/leagues: 39 is the English Premier League, 62 is Ligue 2. e.g. lg_24T9Z0G
season
integer
query
Season by its starting year. A 2024/25 season is
2024. e.g. 2024
group_by
string
query
Aggregate by
league, season, country or league_season. e.g. league
Returns
data[].league_id
string
Our id for the competition.
data[].country_name
string
The country the competition belongs to.
data[].league_name
string
The competition's name.
data[].matches
integer
Matches counted.
data[].goals_per_game
number
Goals per game.
data[].home_win_pct
number
Home win, as a percentage.
meta.data_as_of
string
When the data behind this answer was last brought up to date.
meta.request_id
string
This request's id, to quote to support.
meta.count
integer
How many items are in this answer.
meta.group_by
string
Group by.
Request
curl "https://api.footballsoccerapi.com/v1/stats/positions?league_id=lg_24T9Z0G&season=2024&group_by=league" \ -H "X-API-Key: $FSAPI_KEY"
const res = await fetch("https://api.footballsoccerapi.com/v1/stats/positions?league_id=lg_24T9Z0G&season=2024&group_by=league", { headers: { "X-API-Key": process.env.FSAPI_KEY } }); const { data, meta } = await res.json();
import os, requests r = requests.get( "https://api.footballsoccerapi.com/v1/stats/positions?league_id=lg_24T9Z0G&season=2024&group_by=league", headers={"X-API-Key": os.environ["FSAPI_KEY"]}, ) data = r.json()["data"]
$ch = curl_init("https://api.footballsoccerapi.com/v1/stats/positions?league_id=lg_24T9Z0G&season=2024&group_by=league"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: {$key}"], ]); $data = json_decode(curl_exec($ch), true)["data"];
Example response
A real row from the archive, fetched when this page rendered. Run it against your own key below.
200 OK
application/json
{
"data": [
{
"league_id": "lg_2DGPHND",
"country_name": "World",
"league_name": "Friendlies Clubs",
"matches": 40344,
"goals_per_game": 3.36,
"home_win_pct": 44.7
},
{
"league_id": "lg_06VYC58",
"country_name": "England",
"league_name": "Championship",
"matches": 18554,
"goals_per_game": 2.58,
"home_win_pct": 44.5
},
{
"league_id": "lg_1869AE0",
"country_name": "England",
"league_name": "League One",
"matches": 18291,
"goals_per_game": 2.6,
"home_win_pct": 44.2
}
],
"meta": {
"data_as_of": "2026-10-29T04:32:57Z",
"request_id": "01J9QW3C7M4KX2VB",
"count": 3,
"group_by": "league"
}
}
Run it live
Paste your key and fire the real request. The key is kept in this browser only and never sent anywhere but the API.