Methodology
Where every number comes from.
Every stat, rating, and probability on PlayersB traces to a named public source, carries its season scope, and is recomputed automatically. This page documents the whole chain — including its limitations.
Data sources
- football-data.org — live fixtures, scores, and top-scorer feeds for 10 competitions (Premier League, La Liga, Serie A, Bundesliga, Ligue 1, Champions League, Brasileirão, Eredivisie, Primeira Liga, World Cup 2026). Refreshed every 6 hours, and every 20 minutes during the World Cup.
- Wikidata + Wikipedia — player identity: name, club, position, nationality, birth/death dates, biography, imagery. Position labels are normalized to a canonical football taxonomy; non-football labels are discarded rather than displayed.
- StatsBomb open data — the historical match archive (World Cups, Euros, Copa América, AFCON, and club seasons) behind head-to-head history and the prediction model.
- OpenFootball (CC0) — World Cup 2026 structure: groups, venues, bracket, and results.
Player stats & provenance
Current-season totals come from the live top-scorers feed and are always labelled with their season and competition (e.g. “2025/26 Premier League season totals”). Minutes for those rows are estimated at 90 per match played and marked “(est.)” — we never divide one season's goals by another season's minutes. Profiles without live stats show verified historical totals or no stats at all; we don't invent numbers to fill space.
Historical profiles
Our roster data includes everyone who ever played for a covered club. Profiles of deceased people (death date from Wikidata) or people born 50+ years ago are framed as “Historical profile” with a lifespan or birth year — never a computed current age or implied active affiliation.
Per-90 rates
Per-90 = stat ÷ (minutes ÷ 90). When minutes are estimated from matches played, the page says so. Rates across different pages are computed from the same season-consistent inputs, so a player's numbers agree everywhere on the site.
The World Cup prediction model
Ratings are standard Elo computed in date order over men's senior international results in our open archive plus live World Cup 2026 results — base 1500, K = 35 (historical) / 40 (live), margin-of-victory multiplier. Match probabilities use the Elo expected score with a draw share that fades as the rating gap grows; knockouts carry no draw. Advancement chances come from a 10,000-run fixed-seed Monte Carlo, so results are fully reproducible. The complete method, parameters, and caveats — including cross-confederation calibration limits — are published on the predictions page, and the raw model output is public at /data/predictions.json.
These are statistical estimates for educational analysis — not betting advice.
Freshness & self-healing
An automated pipeline refreshes all data every 6 hours (every 20 minutes for live World Cup surfaces), validates it, regenerates the site, and publishes per-dataset freshness to the status page. Stale or failed sources degrade gracefully — the site never silently substitutes synthetic data for real data.
Known limitations
- Detailed per-season stats currently cover the top scorers of each tracked competition (~150 players); the remaining profiles are biographical.
- Shot data is only available for a subset of players and is omitted — not estimated — elsewhere.
- Retirement detection for living former players uses an age heuristic until per-membership end dates are integrated; a recently retired player may briefly read as current.
- Prediction ratings are weakly calibrated across confederations (different continents' tournaments rarely overlap) and self-correct as World Cup results arrive.
Spotted an error? Tell us — corrections are treated as priority fixes.