Where to Download Football Goals CSV Data for Analysis

Andy
October 20, 2026
60 Views
Where to Download Football Goals CSV Data for Analysis
What does each row record?

The word “goals” can mean several different things in a football CSV.

A file might show Arsenal 2–1 Chelsea in one row but give no clue who scored or when. That works for comparing match totals, not for charting goals by player or minute. A scorers file names the players; a goal-event file typically records each goal separately, with a match ID and minute.

Top Free Bets for October

BetUS

BetUS

200% up to $1,000
Claim Offer
BetNow

BetNow

$2,500
Claim Offer
MyBookie

MyBookie

$500 + $25 Casino Chip
Claim Offer
Bet105

Bet105

$50 Free Bet
Claim Offer
BUSR Sports

BUSR Sports

100% up to $1,000
Claim Offer
Everygame Sports

Everygame Sports

100% up to $500
Claim Offer
BetOnline

BetOnline

$250 + 100 Free Spins
Claim Offer
BetWhale

BetWhale

125% Sports Bonus + $25 Chip
Claim Offer
BetAnything

BetAnything

35% Free Play up to $105.
Claim Offer
Xbet

Xbet

50% up to $200
Claim Offer
Bovada

Bovada

50% up to $250
Claim Offer
Bookmaker

Bookmaker

100% up to $400 USD
Claim Offer

Some CSVs labelled “goals” contain betting lines such as over/under 2.5, rather than results. Before downloading a season archive, check the column names and a few sample rows. Is each row a match, a scorer, or a single goal? That quick check helps rule out a plausible-looking file that cannot answer the question.

Choose the right level of goal data

Before searching for a CSV, specify the competitions and seasons needed—for example, Premier League 2022–23 and 2023–24 rather than “English football.” Then decide what each row must represent. A match-results file typically has one row per fixture, with a date, home team, away team, and full-time goals for each side. That is enough to calculate team totals, goals per match, or home-versus-away scoring.

Questions about when goals happened need one row per goal. Look for a match identifier, scoring team, scorer, and minute. Added-time notation such as 45+2 matters for analyzing goal timing intervals; a final score cannot show when goals arrived or in what order.

A quick look at sample rows can save a wasted download. If a 3–2 match appears once, the file likely contains results. If it appears five times, with a different minute on each row, it may contain the goal events needed.

Download league results from Football-Data.co.uk

Football-Data.co.uk is a practical first stop for match-by-match league scores. Its downloadable CSVs put one fixture on each row, making them useful for calculating goal totals without collecting scores from individual match pages.

On the site, open the relevant country’s results page, then find the competition and season needed. Download the linked CSV and inspect its first few rows before combining seasons or calculating totals. This quick check helps catch a wrong division or season when several files are listed together.

The columns to look for are:

  • HomeTeam and AwayTeam: the teams in the fixture.
  • FTHG: full-time home goals.
  • FTAG: full-time away goals.

Add FTHG and FTAG for each match’s total goals. To calculate a team’s average goals in home matches, group rows by HomeTeam and average FTHG. These fields give final scores, not scorers or goal times. Check each downloaded file’s columns before building a repeatable analysis: season coverage varies by competition, and extra fields such as halftime scores and betting odds are not consistent across files.

Download

Save a season with its source details

  1. Find the league and season

    On Football-Data.co.uk, open the results listing for the country and division of interest. Select one completed season rather than downloading several years at once.

  2. Save the CSV

    Follow that season’s CSV link and save the file with a name such as premier_league_2023-24.csv. If the data opens in a browser tab, save the linked CSV rather than the page as HTML.

  3. Check a few rows

    Open the file and confirm that the dates, teams, and full-time home and away goals appear in separate columns. Check that the first and last matches fall within the intended season.

  4. Record its provenance

    Beside the file, note the exact CSV URL, league, season, and download date. A small text file or spreadsheet works.

Expand after the first check

Once one file opens correctly, compare its columns with the next season before combining them. Older seasons may not have every field found in newer downloads.

Check Kaggle and GitHub for other goal data

If Football-Data.co.uk lacks the needed league, season, or goal detail, search Kaggle and GitHub using the competition name plus terms such as “match results CSV” or “goal events CSV.” Kaggle dataset descriptions often explain the source and included seasons; GitHub repositories may also show how the files were assembled.

Before downloading, check the description, update date, and file preview. A column named goals might mean a team's match total, a player's season total, or one recorded goal per row. Compare a few rows with a known match to confirm what each record represents, and check whether team names, dates, and score columns are consistent throughout the file.

Also distinguish a recently updated page from recently updated data: a repository can be active while its CSV still ends several seasons ago. For a one-time analysis, a suitable snapshot may be enough. If fresh results are needed regularly, automating data collection with an API may be more practical than repeatedly searching for new downloads.

Check coverage and reuse rights

A CSV can be valid and still answer the wrong question. Before using it, compare its competition list and season range with the planned analysis. A file labeled “European football” may contain only a few top divisions, while an older season may be missing cup matches or lower leagues. For historical work, note gaps rather than treating them as seasons with no goals. Guides to downloading historical football data can help identify other sources for missing years.

