Discover/Pro-Football-Reference API
live

Pro-Football-Reference APIpro-football-reference.com

Access NFL schedules, standings, boxscores, play-by-play, and player profiles from Pro-Football-Reference via 7 structured endpoints.

Endpoint health
verified 6d ago
search_players
get_season_stats
get_game_boxscore
get_game_details
get_player_profile
7/7 passing latest checkself-healing
Endpoints
7
Updated
22d ago

What is the Pro-Football-Reference API?

The Pro-Football-Reference API exposes 7 endpoints covering NFL season schedules, team standings, individual game boxscores, play-by-play data, and player profiles. The get_game_boxscore endpoint returns player-level offensive and defensive stats alongside game metadata including weather, attendance, and Vegas lines. Season coverage spans regular season and playoff games, with player lookup available through search_players.

Try it
NFL season year as a four-digit string (e.g. '2023' for the 2023-24 season).
api.parse.bot/scraper/68f10b93-1fc8-410d-af5c-7f1b3d6e618d/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace pro-football-reference-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.pro_football_reference_api import (
    ProFootballReference, StatCategory, GameTable
)

pfr = ProFootballReference()

# Get the 2023 season schedule and find a high-scoring game
schedule = pfr.season("2023").schedule()
for game in schedule.games[:5]:
    print(game.winner, game.pts_win, "-", game.loser, game.pts_lose)

# Get passing leaders for 2023
leaders = pfr.season("2023").stats(category=StatCategory.PASSING)
for stat in leaders.stats[:3]:
    print(stat["name_display"], stat["pass_yds"], "yards", stat["pass_td"], "TDs")

# Get standings
standings = pfr.season("2023").standings()
for team in standings.AFC[:3]:
    print(team.team, team.wins, team.losses, team.points_diff)

# Get boxscore for Super Bowl LVIII
box = pfr.game("202402110kan").boxscore()
for t in box.teams:
    print(t.name, t.score)
print(box.game_info["vegas_line"])

# Get home drives for the same game
detail = pfr.game("202402110kan").details(table_id=GameTable.HOME_DRIVES)
for row in detail.data[:3]:
    print(row["drive_num"], row["end_event"], row["net_yds"])

# Search for a player and get their profile
for player in pfr.players.search(query="Tom Brady"):
    print(player.name, player.player_id)
    prof = player.profile()
    print(prof.name, prof.position, prof.college)
    break
All endpoints · 7 totalmissing one? ·

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.

Input
ParamTypeDescription
yearrequiredstringNFL season year as a four-digit string (e.g. '2023' for the 2023-24 season).
Response
{
  "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 a full array of game objects for that NFL season, each with fields like week_num, game_date, winner, loser, pts_win, pts_lose, and a game_id you can pass to other endpoints. The get_season_team_standings endpoint returns conference-split results with each team's wins, losses, points scored, and strength of schedule, organized under AFC and NFC arrays.

Game-Level Data

get_game_boxscore accepts a game_id (available from schedule results) and returns two team objects with scores, arrays of player-level offense and defense stat objects, a scoring_summary, and a game_info object with metadata keys including roof, surface, duration, attendance, and vegas_line. For deeper game analysis, get_game_details accepts the same game_id plus a table_id — accepted values are pbp (play-by-play), home_drives, vis_drives, and drive_chart — returning row-level data arrays appropriate to each table type.

Player Data and Season Stats

search_players takes a name query string and returns an array of matches with name, player_id, and url. A matched player_id feeds into get_player_profile, which returns biographical fields (name, college, position) and career stat arrays — career_passing_stats is present for QBs, with other stat arrays varying by position. The get_season_stats endpoint accepts a year and a category parameter (passing, rushing, receiving, defense, kicking, returns, or scoring) and returns all qualifying players ranked by the primary stat for that category.

Reliability & maintenanceVerified

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.

Last verified
6d ago
Latest check
7/7 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a season recap tool that pulls full schedules via get_season_schedule and displays weekly results with scores.
  • Track AFC and NFC playoff picture using get_season_team_standings to display win-loss records and strength of schedule.
  • Power a game analysis dashboard with player-level offense and defense stats from get_game_boxscore.
  • Analyze Vegas line accuracy by comparing vegas_line from game_info against final pts_win and pts_lose.
  • Build play-by-play timelines using get_game_details with table_id=pbp for any historical game.
  • Look up career passing stats for quarterbacks by combining search_players with get_player_profile.
  • Generate season statistical leaderboards for rushing or receiving using get_season_stats with the appropriate category.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Pro-Football-Reference have an official developer API?+
Pro-Football-Reference does not offer a public developer API. The site at pro-football-reference.com is designed for human browsing; structured programmatic access is what this Parse API provides.
What does `get_game_details` return for play-by-play data?+
When called with table_id=pbp, the endpoint returns a data array where each row object represents one play. Available fields vary by play type and include down, distance, field position, description, and scoring context. Drive-level tables (home_drives, vis_drives, drive_chart) return row objects summarizing each possession.
How does `get_season_stats` handle different positions within a single category?+
The stats array for each category contains all qualifying players ranked by that category's primary stat. Field names vary by category — for example, passing objects include pass_yds, while rushing objects include rush_yds. Not all fields are present across categories; each player object contains only the fields relevant to the requested category.
Does the API cover historical seasons or only recent years?+
The year parameter on get_season_schedule, get_season_stats, and get_season_team_standings accepts historical season values, and Pro-Football-Reference itself covers NFL history back to 1920. In practice, the depth of structured data (particularly play-by-play via get_game_details) is richer for modern seasons. There is no explicit lower-bound year enforced by the endpoint, but very early seasons may have sparse fields.
Does the API return player contract data, injury reports, or draft information?+
Not currently. The API covers game stats, season standings, schedules, boxscores, play-by-play tables, and career stat profiles. Contract figures, injury designations, and draft history are not included in any current endpoint response. You can fork this API on Parse and revise it to add endpoints covering those data types.
Page content last updated . Spec covers 7 endpoints from pro-football-reference.com.
Related APIs in SportsSee all →
nfl.com API
Access real-time NFL data including game schedules, scores, player statistics, team rosters, standings, injury reports, fantasy rankings, and the latest news — all from nfl.com.
baseball-reference.com API
Access comprehensive MLB and college baseball (NCAA Division I) statistics from Baseball-Reference. Retrieve player career and season stats, team rosters and performance data, game box scores, season schedules, league leaders, and college conference standings — all from a single API.
stathead.com API
Search and analyze NFL player performance on a game-by-game basis. Access detailed football statistics — passing, rushing, receiving, and more — filterable by season, team, game type, or statistical thresholds.
pff.com API
Access PFF.com football data including fantasy draft and weekly rankings, NFL season info, and NCAA college football schedules and game results.
fbref.com API
Access comprehensive football statistics including player profiles, team performance data, league standings, and detailed match reports all in one place. Search for specific players and teams, compare their stats, and get up-to-date information on leagues and match outcomes.
spotrac.com API
Access detailed NFL player contract information, search for specific players, and retrieve complete team rosters with salary data. Covers cap hits, base salaries, bonuses, dead cap figures, and contract lengths across all 32 NFL teams.
stats.ncaa.org API
Access comprehensive NCAA sports statistics to search for players, teams, and coaches, view game box scores and play-by-play data, and review team schedules, rosters, and rankings. Get detailed head coach records and scoreboard information to analyze performance across college sports.
fantasypros.com API
Access expert consensus rankings, player projections, average draft position data, injury reports, and the latest player news from FantasyPros. Search by player name or position to retrieve detailed stats, rankings, and expert analysis across all major scoring formats.