Skip to main content

nflreadpy

A Python package for downloading NFL data from nflverse repositories. This is a Python port of the popular R package nflreadr, designed to provide easy access to NFL data with caching, progress tracking, and modern Python conventions.

Features

  • Compatible API with nflreadr R package
  • Fast data loading with Polars DataFrames
  • Intelligent caching (memory or filesystem)
  • Progress tracking for large downloads
  • Modern Python (3.10+) with type hints

Install

# Using uv (recommended)
uv add nflreadpy

# Using pip
pip install nflreadpy

Usage

import nflreadpy as nfl

# Load current season play-by-play data
pbp = nfl.load_pbp()

# Load player game-level stats for multiple seasons
player_stats = nfl.load_player_stats([2022, 2023])

# Load all available team level stats
team_stats = nfl.load_team_stats(seasons=True)

# nflreadpy uses Polars instead of pandas. Convert to pandas if needed:
pbp_pandas = pbp.to_pandas()

Available Functions

Core Loading Functions

  • load_pbp() - play-by-play data
  • load_player_stats() - player game or season statistics
  • load_team_stats() - team game or season statistics
  • load_schedules() - game schedules and results
  • load_players() - player information
  • load_rosters() - team rosters
  • load_rosters_weekly() - team rosters by season-week
  • load_snap_counts() - snap counts
  • load_nextgen_stats() - advanced stats from nextgenstats.nfl.com
  • load_ftn_charting() - charted stats from ftnfantasy.com/data
  • load_participation() - participation data (historical)
  • load_draft_picks() - nfl draft picks
  • load_injuries() - injury statuses and practice participation
  • load_contracts() - historical contract data from OTC
  • load_officials() - officials for each game
  • load_combine() - nfl combine results
  • load_depth_charts() - depth charts
  • load_trades() - trades
  • load_ff_playerids() - ffverse/dynastyprocess player ids
  • load_ff_rankings() - fantasypros rankings
  • load_ff_opportunity() - expected yards, touchdowns, and fantasy points

Utility Functions

  • clear_cache() - Clear cached data
  • get_current_season() - Get current NFL season
  • get_current_week() - Get current NFL week

Configuration

Configure nflreadpy using environment variables:

# Cache settings
export NFLREADPY_CACHE=filesystem  # "memory", "filesystem", or "off"
export NFLREADPY_CACHE_DIR=/path/to/cache # path for filesystem cache
export NFLREADPY_CACHE_DURATION=86400 # time in seconds

# Behavior
export NFLREADPY_VERBOSE=true     # Show progress messages
export NFLREADPY_TIMEOUT=30       # Request timeout in seconds

Or configure programmatically:

from nflreadpy.config import update_config

update_config(
    cache_mode="memory",
    verbose=False,
    prefer_format="csv"
)

Getting help

The best places to get help on this package are:

Data Sources

nflreadpy downloads data from the following nflverse repositories:

See the automation status page here for last update date/times for each release.

License

MIT License - see LICENSE file for details.

The majority of all nflverse data available (ie all but the FTN data as of July 2025) is broadly licensed as CC-BY 4.0, and the FTN data is CC-BY-SA 4.0 (see nflreadr docs for each main data file).

Development

This project uses the following tooling:

  • uv for dependency management
  • ruff for linting and formatting
  • mypy for type checking
  • pytest for testing
# Install development dependencies
uv sync --dev

# Run tests
uv run pytest

# Format code
uv run ruff format

# Type check
uv run mypy src

Disclaimer

Most of the first version was written by Claude based on nflreadr, use at your own risk.

Contributing

Many hands make light work! Here are some ways you can contribute to this project:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nflreadpy-0.1.0.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nflreadpy-0.1.0-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

File details

Details for the file nflreadpy-0.1.0.tar.gz.

File metadata

  • Download URL: nflreadpy-0.1.0.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nflreadpy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c5f6bcefa8a1345733cac9093097ad2b1f84c8f728ca840b7e1cb7377ad559e0
MD5 bb263fd03b71e10b68aba2ca69a0345b
BLAKE2b-256 8f7169871c6ffd396277ab8cb7e05e97ede9787b20750edd001127c007bb587a

See more details on using hashes here.

File details

Details for the file nflreadpy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nflreadpy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nflreadpy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f898429baedb1cb459736c4e6f5e6b8b4c34165c7068929498bd442fd36b9fd6
MD5 5b9473ecb05555eae191e7569958e015
BLAKE2b-256 359f27df1a2a994ae77b2d58bc63547b1a72c2c113ce9c20f1695a31d4ac2937

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page