Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
machina-sports avatar

Nfl Data

  • 554 installs
  • 201 repo stars
  • Updated August 5, 2026
  • machina-sports/sports-skills

nfl-data is an agent skill that loads NFL scores, rosters, play-by-play, and weekly stats via ESPN and nflverse endpoints for developers building sports analytics or fantasy features.

About

nfl-data is a Python skill from machina-sports/sports-skills (version 0.1.0, MIT) that exposes 22 CLI commands for NFL data through the sports-skills package with zero API keys. ESPN-backed commands include get_scoreboard, get_standings, get_teams for all 32 NFL teams, get_team_roster, get_play_by_play, get_injuries, and get_game_summary. nflverse-backed commands—requiring pip install sports-skills[nfl]—return normalized schedules, weekly rosters, player stats, team stats, and play-by-play rows with EPA and win-probability fields. The skill requires Python 3.10+, derives season years from currentDate rather than hardcoding, and documents postseason week numbers 19–23. Developers reach for nfl-data when building fantasy apps, broadcast dashboards, or ML pipelines that need consistent NFL ingestion templates.

  • Weekly and seasonal team and player stats
  • Play-by-play and drive-level events
  • Roster and injury snapshot handling
  • Red-zone and situational metric derivations
  • Pipelines for fantasy and betting analytics

Nfl Data by the numbers

  • 554 all-time installs (skills.sh)
  • +10 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #429 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/machina-sports/sports-skills --skill nfl-data

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs554
repo stars201
Last updatedAugust 5, 2026
Repositorymachina-sports/sports-skills

How do you load NFL play-by-play data in Python?

Load NFL rosters, drives, play-by-play, and weekly stats for modeling, fantasy apps, or broadcast-adjacent dashboards using consistent ingestion templates.

Who is it for?

Python developers building NFL dashboards, fantasy tools, or sports ML pipelines who need ESPN and nflverse data without API keys.

Skip if: College football, soccer, or non-NFL sports queries—those require cfb-data or football-data skills instead.

When should I use this skill?

User asks for NFL scores, standings, rosters, play-by-play, injuries, betting futures, or weekly nflverse stat tables.

What you get

Normalized NFL scoreboard, roster, standings, injury, and nflverse play-by-play DataFrames via CLI or Python SDK.

  • NFL scoreboard data
  • roster and stats tables
  • play-by-play datasets

By the numbers

  • Documents 22 NFL CLI commands
  • Covers all 32 NFL teams via get_teams
  • Requires Python 3.10+ with zero API keys

Files

SKILL.mdMarkdownGitHub ↗

NFL Data

Before writing queries, consult references/api-reference.md for endpoints, ID conventions, and data shapes.

Setup

Before first use, check if the CLI is available:

which sports-skills || pip install sports-skills

If pip install fails (package not found or Python version error), install from GitHub:

pip install git+https://github.com/machina-sports/sports-skills.git

The package requires Python 3.10+. If your default Python is older, use a specific version:

python3 --version  # check version
# If < 3.10, try: python3.12 -m pip install sports-skills
# On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills

No API keys required.

For nflverse-backed commands (get_nflverse_*), install the NFL extra:

pip install sports-skills[nfl]

This installs nfl-data-py (or use nflreadpy if preferred). Parquet support (pyarrow) is also needed for most nflverse data beyond schedules.

Quick Start

Prefer the CLI — it avoids Python import path issues:

sports-skills nfl get_scoreboard
sports-skills nfl get_standings --season=2025
sports-skills nfl get_teams

Python SDK (alternative):

from sports_skills import nfl

scores = nfl.get_scoreboard({})
standings = nfl.get_standings({"params": {"season": "2025"}})

CRITICAL: Before Any Query

CRITICAL: Before calling any data endpoint, verify:

  • Season year is derived from the system prompt's currentDate — never hardcoded.
  • If only a team name is provided, call get_teams to resolve the team ID before using team-specific commands.

Choosing the Season

Derive the current year from the system prompt's date (e.g., currentDate: 2026-02-16 → current year is 2026).

  • If the user specifies a season, use it as-is.
  • If the user says "current", "this season", or doesn't specify: The NFL season runs September–February. If the current month is March–August, use season = current_year (upcoming season). If September–February, the active season started in the previous calendar year if you're in Jan/Feb, otherwise current year.

Commands

CommandDescription
get_scoreboardLive/recent NFL scores
get_standingsStandings by conference and division
get_teamsAll 32 NFL teams
get_team_rosterFull roster for a team
get_team_scheduleSchedule for a specific team
get_game_summaryDetailed box score and scoring plays
get_leadersNFL statistical leaders
get_newsNFL news articles
get_play_by_playFull play-by-play for a game
get_win_probabilityWin probability chart data
get_scheduleSeason schedule by week
get_injuriesInjury reports across all teams
get_transactionsRecent transactions
get_futuresFutures/odds markets
get_depth_chartDepth chart for a team
get_team_statsTeam statistical profile
get_player_statsPlayer statistical profile
get_nflverse_schedulenflverse-backed schedules/results table
get_nflverse_weekly_rostersnflverse-backed weekly rosters
get_nflverse_player_statsnflverse-backed normalized player stat rows
get_nflverse_team_statsnflverse-backed normalized team stat rows
get_nflverse_play_by_playnflverse-backed play-by-play rows

