Head-to-head records, and what they are actually good for
Every match preview opens with the head-to-head record. It is easy to fetch, easy to show, and the statistic most often asked to do a job it cannot do. We checked what it is worth against 3,042 league matches.
What the endpoint returns
One call per pair, inside one competition. Teams can be given by id or by slug:
curl -H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: football-leagues1.p.rapidapi.com" \
"https://football-leagues1.p.rapidapi.com/premier-league/teams/arsenal/head-to-head/manchester-city"
The summary follows the order of the teams in the path, and the meetings come newest first:
{
"data": {
"teams": [
{ "id": 104, "slug": "arsenal", "name": "Arsenal", "code": "ARS", ... },
{ "id": 110, "slug": "manchester-city", "name": "Manchester City", "code": "MCI", ... }
],
"summary": { "matches": 4, "wins": [1, 1], "draws": 2, "goals": [9, 6] },
"matches": [ ... ]
},
"meta": {}
}
That is every meeting we hold in that competition, which for the domestic leagues goes back to
September 2024. Meetings in other competitions are not in it: the same two clubs in the Champions
League are a separate call under /champions-league.
How much history a pair has
Not much. In the eight domestic leagues a pair of clubs has met between 2.7 and 3.2 times on average in the matches we hold, and never more than six. In the Champions League and the Europa League the average is about 1.2, because the league phase draws new opponents every season.
Arsenal and Manchester City are a typical pair: four meetings, one win each and two draws.
Where it decides something: the table
In LaLiga, Serie A, the Primeira Liga and the Süper Lig, clubs level on points are separated by their results
against each other before goal difference is looked at. In the Bundesliga, the Eredivisie and the
Championship it comes after goal difference and goals scored. The Premier League, Ligue 1 and the
three UEFA league phases do not use it at all. /standings already applies each league's
order, and the tie-break article has the full list.
If you sort a table yourself, this is where you need the head-to-head record. It is the one place where it decides something rather than describes it.
Where it says less than it seems: the next result
We took every finished match in the eight domestic leagues where the two clubs had met before in the same competition, and asked whether the side with more wins in those earlier meetings won again. 3,042 matches had such a leader.
| Pick | Won | Drew | Lost |
|---|---|---|---|
| Better head-to-head record | 45.6% | 25.8% | 28.6% |
That is better than guessing. It is not as good as the obvious alternative. On the 2,534 of those matches where both clubs had already played at least five games that season, picking the side with more points per game won 50.2% of the time, against 45.7% for the head-to-head leader.
The difference is clearest when the two disagree. In 737 matches the head-to-head leader was the side with the worse record this season. The in-form side won 44.1% of them. The head-to-head leader won 28.5%.
More meetings did not help either. The leader won 44.2% of the time after a single earlier meeting and 46.7% after four or more.
The record describes two squads that no longer exist. Players move, managers change, and a win from two seasons ago says less about Saturday than the last eight weeks do. Whatever the head-to-head record does predict, it mostly borrows from how good the teams are, and the current table measures that better.
Showing it honestly
Show counts rather than a percentage. "Won 1, drew 2, lost 1 of 4" tells a reader how little there is to go on. "25% win rate" hides it.
const HOST = 'football-leagues1.p.rapidapi.com';
const res = await fetch(
'https://' + HOST + '/premier-league/teams/arsenal/head-to-head/manchester-city',
{ headers: { 'X-RapidAPI-Key': process.env.RAPIDAPI_KEY, 'X-RapidAPI-Host': HOST } },
);
const { data } = await res.json();
const [a, b] = data.teams;
const { matches, wins, draws } = data.summary;
console.log(a.name + ' won ' + wins[0] + ', drew ' + draws + ', lost ' + wins[1] +
' of ' + matches + ' against ' + b.name);
// Arsenal won 1, drew 2, lost 1 of 4 against Manchester City
List the matches with their dates next to the summary, so that a 5-1 from February 2025 does not pass for current form. If you are building anything that estimates who will win, start from this season's results and treat the head-to-head record as colour.
How the numbers were made
Every finished match we held on 23 September 2026 in the Premier League, LaLiga, Serie A, Bundesliga, Ligue 1, Eredivisie, Primeira Liga and EFL Championship, from September 2024 on. For each match we counted only meetings before its kickoff in the same competition, and points per game only from that club's earlier matches in the same season. A level head-to-head record, or level points per game, counts as no pick. The three UEFA competitions were left out because their pairs rarely meet twice. For scale, the home side won 41.5% of the same 3,042 matches.