Pro-Football-Reference APIpro-football-reference.com ↗
Access NFL schedules, standings, boxscores, play-by-play, player profiles, and advanced stats from Pro-Football-Reference via a structured JSON API.
What is the Pro-Football-Reference API?
This API exposes 8 endpoints covering NFL schedules, standings, game boxscores, play-by-play data, player profiles, and both standard and advanced season statistics from Pro-Football-Reference. The get_game_boxscore endpoint returns player-level offensive and defensive stats alongside game metadata like Vegas line, attendance, roof type, and a scoring summary. The get_season_advanced_stats endpoint adds tracking-derived metrics — air yards, yards after contact, and more — for seasons from 2018 onward.
curl -X GET 'https://api.parse.bot/scraper/68f10b93-1fc8-410d-af5c-7f1b3d6e618d/get_season_schedule?year=2023' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve the full NFL schedule for a given season. Returns every regular-season and playoff game with final scores, yardage totals, turnover counts, and a game_id suitable for drill-down into boxscores and play-by-play. One request per season; no pagination.
| Param | Type | Description |
|---|---|---|
| yearrequired | string | NFL season year as a four-digit string (e.g. '2023' for the 2023-24 season). |
{
"type": "object",
"fields": {
"year": "string, the requested season year",
"games": "array of game objects with week_num, game_date, winner, loser, pts_win, pts_lose, game_id, yards_win, yards_lose, to_win, to_lose"
},
"sample": {
"data": {
"year": "2023",
"games": [
{
"loser": "Kansas City Chiefs",
"to_win": "1",
"winner": "Detroit Lions",
"game_id": "202309070kan",
"pts_win": "21",
"to_lose": "1",
"gametime": "8:20PM",
"pts_lose": "20",
"week_num": "1",
"game_date": "2023-09-07",
"yards_win": "368",
"loser_abbr": "kan",
"yards_lose": "316",
"winner_abbr": "det",
"game_location": "@",
"game_day_of_week": "Thu"
}
]
},
"status": "success"
}
}About the Pro-Football-Reference API
Schedule and Standings
The get_season_schedule endpoint accepts a year parameter and returns every regular-season and playoff game for that season as an array of game objects. Each object includes week_num, game_date, winner, loser, pts_win, pts_lose, yards_win, yards_lose, to_win, to_lose, and a game_id string used to drill into boxscores and play-by-play. The get_season_team_standings endpoint returns AFC and NFC arrays, each team entry carrying wins, losses, points, points_opp, mov (margin of victory), sos_total, and srs_total.
Game-Level Detail
get_game_boxscore takes a game_id and returns offense and defense arrays at the player level, a scoring_summary with quarter, time, team, and description for each scoring play, and a game_info object containing roof type, playing surface, game duration, attendance, and the Vegas line. get_game_details gives access to specific tables within a game page — supply a table_id value such as play-by-play or drive charts, and the data array returns row-level records. Play-by-play rows include quarter, down, distance, detail text, and expected-points figures.
Player Search and Profiles
search_players accepts a name query and returns an array of matches with name, player_id, and url. Pass that player_id to get_player_profile to retrieve biographical fields (birthdate, college, position) and position-appropriate career stat arrays: career_passing_stats for quarterbacks, career_rushing_stats for running backs and rushing quarterbacks, career_receiving_stats for wide receivers and tight ends, and career_defense_stats for defensive players.
Season and Advanced Statistics
get_season_stats returns per-player statistical leaders for a chosen category — fields vary by category, but all rows include name_display, team_name_abbr, pos, and games. get_season_advanced_stats covers advanced passing, rushing, receiving, and defense categories as well as red-zone breakdowns, and is populated for 2018 and later seasons. Advanced category responses include a postseason_stats array alongside the regular-season stats array; red-zone categories return an empty postseason_stats array.
The Pro-Football-Reference API is a managed, monitored endpoint for pro-football-reference.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pro-football-reference.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pro-football-reference.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a season recap dashboard showing each team's win/loss record, margin of victory, and strength-of-schedule from
get_season_team_standings. - Aggregate game-by-game yardage and turnover differentials from
get_season_scheduleto model team consistency across a full season. - Pull player-level passing and rushing stats from
get_game_boxscoreto generate automated post-game performance reports. - Use
get_game_detailswith the play-by-play table to analyze down-and-distance tendencies and expected-points trends for a specific game. - Combine
search_playersandget_player_profileto build a player comparison tool using career stat arrays across multiple positions. - Retrieve advanced receiving metrics (air yards, yards after catch) via
get_season_advanced_statsto evaluate wide receiver separation quality since 2018. - Compare the Vegas line from
get_game_boxscoreagainst actual final margins to study historical betting spread accuracy.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Pro-Football-Reference have an official developer API?+
What does `get_game_boxscore` return beyond the final score?+
offense rows (passing, rushing, and receiving stats per player), player-level defense rows (tackles, sacks, interceptions), a scoring_summary array describing each score by quarter and time, and a game_info object with roof type, surface, duration, attendance, and Vegas line.How far back does advanced stats data go in `get_season_advanced_stats`?+
Does the API cover team-level advanced stats or only player-level?+
get_season_stats, get_season_advanced_stats, and get_game_boxscore. Team-level advanced stat tables (such as team DVOA or team passing air yards totals) are not exposed as a dedicated endpoint. You can fork this API on Parse and revise it to add a team advanced stats endpoint.Can I retrieve historical play-by-play data for multiple games in one request?+
get_game_details operates on a single game_id per request. There is no bulk or multi-game endpoint for play-by-play. To collect play-by-play across a full season you would need to call the endpoint once per game_id returned from get_season_schedule. You can fork this API on Parse and revise it to add a batched play-by-play endpoint if your use case requires it.