Games
Season Results
Get all match results for a specific competition and season with standard pagination
GET
/
games
/
season-results
Season Results
curl --request GET \
--url https://api.sportsapipro.com/v1/football/games/season-results \
--header 'x-api-key: <api-key>'import requests
url = "https://api.sportsapipro.com/v1/football/games/season-results"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sportsapipro.com/v1/football/games/season-results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportsapipro.com/v1/football/games/season-results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportsapipro.com/v1/football/games/season-results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportsapipro.com/v1/football/games/season-results")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportsapipro.com/v1/football/games/season-results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"seasonNum": 123,
"seasonName": "<string>",
"competition": {
"id": 123,
"name": "<string>",
"countryId": 123
},
"pagination": {
"page": 123,
"pageSize": 123,
"totalGames": 123,
"totalPages": 123,
"hasMore": true
},
"games": [
{
"id": 123,
"competitionId": 123,
"seasonNum": 123,
"startTime": "<string>",
"statusGroup": 123,
"homeCompetitor": {
"id": 123,
"name": "<string>",
"score": 123
},
"awayCompetitor": {
"id": 123,
"name": "<string>",
"score": 123
},
"winner": 123
}
],
"competitors": "<array>",
"countries": "<array>"
}Season Results
Retrieve all completed match results for a specific competition season with standard page-based pagination.Current Season OnlyDue to the API data provider limitations, this endpoint only supports the current season. Historical season data (past seasons) is not accessible through the match results API.
- Current season requests → Returns paginated match results ✅
- Historical season requests → Returns 422 error with explanation ❌
/standings endpoint provides final standings for previous seasons.Endpoint
GET /games/season-results
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
competitions | number | Yes | Competition ID (e.g., 7 for Premier League) |
seasonNum | number | Yes | Season number from /standings?withSeasonsFilter=true |
page | number | No | Page number (default: 1) |
pageSize | number | No | Results per page (default: 50, max: 100) |
showOdds | boolean | No | Include betting odds (default: false) |
Discovering Season Numbers
Before using this endpoint, discover available seasons using the standings endpoint:curl -X GET "https://api.sportsapipro.com/v1/football/standings?competitions=7&withSeasonsFilter=true" \
-H "x-api-key: YOUR_API_KEY"
seasonFilters array:
{
"seasonFilters": [
{ "num": 131, "name": "2025/26" },
{ "num": 130, "name": "2024/25" },
{ "num": 129, "name": "2023/24" },
{ "num": 128, "name": "2022/23" }
]
}
Request Example
curl -X GET "https://api.sportsapipro.com/v1/football/games/season-results?competitions=7&seasonNum=129&page=1&pageSize=100" \
-H "x-api-key: YOUR_API_KEY"
const response = await fetch(
'https://api.sportsapipro.com/v1/football/games/season-results?competitions=7&seasonNum=129&page=1&pageSize=100',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const data = await response.json();
console.log(`Page ${data.pagination.page}/${data.pagination.totalPages}`);
console.log(`Total games: ${data.pagination.totalGames}`);
import requests
response = requests.get(
'https://api.sportsapipro.com/v1/football/games/season-results',
params={'competitions': 7, 'seasonNum': 129, 'page': 1, 'pageSize': 100},
headers={'x-api-key': 'YOUR_API_KEY'}
)
data = response.json()
print(f"Page {data['pagination']['page']}/{data['pagination']['totalPages']}")
print(f"Total games: {data['pagination']['totalGames']}")
Response Structure
{
"seasonNum": 129,
"seasonName": "2023/24",
"competition": {
"id": 7,
"name": "Premier League",
"countryId": 1
},
"pagination": {
"page": 1,
"pageSize": 100,
"totalGames": 380,
"totalPages": 4,
"hasMore": true
},
"games": [
{
"id": 4567890,
"competitionId": 7,
"seasonNum": 129,
"startTime": "2024-05-19T16:00:00+01:00",
"statusGroup": 4,
"homeCompetitor": {
"id": 110,
"name": "Manchester City",
"score": 3
},
"awayCompetitor": {
"id": 127,
"name": "West Ham",
"score": 1
},
"winner": 1
}
],
"competitors": [...],
"countries": [...]
}
Response Fields
| Field | Type | Description |
|---|---|---|
seasonNum | number | The requested season number |
seasonName | string | Human-readable season name (e.g., “2023/24”) |
competition | object | Competition metadata (id, name, countryId) |
pagination.page | number | Current page number |
pagination.pageSize | number | Results per page |
pagination.totalGames | number | Total games in the season |
pagination.totalPages | number | Total pages available |
pagination.hasMore | boolean | Whether more pages exist |
games | array | List of completed match results |
competitors | array | Team/competitor reference data |
countries | array | Country reference data |
Complete Workflow: Fetch All Season Results
async function fetchFullSeasonResults(competitionId, seasonNum) {
const allGames = [];
let page = 1;
let hasMore = true;
while (hasMore) {
const response = await fetch(
`https://api.sportsapipro.com/v1/football/games/season-results?` +
`competitions=${competitionId}&seasonNum=${seasonNum}&page=${page}&pageSize=100`,
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const data = await response.json();
allGames.push(...data.games);
hasMore = data.pagination.hasMore;
page++;
console.log(`Page ${data.pagination.page}/${data.pagination.totalPages} - ${allGames.length} games`);
// Rate limit: pause between requests
await new Promise(r => setTimeout(r, 100));
}
console.log(`Total games: ${allGames.length}`);
return allGames;
}
// Fetch all 380 Premier League games for 2023/24
const results = await fetchFullSeasonResults(7, 129);
import requests
import time
def fetch_full_season_results(competition_id, season_num):
all_games = []
page = 1
has_more = True
while has_more:
response = requests.get(
'https://api.sportsapipro.com/v1/football/games/season-results',
params={
'competitions': competition_id,
'seasonNum': season_num,
'page': page,
'pageSize': 100
},
headers={'x-api-key': 'YOUR_API_KEY'}
)
data = response.json()
all_games.extend(data['games'])
has_more = data['pagination']['hasMore']
page += 1
print(f"Page {data['pagination']['page']}/{data['pagination']['totalPages']} - {len(all_games)} games")
# Rate limit: pause between requests
time.sleep(0.1)
print(f"Total games: {len(all_games)}")
return all_games
# Fetch all Premier League games for 2023/24
results = fetch_full_season_results(7, 129)
Multi-Season Historical Data
For analytics and prediction models requiring multiple seasons:async function fetchMultiSeasonData(competitionId, numSeasons = 5) {
// Step 1: Discover available seasons
const standingsResponse = await fetch(
`https://api.sportsapipro.com/v1/football/standings?competitions=${competitionId}&withSeasonsFilter=true`,
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const standingsData = await standingsResponse.json();
const seasons = standingsData.seasonFilters?.slice(0, numSeasons) || [];
console.log(`Fetching ${seasons.length} seasons...`);
const allData = {};
for (const season of seasons) {
console.log(`\nFetching ${season.name} (seasonNum: ${season.num})`);
const games = await fetchFullSeasonResults(competitionId, season.num);
allData[season.name] = games;
}
return allData;
}
// Fetch 5 seasons of Premier League data
const historicalData = await fetchMultiSeasonData(7, 5);
Error Handling
| Status Code | Description |
|---|---|
| 400 | Missing required parameters (competitions or seasonNum) |
| 401 | Invalid or missing API key |
| 429 | Rate limit exceeded |
| 500 | Server error |
// 400 Error Response
{
"error": "Missing required parameters",
"message": "Both \"competitions\" and \"seasonNum\" parameters are required.",
"example": "/games/season-results?competitions=7&seasonNum=129"
}
Rate Limiting Notes
- Each call to
/games/season-resultscounts as 1 API request towards your daily quota - The endpoint internally aggregates multiple internal calls, but you are only charged once
- For large datasets, add delays between paginated requests to avoid hitting rate limits
- A full Premier League season (380 games) requires 4 API calls at
pageSize=100
Authorizations
Your SportsAPI Pro API key
Query Parameters
Competition ID (e.g., 7 for Premier League)
Example:
7
Season number from /standings?withSeasonsFilter=true (e.g., 129 for 2023/24)
Example:
129
Page number (default: 1)
Example:
1
Results per page (default: 50, max: 100)
Required range:
x <= 100Example:
100
Include betting odds data (default: false)
Response
Season results retrieved successfully
The requested season number
Human-readable season name (e.g., '2023/24')
Competition metadata
Show child attributes
Show child attributes
Pagination information
Show child attributes
Show child attributes
List of completed match results
Show child attributes
Show child attributes
Team/competitor reference data
Country reference data
Last modified on June 29, 2026
Was this page helpful?
⌘I
Season Results
curl --request GET \
--url https://api.sportsapipro.com/v1/football/games/season-results \
--header 'x-api-key: <api-key>'import requests
url = "https://api.sportsapipro.com/v1/football/games/season-results"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sportsapipro.com/v1/football/games/season-results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportsapipro.com/v1/football/games/season-results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportsapipro.com/v1/football/games/season-results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportsapipro.com/v1/football/games/season-results")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportsapipro.com/v1/football/games/season-results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"seasonNum": 123,
"seasonName": "<string>",
"competition": {
"id": 123,
"name": "<string>",
"countryId": 123
},
"pagination": {
"page": 123,
"pageSize": 123,
"totalGames": 123,
"totalPages": 123,
"hasMore": true
},
"games": [
{
"id": 123,
"competitionId": 123,
"seasonNum": 123,
"startTime": "<string>",
"statusGroup": 123,
"homeCompetitor": {
"id": 123,
"name": "<string>",
"score": 123
},
"awayCompetitor": {
"id": 123,
"name": "<string>",
"score": 123
},
"winner": 123
}
],
"competitors": "<array>",
"countries": "<array>"
}