Football Prediction & Data API
A REST API for football match predictions, player & coach Elo ratings, rating history, market values and ESB betting tips — the only football API rating every player individually. Free tier, 87K+ players across 176 competitions. Looking specifically for forecasts? See the prediction API →
Plans
Every plan includes all endpoints — they differ only by request volume. Start free in seconds; upgrade, downgrade or cancel anytime.
- Requests
- 500 / month
- Rate limit
- 10 req / min
Evaluation & hobby use.
- Requests
- 10,000 / month
- Rate limit
- 120 req / min
Production apps & dashboards.
- Requests
- 50,000 / month
- Rate limit
- 300 req / min
Daily full-dataset refresh & backtesting.
- Requests
- 300,000 / month
- Rate limit
- 600 req / min
Daily top-league Elo/EAR history + commercial licence & SLA.
What you are paying for is the ratings themselves: a per-player and per-coach Elo, its history, and each player's Elo Above Replacement (EAR = Elo Above Replacement, football's version of baseball's WAR (Wins Above Replacement). Every rated match scores a player against the average performance for their position: better adds to EAR, worse subtracts. EAR180 adds up the last 180 days (current form); EAR career adds up every rated match. Our predictions add EAR180 to a player's Elo, about 37 Elo points per EAR point.) — inputs for a model, a scouting tool or a piece of research. They are not sold as a way to make money betting.
Switch plans anytime — just subscribe to another one and it replaces your current plan the moment you pay (no proration; any leftover volume is forfeited). To cancel, or for more than 300k/month or a custom licence, email us.
Your account
Paste your API key to see this month's request usage and manage your subscription. Your key is your identity — usage is also available via GET /v1/usage.
Endpoints
Base URL https://data-api.playerelo.football · all endpoints require an Authorization: Bearer API key.
Players
| GET | /v1/players | Top players by Elo (limit, offset) |
| GET | /v1/players/{id} | Single player (Elo, EAR, rank) |
| GET | /v1/players/{id}/history | Match-by-match Elo & EAR history (add ?context=full for per-match fixture, opponent, minutes & elo_change) |
| GET | /v1/players/{id}/trend | 28-day Elo & rank movement |
| GET | /v1/players/{id}/value | Computed market value (€) |
| GET | /v1/players/{id}/style | Playing-style radar & per-90 profile |
Coaches
| GET | /v1/coaches | Top coaches by Elo |
| GET | /v1/coaches/{id} | Single coach |
| GET | /v1/coaches/{id}/history | Coach Elo history |
| GET | /v1/coaches/{id}/style | Coach tactical DNA |
Clubs
| GET | /v1/clubs | Clubs ranked by Team Elo |
| GET | /v1/clubs/{id} | Single club (Team Elo) |
| GET | /v1/clubs/{id}/players | Squad by team ID |
| GET | /v1/clubs/{id}/history | Club Team-Elo history |
| GET | /v1/clubs/{id}/style | Club playing-style profile |
| GET | /v1/clubs/{id}/squad-gaps | Per-position squad gaps vs peer clubs |
Leagues
| GET | /v1/leagues | League strength table |
| GET | /v1/leagues/{id} | League summary + Elo distribution |
| GET | /v1/leagues/{id}/players | Players by league ID |
| GET | /v1/leagues/{id}/ranking | League standings & Team Elo (off-season only; 404 mid-season) |
| GET | /v1/leagues/{id}/style | League style profile |
| GET | /v1/leagues/{id}/simulation | Rest-of-season sim & title odds |
Predictions & betting
| GET | /v1/fixtures | Fixtures of the next two weeks + provisional predictions |
| GET | /v1/predictions | Lineup-based predictions (~20 min before kick-off) |
| GET | /v1/fixtures/{id}/prediction | Fixture prediction + scoreline odds |
| GET | /v1/value-bets | ESB betting tips: open bets before kick-off + settled record |
Account
| GET | /v1/usage | Your own request usage (used / cap / remaining) — doesn't count against quota |
| GET | /v1/portal | Stripe billing-portal link (manage payment, invoices, cancel) |
Recruitment & fit
The intelligence layer — derived analytics no other football API offers. Same computed models that power our scouting and agent tools.
/v1/fit?player_id=&target_club_id=A 0–100 score for a specific player → club move, blending three families: tactical fit (how the player's playing-style profile matches the club's system), financial fit (our computed market value vs what the club typically pays), and strategic fit (squad need at that position, age profile, and level step). Returns the headline score plus the per-signal breakdown that drives it — the same engine behind our TransferWatcher partner tool.
/v1/players/{id}/opportunitiesAn outbound shortlist of the realistic clubs a player could move to, each scored for reachability (the club's level relative to the player) and fit. Surfaces step-up, lateral and fallback destinations in one ranked list — the recruitment view from the player's side, ready to drop into an agent or scouting dashboard.
/v1/clubs/{id}/squad-gapsPer-position gap analysis for a club: which slots have weak starters or thin depth, measured by comparing each position's Elo to peer clubs, plus the size of the upgrade needed. This is the input that turns into a recruitment shortlist — pair it with the fit and opportunity endpoints for an end-to-end scouting pipeline.
Quick Start
cURL
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://data-api.playerelo.football/v1/players?limit=10Python
import requests
url = "https://data-api.playerelo.football/v1/players"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {"limit": 10}
players = requests.get(url, headers=headers, params=params).json()
for p in players:
print(f"{p['player_name']}: {p['elo']}")Frequently asked questions
Is there a free football prediction API?
Yes. PlayerElo's free tier gives you 500 requests a month across every endpoint — including match predictions, player and coach Elo ratings, and rating history — with no credit card. Paid plans start at €19/month for 10,000 requests.
What does the football prediction API return?
For each upcoming fixture the API returns home/draw/away win probabilities and scoreline odds, computed from our player-level Elo model (every player and coach rated individually, refreshed daily) rather than team-level form alone.
How do the predictions compare with the market?
Our model-vs-market page publishes the live record of every bet the model flagged, per bookmaker — so you can read the numbers yourself rather than take a marketing figure at face value. Over more than a thousand bets that record is slightly negative: close enough to the market to show the ratings predict well, not far enough past it to clear the bookmaker’s margin. That is why this is sold as a rating feed and not as a betting edge.
How often should I check for ESB betting tips?
ESB (Established Squads Betting) tips appear in the last ~30 minutes before kick-off. On match days, check /v1/value-bets about every 15 minutes during the busy windows: weekdays 16:30–22:00, weekends 11:30–23:00, plus 23:30–05:30 for matches in the Americas (Central European time: UTC+2 in summer, UTC+1 in winter). In our measurement that catches about 80% of tips before kick-off for roughly 1,600 requests a month, which needs a paid plan. Within the free plan's 500 requests a month, polling only on weekday evenings (19:30–22:00) and weekend afternoons (14:30–22:00) catches about half. No profit is promised; the record is published on the betting page.
What football data does the API cover?
87K+ players and thousands of coaches across 176 competitions worldwide, with Elo ratings, Elo Above Replacement (EAR), full match-by-match history, computed market values, playing-style profiles, league tables and season simulations.
Can I use the API commercially?
Yes. Paid plans permit commercial use; the Business plan adds a commercial licence and higher volume. The data is our own computed ratings and derived analytics, not raw third-party feeds resold 1:1.
Do the IDs match API-Football?
Yes — every ID the API returns (player, coach, club, league and fixture) is the same ID that API-Football (api-football.com) uses, so you can join our ratings straight onto their data. Coach IDs carry a "coach_" prefix (e.g. coach_4); drop it for the raw API-Football coach ID.