See references/api-reference.md for full parameter lists and return shapes.

Examples

Example 1: Today's scores User says: "What are today's NFL scores?" Actions: 1. Call get_scoreboard() Result: All live and recent NFL games with scores and status

Example 2: Conference standings User says: "Show me the AFC standings" Actions: 1. Derive season year from currentDate 2. Call get_standings(season=<derived_year>) 3. Filter results for AFC conference Result: AFC standings table with W-L-T, PCT, PF, PA per team

Example 3: Team roster User says: "Who's on the Chiefs roster?" Actions: 1. Call get_team_roster(team_id="12") Result: Full Chiefs roster with name, position, jersey number, height, weight

Example 4: Super Bowl box score User says: "How did the Super Bowl go?" Actions: 1. Call get_schedule(week=23) to find the Super Bowl event_id 2. Call get_game_summary(event_id=<id>) for full box score Result: Complete box score with passing/rushing/receiving stats and scoring plays

Example 5: Injury report User says: "Who's injured on the Chiefs?" Actions: 1. Call get_injuries() 2. Filter results for Kansas City Chiefs (team_id=12) Result: Chiefs injury list with player name, position, status, and injury type

Example 6: Player statistics User says: "Show me Patrick Mahomes' stats this season" Actions: 1. Derive season year from currentDate 2. Call get_player_stats(player_id="3139477", season_year=<derived_year>) Result: Season stats by category with value, rank, and per-game averages

Example 7: nflverse weekly rosters User says: "Give me the Week 1 Chiefs roster from the data table backend" Actions: 1. Derive season year from currentDate 2. Call get_nflverse_weekly_rosters(season=<derived_year>, week=1, team="KC") Result: Weekly roster rows normalized for team, player, position, jersey, and status

Example 8: nflverse play-by-play User says: "Pull Bills Week 3 play-by-play" Actions: 1. Derive season year from currentDate 2. Call get_nflverse_play_by_play(season=<derived_year>, week=3, team="BUF") Result: Play rows with game_id, down/distance, description, EPA, WP/WPA, and score state

Commands that DO NOT exist — never call these

  • ~~get_odds~~ / ~~get_betting_odds~~ — not available. For prediction market odds, use the polymarket or kalshi skill.
  • ~~search_teams~~ — does not exist. Use get_teams instead.
  • ~~get_box_score~~ — does not exist. Use get_game_summary instead.
  • ~~get_player_ratings~~ — does not exist. Use get_player_stats instead.

If a command is not listed in the Commands table above, it does not exist.

Error Handling

When a command fails, do not surface raw errors to the user. Instead: 1. Catch silently and try alternatives 2. If team name given instead of ID, use get_teams to find the ID first 3. Only report failure with a clean message after exhausting alternatives

Troubleshooting

Error: sports-skills command not found Cause: Package not installed Solution: Run pip install sports-skills. If not on PyPI, install from GitHub: pip install git+https://github.com/machina-sports/sports-skills.git

Error: nflverse backend unavailable Cause: Optional NFL backend extra not installed Solution: Install sports-skills[nfl] so the nflverse provider (nflreadpy or compatibility fallback) is available

Error: Team not found by ID Cause: Wrong or outdated ESPN team ID used Solution: Call get_teams to get the current list of all 32 NFL teams with their IDs

Error: No data returned for a future game Cause: ESPN only returns data for completed or in-progress games Solution: Use get_schedule to see upcoming game details; get_scoreboard only covers active/recent games

Error: Postseason week number returns no results Cause: Postseason uses unified week numbers (19-23) that differ from regular season Solution: Use week 19 for Wild Card, 20 for Divisional, 21 for Conference Championship, 23 for Super Bowl

Related skills

How it compares

Use nfl-data for professional NFL stats via ESPN/nflverse rather than generic web scraping when you need normalized rosters and play-by-play fields.

FAQ

Does nfl-data require API keys?

nfl-data requires no API keys. It uses ESPN public endpoints plus an optional nflverse backend installed via pip install sports-skills[nfl], which adds nfl-data-py or nflreadpy and pyarrow for parquet tables.

How many NFL commands does nfl-data provide?

nfl-data documents 22 CLI commands including get_scoreboard, get_standings, get_teams for all 32 teams, get_play_by_play, get_injuries, and four get_nflverse_* commands for normalized schedules, rosters, stats, and play-by-play rows.

Data Science & MLanalyticspipelines

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.