Free signup + 7 days PRO included Create my account
Data Shop › Football › Machine Learning
Football · Machine learning · 2021 → 2026

90 pre-match stats per match, computed without looking ahead.

Form over 5, 10 and 20 matches, xG and OAxG (opponent-adjusted xG), rest, standings, shots, corners, cards, league context — and the real outcomes to predict. Every stat only uses matches played before the match day.

28,036Matches
99Columns
15Leagues
5Full seasons
football_features_2425.csv
11/25Trabzonspor – Ad. DemirsporOAxG 1.19T11.2 / 0.8H
03/29Watford – PlymouthOAxG 0.88E10.8 / 1.0D
04/12Borussia Monchengladbach – SC FreiburgOAxG 1.65D12.0 / 0.8A
05/11Feyenoord – PSV EindhovenOAxG 2.53N13.0 / 3.0A
05/14Volos NFC – LamiaOAxG 1.06G12.0 / 1.0H
05/25Liverpool – Crystal PalaceOAxG 2.57E02.2 / 1.8D
extract · 14 / 99 col.Figures measured on the delivered files — 2026-11-02.
Pricing

Choose your option

One purchase, one download: CSV + Parquet and a README documenting every column.

Instant download

Football Machine Learning

2021 → 2026, 15 leagues.

€39
≈ 0.1 cent per game
  • 28,036 matches, one file per season + a combined file
  • Computed by ProbWin, not a provider re-export
  • Joins the odds files on match_id

Download link valid 72 h, 5 downloads

Buy — €39

Football Complete Pack

All 3 datasets, all seasons.

€69
  • 1X2 & Results
  • Over/Under 2.5
  • Machine Learning
See the pack
Secure payment StripeInstant download after paymentCSV + Parquet + detailed READMELicence your models, commercial too
Use cases

The features are ready, the model is yours

Join the 1X2 or Over/Under odds on match_id to measure a real return.

Train a 1X2 model

Pre-match stats as inputs, result as target.

f = pd.read_parquet("football_features_all_seasons.parquet")
X = f.filter(regex="_l5$|_l10$|oaxg|days_rest|ranking")
y = f.result

Test OAxG

xG adjusted for the level of opponents faced, computed before each match.

f[["home_oaxg_diff", "away_oaxg_diff", "total_goals"]].corr()

Join the odds

Turn a prediction into a return backtest.

odds = pd.read_parquet("football_1x2_all_seasons.parquet")
f.merge(odds, on="match_id")
Transparency

One rule: nothing after kick-off. Verified.

Every feature is recomputed by ProbWin from a deduplicated match history, using only matches played before the match day. Full windows required (otherwise the cell is empty); standings, league rates, season xG and OAxG are season-to-date. Independent check: 900 values recomputed, 0 difference.

History starts in 2021-22: the first weeks of that season have empty long windows. The fill rate of every column is shown below.

5-match form 95.9 %Filled
OAxG 95.5 %Filled
Rest days 99.4 %Filled
No surprises

What's in the file — and what isn't

Included

  • Form, goals, points over 5/10/20 matches
  • xG and OAxG (opponent-adjusted xG), 15 leagues
  • Rest, standings, shots, corners, cards
  • Targets: result, total goals, both teams scored

Not included

  • Odds (→ 1X2 and Over/Under files)
  • Line-ups and injuries
  • Cups and European competitions
Columns

Every column, with its fill rate

Measured on the delivered file. 100% = no missing values.

Match

Match identity

match_id100 %season100 %league100 %match_date100 %home_team100 %away_team100 %

Targets

H/D/A result, total goals, both teams scored

result100 %total_goals100 %btts100 %

Goals & form

Goals for/against over 5/10/20 matches, points, margins, home/away splits

home_goals_scored_l595.9 %home_goals_conceded_l595.9 %away_goals_scored_l595.8 %away_goals_conceded_l595.8 %home_goals_scored_l1091.7 %home_goals_conceded_l1091.7 %away_goals_scored_l1091.6 %away_goals_conceded_l1091.6 %home_goals_scored_l2083.8 %home_goals_conceded_l2083.8 %away_goals_scored_l2083.8 %away_goals_conceded_l2083.8 %goals_diff_l594.4 %combined_goals_avg94.4 %home_points_l595.9 %away_points_l595.8 %home_points_l1091.7 %away_points_l1091.6 %home_form_points95.9 %away_form_points95.8 %home_avg_margin_l595.9 %away_avg_margin_l595.8 %home_home_goals_avg91.7 %away_away_goals_avg91.7 %home_scoring_rate91.7 %away_scoring_rate91.6 %home_conceding_rate91.7 %away_conceding_rate91.6 %

