NFL Games API: Scores, Schedule and Results
Pricing
from $0.70 / 1,000 games
NFL Games API: Scores, Schedule and Results
NFL game schedules, scores and results since 1999 as one row per game: season, week, teams, score, winner, margin, stadium, roof, temperature and wind. Open nflverse data under CC BY 4.0, no login. $1.00 per 1,000 games.
Pricing
from $0.70 / 1,000 games
Rating
0.0
(0)
Developer
Don Mangu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Get NFL games by season, week and team as one row per game, for $1.00 per 1,000 games.
Add the seasons you need and filter by week, team, game type or final games only. Each row has the date, kickoff time, teams, score, winner, margin, stadium, roof, surface, temperature, wind and rest days. The data covers the seasons 1999 to now. It comes from the open nflverse games file and is read at run time, so you get the same results as the file shows that day. You need no login and no API key.
Game data: nflverse (github.com/nflverse/nflverse-data), CC BY 4.0. Fields filtered and reformatted. Not affiliated with or endorsed by the NFL.
Sample output
One row per game. These are real rows from the 2026 season, newest first, read on 6 October 2026:
| Date | Week | Away | Score | Home | Winner | Margin |
|---|---|---|---|---|---|---|
| 2026-10-05 | 4 | ATL | 45-24 | NO | ATL | 21 |
| 2026-10-04 | 4 | DET | 26-32 | CAR | CAR | 6 |
| 2026-10-04 | 4 | LAC | 23-30 | SEA | SEA | 7 |
| 2026-10-04 | 4 | KC | 30-27 | LV | KC | 3 |
| 2026-10-04 | 4 | DEN | 14-24 | SF | SF | 10 |
The first row in full:
{"game_id": "2026_04_ATL_NO","season": 2026,"game_type": "REG","week": 4,"gameday": "2026-10-05","gametime": "20:15","weekday": "Monday","away_team": "ATL","home_team": "NO","away_score": 45,"home_score": 24,"result": -21,"total": 69,"overtime": false,"stadium": "Caesars Superdome","roof": "dome","surface": null,"temp": null,"wind": null,"away_rest": 11,"home_rest": 8,"div_game": true,"winner": "ATL","margin": 21,"is_final": true}
The key-value store of the run also holds an ATTRIBUTION record with the data credit, the licence link and a note on what was changed, and a STATS record with the run counts.
How to use the NFL games API
- Open the Actor and go to the Input tab.
- In Seasons, add one or more years such as
2025. Leave it empty to get the current season. - Optionally set Weeks, Teams, Game types, Only final games, Sort order and Max games.
- Click Start, then open the Overview view of the dataset. Download it as JSON, CSV or Excel.
You can also call the Actor from your own code with the Apify API, run it on a schedule, or connect it to Make, Zapier or n8n.
What you get
- One row per NFL game, regular season and playoffs, from 1999 to the current season.
- Season, week, game type, date, weekday and kickoff time.
- Away and home team codes, away and home score, the result (home score minus away score), the total points and an overtime flag.
- Stadium, roof (outdoors, open, closed or dome), surface, temperature and wind where the source has them.
- Days of rest for both teams and a flag for division games.
- Three derived fields:
winner(a team code, orTIE),margin(points, never negative) andis_final. - Filters by season, week, team and game type, and a sort order of oldest or newest first.
Games that are not played yet are in the file with a date and no score. They have is_final set to false. Turn on Only final games to leave them out.
Pricing
You pay per game row saved. The price is $1.00 per 1,000 games, which is $0.001 per game. Apify also charges a start event of $0.00005 per GB of run memory, which is $0.0000125 at the default 256 MB. Apify platform usage is included. Status rows (a season without games, or filters that match nothing) are free.
| Example | Games | Cost |
|---|---|---|
| Week 1 of one season (16 games) | 16 | $0.016 |
| One regular season (272 games) | 272 | $0.272 |
| One season with playoffs (2025, 285 games) | 285 | $0.285 |
| Every game in the file, 1999 to 2026 | 7,548 | $7.548 |
Paid plans get lower prices per game as your Apify plan tier goes up. You can set a maximum cost per run in the run options. The Actor stops when it reaches that limit and says so in the status message.
Input
{"seasons": ["2026"],"teams": ["KC"],"gameTypes": ["REG"],"onlyFinal": true,"sortOrder": "desc","maxGames": 10}
All fields are optional. seasons takes four digit years. A season is named after the year it starts, so the games of January 2026 belong to season 2025. weeks takes numbers from 1 to 22. teams takes team codes such as KC or team names such as Kansas City Chiefs. gameTypes takes REG for the regular season or POST for the playoffs. WC, DIV, CON and SB select one playoff round. maxGames defaults to 1,000 and you pay for each row returned. A wrong value, for example the week 99 or the team Nobody, stops the run at once with a message that says what to change. No game is charged.
Output fields
| Field | Meaning |
|---|---|
game_id | The id of the game: season, week, away team and home team |
season, week, game_type | Season year, week number, and REG, WC, DIV, CON or SB |
gameday, weekday, gametime | Date, weekday and kickoff time. gametime is 24-hour time in the Eastern time zone, whatever the place of the game |
away_team, home_team | Team codes as the source writes them for that season |
away_score, home_score | Points. Null until the game is final |
result, total | Home score minus away score, and the sum of both scores |
overtime | True when the game went to overtime |
stadium, roof, surface | Venue details as listed in the source. Null when the source has no value |
temp, wind | Temperature and wind speed in miles per hour, for outdoor and open roof games only. The source does not state the unit of the temperature |
away_rest, home_rest | Days of rest before the game |
div_game | True when both teams play in the same division |
winner, margin, is_final | Derived by this Actor: the winning team code or TIE, the point margin, and whether the game has a final score |
Seasons and team codes
The file holds the seasons 1999 to 2026 today, 7,548 games. A season with no games, for example one that the NFL has not published yet, returns one free status row. The source uses the team code of the season. For example, the Raiders are OAK before 2020 and LV from 2020, the Chargers are SD before 2017 and LAC from 2017, and the Rams are STL before 2016 and LA from 2016. If you type a nickname such as Raiders, the Actor looks for all codes of that team.
FAQ
Is it legal to use this data?
The Actor reads the nflverse games file. The nflverse-data repository on GitHub is licensed under Creative Commons Attribution 4.0 (CC BY 4.0). That licence allows reuse, including commercial use, if you give credit, link the licence and say what was changed. The credit line is at the top of this page and in the ATTRIBUTION record of every run. Fields were filtered and reformatted. The same games table also sits in the nflverse nfldata repository, which has no licence file, so I cannot show a written licence for that copy. I built this Actor from the CC BY 4.0 release. This is not legal advice. Check that your own use follows the laws and terms that apply to you. "NFL" and team names are trademarks of their owners. They appear here only as plain facts, and this Actor is not affiliated with or endorsed by the NFL or any team.
Which data is not included?
There are no player names, no coach or referee names, no play by play, no live scores and no betting lines or odds. The source columns for those are dropped on purpose. You get team level game data only.
How fresh is the data?
The Actor downloads the file at the start of each run. A result appears when the nflverse file has it. The file is updated often in season, and I did not measure the delay. The Actor does not check the score against a second source.
Why did I get a status row and no games?
A not_found row means the file has no games for that season. A no_matching_games row means the file was read but no game fits your filters, for example a team code that the team did not use in that season. A source_error row means the data host did not answer. The Actor tries a second address for the same table first. No status row is charged.
Why did my run stop early?
The maximum cost per run was reached. This limit comes from the run options. On a Free plan it can also come from the credit that is left on your account. Raise the limit, add credit, or lower Max games. The status message of the run says how many games were saved.
Which memory setting should I use?
Keep the default of 256 MB or higher. The file is about 2 MB and a run takes a few seconds.
Related Actors
- Football Fixtures API: Scores, Results and League Table (same author) returns football (soccer) fixtures, results and a computed league table.
About this Actor
I built this Actor as an independent developer. Game data: nflverse (github.com/nflverse/nflverse-data), CC BY 4.0. Fields filtered and reformatted. Not affiliated with or endorsed by the NFL. If this saved you time, a rating helps others find it.