Check what the update date means. A recent upload may simply repackage old records; a season-ending date does not prove every match was included. Compare the latest match date with the stated coverage, and spot-check a season’s match count against an official fixture list.

Finally, separate the host from the original source. A Kaggle page or GitHub repository may distribute data collected elsewhere. Follow any source citation, then read the stated license or usage terms at both locations. If permission to republish is unclear, use the file for private analysis and seek clarification before sharing the CSV.

Quick check

Inspect the CSV before calculating goals

  • Open a copy in a spreadsheet or analysis tool

    Check that each match occupies one row. If an entire row lands in one cell, import the file again with the correct delimiter, usually a comma or semicolon.

  • Check text and headers

    Look for garbled team names or symbols, which may indicate an encoding mismatch. Confirm that the first row contains column names rather than match data.

  • Interpret the dates

    Confirm whether dates use day-first or month-first order before sorting or filtering. A value such as 04/05/2024 is ambiguous without the source’s date convention.

  • Test the goal columns

    Find the home and away full-time scores, often named FTHG and FTAG. Check that populated scores are numbers, not text, before adding them.

  • Scan incomplete rows and extra fields

    Filter for blank scores, postponed fixtures, and columns not expected from the source description. Decide which rows and fields need cleaning before calculating averages.

A blank score is not a nil score

A postponed or unplayed match may have empty goal cells. Treating those blanks as zero can distort match counts and goal averages; check the fixture status first.

Calculate total match goals

For a fixture-level CSV, FTHG + FTAG = total match goals: full-time home goals plus full-time away goals. A 2–1 result therefore has 3 total goals. Add a total_goals column rather than replacing either score column; the originals still show which side scored and support separate home–away comparisons.

In a spreadsheet where FTHG is in E2 and FTAG is in F2, enter =IF(OR(E2="",F2=""),"",E2+F2) in the new column and fill it down. This leaves unplayed fixtures blank instead of treating a missing score as zero. For a season average, divide the sum of total_goals by the number of matches with both scores recorded; calculating goals per game from CSV data uses that match-level measure.

Keep the scoring period consistent

Here, full-time means the league result after regulation time, including stoppage time. Do not mix these totals with cup scores that include extra time; shootout kicks are not match goals.

Validate and combine season files

Before combining seasons, spot-check a few rows against the original results page. Compare the date, teams, and full-time score, including a high-scoring match or a draw. This can reveal a shifted column or a score recorded at half-time rather than full-time.

Check for duplicate fixtures using competition, season, date, home team, and away team together. If two rows match, inspect them before deleting either: an updated result or a rescheduled fixture may explain the overlap.

Compare the number of fixtures and the missing-score rate for each season. A season with far fewer rows than its neighbours may be incomplete, while blank scores may reflect postponed or unplayed matches. Count completed matches separately so those blanks do not distort goal averages. League size and schedule changes can also explain differences in match counts.

When appending CSVs, map equivalent fields to consistent names—for example, FTHG and home_goals to one home-goals column. Add competition and season to every row before merging, even if each source file contains only one league and season. Keep the original files so any suspicious row can be traced back.

Conclusion

A manageable starting point is one league-season CSV with one row per fixture. Define “goals” before calculating anything: for a results file, count the home and away goals in the recorded full-time score, normally covering 90 minutes plus stoppage time—not penalty-shootout conversions. That definition keeps match totals separate from the scorer and event records discussed in a broader guide to football goal statistics.

Save the original download and note its URL, competition, season, download date, and reuse terms. Check that the home-goal and away-goal fields are numeric, dates import correctly, and unplayed fixtures have not become zero-goal draws. Calculate totals for a few recognizable matches and compare them with the published scores. Only then add another season, after checking that its columns and score conventions mean the same thing.

Top Free Bets for October

BetUS

BetUS

200% up to $1,000
Claim Offer
BetNow

BetNow

$2,500
Claim Offer
MyBookie

MyBookie

$500 + $25 Casino Chip
Claim Offer
Bet105

Bet105

$50 Free Bet
Claim Offer
BUSR Sports

BUSR Sports

100% up to $1,000
Claim Offer
Everygame Sports

Everygame Sports

100% up to $500
Claim Offer
BetOnline

BetOnline

$250 + 100 Free Spins
Claim Offer
BetWhale

BetWhale

125% Sports Bonus + $25 Chip
Claim Offer
BetAnything

BetAnything

35% Free Play up to $105.
Claim Offer
Xbet

Xbet

50% up to $200
Claim Offer
Bovada

Bovada

50% up to $250
Claim Offer
Bookmaker

Bookmaker

100% up to $400 USD
Claim Offer
Author Andy

Hi I'm Andy and I love to report on the latest football scores and Tables. I also like to have a bet on the football and occasionaly on the horses. On this website I have new bookmaker offers listed that will give you free bets and bonuses to help you beat the bookies. Enjoy your stay.

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted