Football Stats & Elo Ratings API
Pricing
from $2.00 / 1,000 team profiles
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
Maintained by CommunityActor 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:
| Group | Fields |
|---|---|
| Identity | team, league, league details, league rank |
| Rating | current Elo |
| Record | played, won, drawn, lost, points |
| Goals | for, against, difference, per game, goals for and against per game |
| Splits | home and away played / won / drawn / lost / points |
| Discipline of result | clean sheets, failed to score |
| Form | last five as a W/D/L string, points from those five |
| Recent results | the 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) · SC0–SC3 (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
| Event | Charged | Covers |
|---|---|---|
team-profile | once per team returned | the full team row |
league-ranking | once per league in scope | ranking 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: 3or 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, notBayern München). - This Actor provides data and analysis only, not predictions or betting advice.
Related
- Football Data API — the underlying match dataset, with closing odds and market analytics
- Football Odds Comparison — best available price per outcome and line movement across 9+ bookmakers
Support
Report a broken row or a missing league in the Issues tab of this Actor.