FOOTBALL MATCHES AND RESULTS DATA
Matches and resultsEvery match since 2015/16, or the league's start: found by competition, club, season or date, with its score at every stage, its events and each side's figures.
EVERY MATCH, ONE SEARCH
/v1/matches finds any match in the collection, played or still to come: by competition, club, season, date_from and date_to, status, result, surface or venue, newest first, a page at a time.
curl "https://api.footballapi.org/v1/matches?competition=premier-league&season=2026&result=draw" \ -H "X-API-Key: your key"
import requests
r = requests.get(
"https://api.footballapi.org/v1/matches?competition=premier-league&season=2026&result=draw",
headers={"X-API-Key": "your key"},
)
print(r.json()["data"])const res = await fetch("https://api.footballapi.org/v1/matches?competition=premier-league&season=2026&result=draw", {
headers: { "X-API-Key": "your key" },
});
const { data } = await res.json();
console.log(data);$ch = curl_init("https://api.footballapi.org/v1/matches?competition=premier-league&season=2026&result=draw");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: your key"],
]);
$data = json_decode(curl_exec($ch), true)["data"];
print_r($data);RESULTS
/v1/results gives settled matches by day or date range; /v1/results/today, /v1/results/yesterday and /v1/results/latest give the newest in one call each.
curl "https://api.footballapi.org/v1/results/yesterday?competition=premier-league" \ -H "X-API-Key: your key"
import requests
r = requests.get(
"https://api.footballapi.org/v1/results/yesterday?competition=premier-league",
headers={"X-API-Key": "your key"},
)
print(r.json()["data"])const res = await fetch("https://api.footballapi.org/v1/results/yesterday?competition=premier-league", {
headers: { "X-API-Key": "your key" },
});
const { data } = await res.json();
console.log(data);$ch = curl_init("https://api.footballapi.org/v1/results/yesterday?competition=premier-league");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: your key"],
]);
$data = json_decode(curl_exec($ch), true)["data"];
print_r($data);A MATCH, ITS EVENTS AND ITS FIGURES
Every match carries a match_id. /v1/matches/{match_id} gives every field of that match; /v1/matches/{match_id}/events each goal and card to the minute; /v1/matches/{match_id}/stats each side's shots, possession, corners, cards and expected goals.
curl "https://api.footballapi.org/v1/matches/mt_e2hk79mn5/stats" \ -H "X-API-Key: your key"
import requests
r = requests.get(
"https://api.footballapi.org/v1/matches/mt_e2hk79mn5/stats",
headers={"X-API-Key": "your key"},
)
print(r.json()["data"])const res = await fetch("https://api.footballapi.org/v1/matches/mt_e2hk79mn5/stats", {
headers: { "X-API-Key": "your key" },
});
const { data } = await res.json();
console.log(data);$ch = curl_init("https://api.footballapi.org/v1/matches/mt_e2hk79mn5/stats");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: your key"],
]);
$data = json_decode(curl_exec($ch), true)["data"];
print_r($data);HOW FAR BACK
Every season from 2015/16, or from the league's start where that is later; /v1/competitions gives each league's first season. Results settle as each match ends. On the complimentary key, matches and results read this season's Premier League.