Sources and data
Where our data comes from
Our data arrives in automatic batches, not as live scores. Fixtures and results come from a sports media data feed, and every score is checked against an independent second source. Conflicting scores wait for review. Missing confirmation allows single-source grading, shown in the coverage figures. This page describes the data we use, how we check it and when it updates.
Latest data batch
Update modeBatchHourly batches, not live scores
Next update
Sources by type of data
| Data | Source | Type | Licence | Leagues |
|---|---|---|---|---|
| Fixtures, kick-off times and results (live season) | Sports media data feed | Media | Facts onlyTerms review pending | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership, Serie A, Ligue 1, Eredivisie, Süper Lig, EFL Championship, Saudi Pro League |
| Premier League injuries and suspensions | Specialist Premier League injury table | Media | Facts onlyTerms review pending | Premier League |
| Injuries and suspensions (second team news source) | Independent injury tables by league | Media | Facts onlyTerms review pending | La Liga, Bundesliga, Serie A, Ligue 1, Primeira Liga, Scottish Premiership, Eredivisie, Süper Lig, EFL Championship |
| Results (90-minute score) | Sports media data feed, cross-checked with an independent second source and later with open data | Media | Facts onlyTerms review pending | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership, Serie A, Ligue 1, Eredivisie, Süper Lig, EFL Championship, Saudi Pro League |
| Results cross-check and injuries/suspensions | Independent football data service | Media | Facts onlyTerms review pending | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership, Serie A, Ligue 1, Eredivisie, Süper Lig, EFL Championship, Saudi Pro League |
| Fixtures and kickoff times | Sports media data feed (single source) | Media | Facts onlyTerms review pending | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership, Serie A, Ligue 1, Eredivisie, Süper Lig, EFL Championship, Saudi Pro League |
| Team news and injuries | Two independent sources in ten leagues; one in the Saudi Pro League | Media | Facts onlyTerms review pending | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership, Serie A, Ligue 1, Eredivisie, Süper Lig, EFL Championship, Saudi Pro League |
| Shots on target | No active source | Media | Facts onlyNot used yet | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership |
| Historical results | Openly licensed historical results (CC0) | Open data | CC0 (public domain) | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership |
| Images | Illustrations generated for this site, labelled on the page | Own | Made for this site | Premier League, La Liga, Bundesliga, Primeira Liga, Scottish Premiership |
"Facts only" means we record facts such as a score or a kickoff time, not republished articles. Source responses are cached internally for processing.
Status by league
Times in your local time. A forecast locks 24 hours before kickoff, so the latest lock is usually a day before the next match.
| League | Latest results batch | Latest forecast lock | Next update | Missing data |
|---|---|---|---|---|
| Premier League |
| |||
| La Liga |
| |||
| Serie A |
| |||
| Bundesliga |
| |||
| Ligue 1 |
| |||
| Primeira Liga |
| |||
| Scottish Premiership |
| |||
| Eredivisie |
| |||
| Süper Lig |
| |||
| EFL Championship |
| |||
| Saudi Pro League | — |
| ||
| Champions League |
| |||
| Europa League |
| |||
| Conference League |
|
Source details
Fixtures, kick-off times and results (live season)
- Used for
- Fixtures, kick-off times, venues and 90-minute scores for the live season; results feed the model, the league tables and grading.
- Update schedule
- Every hour at minute 05 UTC. Full runs at 00:05, 06:05, 12:05 and 18:05 fetch the next 10 days; other runs fetch today and the previous two days.
- Checks
- Fixtures and kickoff times come from this feed alone; there is no second-source kickoff check. Scores are checked against an independent second source: disagreements are held, and a missing second source allows single-source grading. A checker failure skips all result imports for that run.
- Licence
- Facts onlyTerms review pending
Premier League injuries and suspensions
- Used for
- Premier League team news alongside our main team news source; a player both list with the same absence status is confirmed by two sources.
- Update schedule
- At most once an hour for team pages and match dossiers; cached between pipeline runs.
- Checks
- Player names and status as listed; status mapped to out, doubtful or suspended.
- Licence
- Facts onlyTerms review pending
Injuries and suspensions (second team news source)
- Used for
- Second team news source in nine leagues (not the Premier League, which has its own second source, or the Saudi Pro League). A player it lists that our main team news source also lists counts as a second source; players only it lists are shown as single-source.
- Update schedule
- League injury pages read at most every 6 hours during the hourly runs (nine requests, 1.5 seconds apart). If a read fails, the last successful read up to 12 hours old is used, with its own check time.
- Checks
- Team names mapped to our clubs; unmatched names are reported, not guessed. Player names matched one-to-one within a team, allowing initials and cut-off names. Its status labels are not used for confirmation. The share of main-source absences it also lists is tracked per league; a sudden drop, an unreadable page or an unknown label raises a data alert.
- Licence
- Facts onlyTerms review pending
Results (90-minute score)
- Used for
- Grading tracked forecasts from 90-minute league scores. Coverage statistics count tracked results, not every historical match.
- Update schedule
- Hourly check against the second source; open data checked after the history refresh (12-hour cache).
- Checks
- Disagreements are held. A missing second source allows single-source grading. Later matching sources are appended without regrading. Open-data disagreements on scored matches require review; no automatic correction. If the checker crashes, all result imports are skipped for that run and retried next time.
- Licence
- Facts onlyTerms review pending
Results cross-check and injuries/suspensions
- Used for
- Second results source, and the main team news source on match pages, team pages and in match dossiers.
- Update schedule
- Matches cached one hour (completed past days permanently); match details three hours. At least 0.5 seconds between requests.
- Checks
- Exact mapped teams and same home/away order, date within one day. Conflicting scores held; unavailable source explicitly reported. Player confirmation: in the Premier League, matching absence status from a specialist injury table; in nine other leagues, the player is also listed by a second injury table and this source reports out or suspended. A missing absence list is reported separately from a read error; neither confirms a fully available squad.
- Licence
- Facts onlyTerms review pending
Fixtures and kickoff times
- Used for
- Fixture selection, kickoff times, venues and the forecast lock time (24 hours before kickoff).
- Update schedule
- Every hour at minute 05 UTC. Full runs at 00:05, 06:05, 12:05 and 18:05 fetch the next 10 days; other runs fetch today and the previous two days.
- Checks
- Mapped teams and fixture fields are validated. Kickoff times are not cross-checked with a second provider.
- Licence
- Facts onlyTerms review pending
Team news and injuries
- Used for
- Squad availability on match pages, team pages and in match dossiers. The main source uses each team's nearest upcoming league fixture within 8 days; a second injury table is added in every league except the Saudi Pro League.
- Update schedule
- Collected during hourly model runs. Match details cached 3 hours; the Premier League injury table 1 hour; the other injury tables 6 hours. Dossiers use the same sources when that stage runs.
- Checks
- Observation times are recorded; a publication date is not always available. Two-source confirmation: in the Premier League, matching full names and absence status in both sources; in other leagues, the player listed by both sources with the main source reporting out or suspended. Pages show how many sources list each player. No list, no upcoming fixture and source read errors are distinct; none proves a fully available squad.
- Licence
- Facts onlyTerms review pending
Shots on target
- Used for
- Not collected or used by the current model; it uses goals and results.
- Update schedule
- No collection scheduled.
- Checks
- No shots-on-target checks are implemented.
- Licence
- Facts onlyNot used yet
Historical results
- Used for
- Historical results for Elo, Dixon-Coles and backtests. Our live-season data feed fills gaps separately under its own record.
- Update schedule
- Checked during hourly model runs. Past seasons cached once; the current season refreshed after 12 hours. The live-season feed fills configured gaps and recent results.
- Checks
- Team mapping, scores, duplicate fixtures and season coverage are checked. Conflicting historical scores are reported, with the open data preferred. Matching tracked results receive delayed confirmation without regrading; disagreements require review.
- Licence
- CC0 (public domain)
Images
- Used for
- Hero and article illustrations. Stadium reconstructions have recorded reference material and are labelled as AI reconstructions.
- Update schedule
- Added by an editor; no automatic collection schedule.
- Checks
- The image manifest records origins, references and display labels; media checks verify the displayed assets.
- Licence
- Made for this site
Source change history
- Changed
Club crests removed from the whole site. Every club now appears with a plain shield badge drawn for this site, and no club crests or competition logos are used.
- Added
A second, independent team news source in nine leagues (not the Premier League, which already has two, or the Saudi Pro League). A player both sources list counts as confirmed when our main source reports them out or suspended.
- Changed
Club crests no longer shown for Premier League, LaLiga and Bundesliga clubs (plain shield badges instead). Crests added for every Primeira Liga club, from the official league website.
- Changed
Content photos from an open image library replaced by AI illustrations made for this site and labelled on the page. Club crests unchanged.
- Added
Club crests from the official websites of the five leagues, for identification only, with a switch to turn them off.
- Excluded
Datasets licensed for private use only kept out of the production pipeline and the site. Historical results come from openly licensed (CC0) data.
Spotted a wrong score, kickoff time or name? Report a data issue; confirmed corrections are logged after review.
For information and entertainment only. Not betting advice. 18+. Predictions are probabilities, not certainties. Responsible gambling