Defence

Clean sheets (rate and count), failed to score — last 10

home_clean_sheet_rate_l1091.7 %away_clean_sheet_rate_l1091.6 %home_clean_sheets_l1091.7 %away_clean_sheets_l1091.6 %home_failed_to_score_l1091.7 %away_failed_to_score_l1091.6 %

xG & OAxG

Rolling xG (last 5), season-to-date averages, OAxG

home_xg_for_avg96.9 %home_xg_against_avg96.9 %away_xg_for_avg96.8 %away_xg_against_avg96.8 %home_xg_rolling_l597.1 %away_xg_rolling_l597.1 %home_xga_rolling_l597.1 %away_xga_rolling_l597.1 %home_xg_diff96.9 %away_xg_diff96.8 %combined_xg96.1 %combined_xg_avg95.5 %xg_diff96.1 %home_xg_provider_share_l597.1 %away_xg_provider_share_l597.1 %home_xg_provider_share_season96.9 %away_xg_provider_share_season96.8 %home_oaxg_for95.5 %home_oaxg_against95.5 %home_oaxg_diff95.5 %away_oaxg_for95.5 %away_oaxg_against95.5 %away_oaxg_diff95.5 %oaxg_diff_combined95.5 %

Schedule & table

Rest, matches in 14 days, league position and goal difference on match morning

days_rest_home99.4 %days_rest_away99.4 %match_count_l14_home100 %match_count_l14_away100 %home_ranking96.9 %away_ranking96.9 %ranking_position_diff96.9 %home_gd_cumulative96.9 %away_gd_cumulative96.9 %

Shots, corners, cards

Shots on target, shot share, corners, weighted cards, first-half goals

home_shots_target_l597.4 %away_shots_target_l597.4 %home_shots_target_for_l1095.8 %home_shots_target_against_l1095.8 %away_shots_target_for_l1095.7 %away_shots_target_against_l1095.7 %home_shots_ratio_l1095.8 %away_shots_ratio_l1095.7 %home_corners_for_l1095.8 %home_corners_against_l1095.8 %away_corners_for_l1095.7 %away_corners_against_l1095.7 %home_cards_weighted_l1095.8 %away_cards_weighted_l1095.7 %home_first_half_goals_pct_l1091.7 %away_first_half_goals_pct_l1091.6 %

League context

League season-to-date rates, teams' recent rates

league_avg_goals98.8 %league_over25_rate98.8 %league_btts_rate98.8 %home_over25_rate_l1091.7 %away_over25_rate_l1091.6 %home_btts_rate_l1091.7 %away_btts_rate_l1091.6 %
Preview

The file, exactly as you'll get it

Six real rows, main columns. Download 50 free rows with every column to check it fits your pipeline.

football_features_2425.csv — extract Download 50 free rows
match_dateleaguehome_teamaway_teamhome_goals_scored_l5away_goals_scored_l5home_oaxg_foraway_oaxg_fordays_rest_homedays_rest_awayhome_rankingaway_rankingresulttotal_goals
2024-11-25T1TrabzonsporAd. Demirspor1.20.81.1890.9416.016.014.019.0H5
2025-03-29E1WatfordPlymouth0.81.00.8840.7214.014.010.024.0D0
2025-04-12D1Borussia MonchengladbachSC Freiburg2.00.81.6511.2216.07.06.07.0A3
2025-05-11N1FeyenoordPSV Eindhoven3.03.02.5323.3988.08.03.02.0A5
2025-05-14G1Volos NFCLamia2.01.01.0611.0544.04.011.014.0H3
2025-05-25E0LiverpoolCrystal Palace2.21.82.5672.5996.05.01.012.0D2
Questions

Before you buy

What is OAxG?

A team's xG adjusted for the defensive and attacking level of the opponents it faced. The formula is in the README.

How do I get the file?

Right after payment a download link appears on screen and is emailed to you. The archive contains CSV and Parquet files plus a README documenting every column.

Can I use it in a commercial product?

Yes for your models, analyses and tools, commercial ones included. Reselling or redistributing the files themselves is not allowed.

A question before buying?

Email [email protected] — the founder answers, usually the same day.

Also available

Complete your data

90 stats, 28,036 matches, no look-ahead.

Choose my option
Figures measured on the delivered files — 2026-11-02. Not affiliated with the leagues mentioned.
GAMBLING PROHIBITED FOR MINORS. Gambling carries risks: debt, addiction, social isolation. Help & responsible play · BeGambleAware · GamCare: 0808 802 0133 · NCPG Helpline: 1-800-522-4700