Football Stats & Elo Ratings API avatar

Football Stats & Elo Ratings API

Pricing

from $2.00 / 1,000 team profiles

Go to Apify Store
Football Stats & Elo Ratings API

Football Stats & Elo Ratings API

Team stats and Elo ratings for 22 European leagues. One row per club: Elo, points, goals for and against, home and away splits, clean sheets, recent form and last results. Computed chronologically with no result leakage.

Pricing

from $2.00 / 1,000 team profiles

Rating

0.0

(0)

Developer

Titouan MARTY

Titouan MARTY

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Team stats and Elo ratings for 22 European leagues. One row per club: its Elo rating, points, goals for and against, home and away splits, clean sheets, recent form, and its last ten results.

This is a football stats API for anyone who would otherwise spend an evening on groupby: fantasy players comparing squads, modellers needing a rating that is comparable across leagues, and content teams building tables and form guides.


Why Elo and not just points

League points are not comparable between competitions. 85 points in the Premier League and 85 points in the Eredivisie are different achievements, and neither number tells you how a team is playing right now.

Elo fixes both problems. It is computed chronologically across every match in scope, adjusts for the quality of the opponent, and carries a single scale you can compare across leagues:

Barcelona 1669.4 (LaLiga)
Arsenal 1622.4 (Premier League)
Man City 1621.5 (Premier League)
Paris SG 1621.2 (Ligue 1)
Real Madrid 1619.4 (LaLiga)

That table is real output from a single season across three leagues — and it is exactly the comparison league tables cannot make.

Nothing leaks the future. Ratings are computed strictly before the match being described, so a team's value never encodes a result it has not played yet. That is what makes this safe to backtest on.


What you get

One dataset item per team:

GroupFields
Identityteam, league, league details, league rank
Ratingcurrent Elo
Recordplayed, won, drawn, lost, points
Goalsfor, against, difference, per game, goals for and against per game
Splitshome and away played / won / drawn / lost / points
Discipline of resultclean sheets, failed to score
Formlast five as a W/D/L string, points from those five
Recent resultsthe last ten matches with opponent, venue, result and score

Consistency is guaranteed by construction: played always equals won + drawn + lost, points always equals 3×won + drawn, and home plus away always equals the total. The Actor verifies this across 1,066 real matches before release.


Sample output

Real row, LaLiga, after five matchdays:

{
"team": "Barcelona",
"league": "SP1",
"leagueRank": 1,
"elo": 1537.3,
"played": 5, "won": 5, "drawn": 0, "lost": 0, "points": 15,
"goalsFor": 21, "goalsAgainst": 4, "goalDifference": 17,
"goalDifferencePerGame": 3.4,
"pointsPerGame": 3,
"goalsForPerGame": 4.2,
"goalsAgainstPerGame": 0.8,
"home": { "played": 2, "won": 2, "drawn": 0, "lost": 0, "points": 6 },
"away": { "played": 3, "won": 3, "drawn": 0, "lost": 0, "points": 9 },
"cleanSheets": 3,
"failedToScore": 0,
"form": { "last5": "WWWWW", "pointsLast5": 15 },
"results": [
{ "date": "2026-08-23", "opponent": "Elche", "venue": "away", "result": "W", "score": "5-0" },
{ "date": "2026-08-27", "opponent": "Ath Bilbao", "venue": "home", "result": "W", "score": "2-0" },
{ "date": "2026-08-31", "opponent": "Vallecano", "venue": "home", "result": "W", "score": "5-2" },
{ "date": "2026-09-06", "opponent": "Valencia", "venue": "away", "result": "W", "score": "5-0" },
{ "date": "2026-09-13", "opponent": "Levante", "venue": "away", "result": "W", "score": "4-2" }
]
}

Note that played equals won + drawn + lost (5), points equals 3×won + drawn (15), and home.played + away.played equals played (2 + 3 = 5). Those three identities hold on every row the Actor returns.


Usage

Profile the big five leagues

{ "leagues": ["big-five"], "seasonsBack": 1, "minMatches": 10 }

One team, across several seasons

{ "leagues": ["all"], "teams": ["Marseille"], "seasonsBack": 5 }

Only the current season, sorted by goal difference

{ "leagues": ["france", "england"], "sortBy": "gd", "dateFrom": "01/07/2026" }

Strongest clubs in Europe right now

{ "leagues": ["all"], "seasonsBack": 1, "sortBy": "elo", "minMatches": 5, "maxItems": 30 }

Leagues

E0 E1 E2 E3 EC (England) · SC0SC3 (Scotland) · D1 D2 (Germany) · I1 I2 (Italy) · SP1 SP2 (Spain) · F1 F2 (France) · N1 (Netherlands) · B1 (Belgium) · P1 (Portugal) · T1 (Turkey) · G1 (Greece)

Presets: big-five · big-five-plus-second · france · england · all


Pricing

EventChargedCovers
team-profileonce per team returnedthe full team row
league-rankingonce per league in scoperanking each team inside its league

A five-league run is roughly 100 team rows, so maxItems and minMatches are the two dials that control spend.


Reliability

Built on the same engine as the Football Data API Actor:

  • The source is a downloadable CSV, not a web page — no browser, no proxy, no selectors to break.
  • Elo is computed over the full history and then filtered, so a rating never depends on which filter the caller chose.
  • Every row carries its source URL.

Notes and limits

  • Elo starts at 1500. With a single season the numbers are still converging; use seasonsBack: 3 or more for ratings that reflect real strength rather than a good start.
  • Teams are profiled per league. A club that changes division produces one row per league it appears in.
  • Team names are the provider's, in English where a common English name exists (Bayern Munich, not Bayern München).
  • This Actor provides data and analysis only, not predictions or betting advice.


Support

Report a broken row or a missing league in the Issues tab of this Actor.