Free sports data CSV: what you can download, and what you can't
Free sports statistics exist, but the format surprises people. The big leagues sell their feeds, and most of what you find labeled "free sports data" is an API with rate limits, not a file. The sources below are the exception: they publish results you can download and keep, under licenses that permit commercial work. Every fact on this page was verified on 2026-09-09, license and all.
The deepest CSV of the group is NFL games: a free 22-row sample with betting lines downloads here with no signup, the full 7,548-row file queries free over MCP, and the complete pack is a one-time purchase.
Verified free sources, league by league
Each row below was checked the day this page was published: the endpoint responded, and the license is stated by the source itself.
| Source | Sport | Format | License / terms | Verified |
|---|---|---|---|---|
| nflverse-data | NFL games, 1999-2026 | CSV, one row per game, direct download | CC BY 4.0, commercial use with attribution | 2026-09-09 |
| openfootball/football.json | Soccer, English Premier League, Bundesliga, Serie A, and more | JSON files, one per season | CC0, public domain | 2026-09-09 |
| MLB Stats API | MLB teams, players, schedules, game feeds | JSON over HTTP, no key | Free to query; content copyright MLB Advanced Media, terms posted with responses | 2026-09-09 |
| balldontlie | NBA, MLB, NFL and 20+ leagues | JSON API, OpenAPI specs, MCP server | Free tier at 5 requests per minute; paid tiers above that | 2026-09-09 |
Two notes on that table. First, openfootball ships JSON, not CSV; it converts to CSV in one spreadsheet import if you need the flat format. Second, the MLB Stats API has no formal reuse license beyond its copyright notice, so treat it as fine for personal analysis and check the posted terms before redistributing. nflverse and openfootball are the two with clean commercial licenses. For what those licenses let you do with the rows, the public domain datasets guide maps commercial use and credit lines pack by pack.
Sports Reference sites (Pro-Football-Reference and siblings) come up in every search for sports statistics. They are excellent for reading a stat in a browser, but their terms do not permit bulk scraping or redistribution, so they are not a dataset download. We left them out of the table for that reason.
The ESPN endpoints sit in the same free-but-undocumented category as the MLB Stats API, and the ESPN API in Python guide walks through them with requests examples checked live.
CSV download vs API: what each format buys you
The choice is less about preference and more about what the source publishes. nflverse releases CSV files weekly through GitHub Actions; openfootball commits JSON per season; MLB and balldontlie serve queries only. When a CSV exists, it tends to win for analysis work:
| CSV file | API | |
|---|---|---|
| Access | One download, then offline | Network call per query, rate limits apply |
| Schema | Fixed and inspectable in a spreadsheet | Read from docs or OpenAPI spec |
| Freshness | As current as the last release | Live, best for scores in progress |
| Best for | Season-level analysis, models, joins across eras | Dashboards, live scores, single lookups |
| Reproducibility | Pin a version, rerun forever | Responses can change under you |
A concrete example of the reproducibility point: the nflverse games file on 2026-09-06 carries 7,548 rows and 46 columns, and a checksum recorded in the pack proves the copy never changed. Six months from now, that same file from the live repo will have moved on. An API response cannot offer you that anchor.
The NFL games CSV in detail
The nflverse games file is the one source in the table that covers a whole league's history in a single flat file: 7,548 games, 1999 through the full 2026 schedule, 46 columns per row. Final scores sit next to the closing spread and total (from 1999), American-odds moneylines and spread/total odds (from 2006), rest days, starting quarterbacks, coaches, referee, stadium, roof, surface, and kickoff weather.
The Data Vault pack ships those rows as a checksummed copy plus two derived tables and a data dictionary. The games.csv column guide defines every column, including the spread sign convention (stored relative to the home team) and the push rules. For a worked read of the condition columns, NFL stadium weather runs dome vs outdoor scoring and the hottest kickoffs on the real 22-row sample. If you are weighing the raw nflverse download against the preprocessed pack, that comparison is spelled out honestly, including the cases where raw is enough.
The two derived tables: team-records-by-season.csv, 861 rows covering wins, losses, points, against-the-spread records with pushes broken out, and over/under records per team per season; and season-summaries.csv, 27 rows, one per season 1999-2025, free to download in full.
Query the full file over MCP, free, no key
You can filter the full 7,548-row file without downloading it. The dataset-mcp server queries the released files directly: 100 rows per call, filters on any column, no API key, no cost. Start it with:
npx --allow-git=all -y github:jayjex/dataset-mcp
# plain form works on npm 10/11: npx -y github:jayjex/dataset-mcp
Example query, every 2025-season game, first page:
query_dataset("nfl-games", {where: [{column: "season", op: "=", value: "2025"}], limit: 10})
total_matched: 285 | next_offset: 10
2025_01_DAL_PHI 2025-09-04 DAL@PHI 20-24 spread=8.5 total=47.5
2025_01_KC_LAC 2025-09-05 KC@LAC 21-27 spread=-3 total=47.5
...
The season filter returns 285 games for 2025: 272 regular-season games plus the 13 playoff games. Filter operators are =, contains (case-insensitive), gt, and lt (numeric-aware, with date handling for gameday). columns picks a subset, offset pages through large results, and get_stats returns row counts, numeric min/max/mean, and top-N values for any column. Setup details live on the for agents page, and other free datasets for agent pipelines are listed on the free API datasets page.
Free sample vs full pack
| Free | Full pack | |
|---|---|---|
| games.csv | 22-row sample, 14 of 46 columns | all 7,548 rows, 46 columns |
| team-records-by-season.csv | not included | 861 rows |
| season-summaries.csv | all 27 rows | all 27 rows |
| data dictionary | this page and the column guide | full dictionary + source checksums |
| MCP queries | full file, free, 100 rows/call, no key | |
Checkout and download run through Getly. The full pack is 3 CSVs (7,548 + 861 + 27 rows), data dictionary, source SHA-256 checksums.
What this data is not
Everything on this page is historical record: final results and the closing lines as they stood at each game. There are no picks, no predictions, no betting advice, and no model outputs anywhere in the pack or in these guides. Lines and odds are included as facts about each game, the way a box score reports the weather. Nothing here tells you what to wager on, and nothing here updates live; for current odds you would need a live feed, which none of these sources are.
What the data is good for: research and analysis of what already happened. Home win rates by decade, scoring trends across eras, how often favorites covered, weather effects on totals, training and testing models on a 27-season split. Analysts and fantasy players make up most of the audience for this kind of file, and none of those questions need a prediction engine.
FAQ
Where can I download free sports data as CSV?
For NFL games, nflverse-data publishes one row per game since 1999 as a direct CSV download under CC BY 4.0. For soccer, openfootball publishes league results as CC0 JSON files. Here, a 22-row NFL games sample and the complete season-summaries.csv are free downloads with no signup. Most other sports sources are APIs, not files.
Can I use free NFL game data commercially?
Yes, with attribution. nflverse-data is licensed CC BY 4.0, which permits commercial use when you credit the source, for example: "Data from nflverse, CC BY 4.0". openfootball is CC0, which needs no credit at all. The Data Vault pack carries the same CC BY 4.0 terms on its source rows and derived tables.
Can I query sports statistics without an API key?
Yes. nflverse files and openfootball JSON are plain downloads, and the MLB Stats API answers without any key. The dataset-mcp server also queries the full 7,548-row NFL games file for free with no key, 100 rows per call, filtering on any column.