Skip to main content

A Python package for downloading NFL data from nflverse repositories

Project description

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

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
)

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
  • mkdocs for documentation site
# Install development dependencies
uv sync --dev

# Run tests
uv run pytest

# Format code
uv run ruff format

# Type check
uv run mypy src

# Serve docs site locally
uv run mkdocs serve

# Build docs site
uv run mkdocs build

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:

Project details


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.2.tar.gz (14.9 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.2-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nflreadpy-0.1.2.tar.gz
  • Upload date:
  • Size: 14.9 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.2.tar.gz
Algorithm Hash digest
SHA256 e018503c1ac8b853458e99e5e7938bef60ae3c4dc364e13a6600c928b2ce92ac
MD5 999c098531ace26a75da00aa9a83c929
BLAKE2b-256 31c5e48e4fd2a9012669e6592d8ac87ba536c185ff7b58b82052775e03ebd52b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nflreadpy-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 27.8 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fd282971a1692b6d06502a55c729678cc0efc055c0c6fdb663303365d5031dcf
MD5 50c134c4ede1879d705092f63a007c27
BLAKE2b-256 ad37b093989c98e6503b127820be68b6360a837b0b382b14a0846add18fa94ac

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