
Nba Data
- 808 installs
- 201 repo stars
- Updated August 5, 2026
- machina-sports/sports-skills
nba-data is an API integration skill that fetches live NBA scores, standings, rosters, and box scores for developers building sports apps without hand-rolling ESPN HTTP calls.
About
nba-data is a machina-sports/sports-skills reference that exposes four core commands: `get_scoreboard` for live or dated game events, `get_standings` by conference and season, `get_teams` for all 30 NBA franchises, and `get_team_roster` by ESPN team ID. Scoreboard responses include competitors, scores, and game status; standings return Eastern and Western groups with W-L, PCT, GB, streak, and home/away splits. Developers reach for nba-data when wiring sports dashboards, fantasy tools, or content sites that need structured NBA data without maintaining brittle ESPN endpoint parsers. Team roster lookups accept ESPN IDs such as "13" for the Lakers.
- Eight documented commands: scoreboard, standings, teams, roster, schedule, game summary, leaders, and news
- Live and historical games via optional date and season parameters
- Team-scoped roster and schedule using ESPN team IDs (e.g. Lakers "13")
- Game summary returns box score, scoring plays, and leaders per event_id
- Standings include W-L, PCT, GB, streak, and split records by conference
Nba Data by the numbers
- 808 all-time installs (skills.sh)
- +9 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #482 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/machina-sports/sports-skills --skill nba-dataAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 808 |
|---|---|
| repo stars | ★ 201 |
| Security audit | 3 / 3 scanners passed |
| Last updated | August 5, 2026 |
| Repository | machina-sports/sports-skills ↗ |
How do you fetch NBA scores and standings programmatically?
Wire live NBA scores, standings, rosters, and box scores into sports apps or content sites without hand-rolling ESPN-style HTTP calls.
Who is it for?
Developers integrating live NBA data into sports apps, dashboards, or automated content pipelines.
Skip if: Non-NBA leagues or custom analytics requiring proprietary play-by-play modeling beyond provided commands.
When should I use this skill?
A developer needs NBA scores, standings, team lists, or rosters without writing raw ESPN HTTP integration code.
What you get
Structured JSON for NBA scoreboards, conference standings, 30 team records, and full team rosters.
- NBA scoreboard events
- Conference standings groups
- Team and roster records
By the numbers
- Covers all 30 NBA teams via the `get_teams` command
- Exposes 4 API commands: get_scoreboard, get_standings, get_teams, get_team_roster
Files
NBA 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-skillsIf pip install fails with a Python version error, the package requires Python 3.10+. Find a compatible Python:
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-skillsNo API keys required.
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills nba get_scoreboard
sports-skills nba get_standings --season=2025
sports-skills nba get_teamsCRITICAL: 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_teamsto 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-18 → 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 NBA season runs October–June. If the current month is October–December, the active season year matches the current year. If January–June, the active season started the previous calendar year (use that year as the season).
Commands
| Command | Description |
|---|---|
get_scoreboard | Live/recent NBA scores |
get_standings | Standings by conference |
get_teams | All 30 NBA teams |
get_team_roster | Full roster for a team |
get_team_schedule | Schedule for a specific team |
get_game_summary | Detailed box score and scoring plays |
get_leaders | NBA statistical leaders |
get_news | NBA news articles |
get_play_by_play | Full play-by-play for a game |
get_win_probability | Win probability chart data |
get_schedule | Schedule for a specific date or season |
get_injuries | Injury reports across all teams |
get_transactions | Recent transactions |
get_futures | Futures/odds markets |
get_depth_chart | Depth chart for a team |
get_team_stats | Team statistical profile |
get_player_stats | Player statistical profile |
See references/api-reference.md for full parameter lists and return shapes.
Examples
Example 1: Today's scores User says: "What are today's NBA scores?" Actions: 1. Call get_scoreboard() Result: All live and recent NBA games with scores and status
Example 2: Conference standings User says: "Show me the Western Conference standings" Actions: 1. Derive season year from currentDate 2. Call get_standings(season=<derived_year>) 3. Filter results for Western Conference Result: Western Conference standings table with W-L, PCT, GB per team
Example 3: Team roster User says: "Who's on the Lakers roster?" Actions: 1. Call get_team_roster(team_id="13") Result: Full Lakers roster with name, position, jersey number, height, weight
Example 4: Game box score User says: "Show me the full box score for last night's Celtics game" Actions: 1. Call get_scoreboard(date="<yesterday>") to find the event_id 2. Call get_game_summary(event_id=<id>) for full box score Result: Complete box score with per-player stats and scoring plays
Example 5: Injury report User says: "Who's injured on the Lakers?" Actions: 1. Call get_injuries() 2. Filter results for Los Angeles Lakers (team_id=13) Result: Lakers injury list with player name, position, status, and injury type
Example 6: Player statistics User says: "Show me LeBron's stats this season" Actions: 1. Derive season year from currentDate 2. Call get_player_stats(player_id="1966", season_year=<derived_year>) Result: Season stats by category with value, rank, and per-game averages
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. Useget_teamsinstead. - ~~
get_box_score~~ — does not exist. Useget_game_summaryinstead. - ~~
get_player_ratings~~ — does not exist. Useget_player_statsinstead.
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
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 30 NBA 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: Offseason — scoreboard returns 0 events Cause: No games scheduled during the offseason (July–September) Solution: Use get_standings or get_news instead; use get_schedule to find when the season resumes
NBA Data — API Reference
Commands
get_scoreboard
Get live/recent NBA scores.
date(str, optional): Date in YYYY-MM-DD format. Defaults to today.
Returns events[] with game info, scores, status, and competitors.
get_standings
Get NBA standings by conference.
season(int, optional): Season year
Returns groups[] with Eastern/Western conferences and team standings including W-L, PCT, GB, streak, home/away/conference records, and PPG.
get_teams
Get all 30 NBA teams. No parameters.
Returns teams[] with id, name, abbreviation, logo, and location.
get_team_roster
Get full roster for a team.
team_id(str, required): ESPN team ID (e.g., "13" for Lakers)
Returns athletes[] with name, position, jersey number, height, weight, experience.
get_team_schedule
Get schedule for a specific team.
team_id(str, required): ESPN team IDseason(int, optional): Season year
Returns events[] with opponent, date, score (if played), and venue.
get_game_summary
Get detailed box score and scoring plays.
event_id(str, required): ESPN event ID
Returns game_info, competitors, boxscore (stats per player), scoring_plays, and leaders.
get_leaders
Get NBA statistical leaders (points, rebounds, assists, etc.).
season(int, optional): Season year
Returns categories[] with leader rankings per stat category.
get_news
Get NBA news articles.
team_id(str, optional): Filter by team
Returns articles[] with headline, description, published date, and link.
get_play_by_play
Get full play-by-play data for a game.
event_id(str, required): ESPN event ID
Returns play-by-play detail including period, clock, team, play description, and scoring plays.
get_win_probability
Get win probability chart data for a game.
event_id(str, required): ESPN event ID
Returns timestamped home/away win probability percentages throughout the game.
get_schedule
Get NBA schedule for a specific date or season.
date(str, optional): Date in YYYY-MM-DD formatseason(int, optional): Season year (used only if no date provided)
Returns events[] for the specified date.
get_injuries
Get current NBA injury reports across all teams. No parameters.
Returns teams[] with per-team injury lists including player name, position, status (Out/Doubtful/Questionable/Day-To-Day), injury type, and detail.
get_transactions
Get recent NBA transactions (trades, signings, waivers).
limit(int, optional): Max transactions to return. Defaults to 50.
Returns transactions[] with date, team, and description.
get_futures
Get NBA futures/odds markets (Championship winner, MVP, etc.).
limit(int, optional): Max entries per market. Defaults to 25.season_year(int, optional): Season year. Defaults to current.
Returns futures[] with market name and entries (team/player name + odds value).
get_depth_chart
Get depth chart for a specific team.
team_id(str, required): ESPN team ID
Returns charts[] with positional depth and player depth order.
get_team_stats
Get full team statistical profile for a season.
team_id(str, required): ESPN team IDseason_year(int, optional): Season year. Defaults to current.season_type(int, optional): 1=preseason, 2=regular (default), 3=postseason.
Returns categories[] with detailed stats including value, rank, and per-game averages.
get_player_stats
Get full player statistical profile for a season.
player_id(str, required): ESPN athlete IDseason_year(int, optional): Season year. Defaults to current.season_type(int, optional): 1=preseason, 2=regular (default), 3=postseason.
Returns categories[] with detailed stats including value, rank, and per-game averages.
Team IDs
| Team | ID | Team | ID |
|---|---|---|---|
| Atlanta Hawks | 1 | Memphis Grizzlies | 29 |
| Boston Celtics | 2 | Miami Heat | 14 |
| Brooklyn Nets | 17 | Milwaukee Bucks | 15 |
| Charlotte Hornets | 30 | Minnesota Timberwolves | 16 |
| Chicago Bulls | 4 | New Orleans Pelicans | 3 |
| Cleveland Cavaliers | 5 | New York Knicks | 18 |
| Dallas Mavericks | 6 | Oklahoma City Thunder | 25 |
| Denver Nuggets | 7 | Orlando Magic | 19 |
| Detroit Pistons | 8 | Philadelphia 76ers | 20 |
| Golden State Warriors | 9 | Phoenix Suns | 21 |
| Houston Rockets | 10 | Portland Trail Blazers | 22 |
| Indiana Pacers | 11 | Sacramento Kings | 23 |
| LA Clippers | 12 | San Antonio Spurs | 24 |
| Los Angeles Lakers | 13 | Toronto Raptors | 28 |
| Utah Jazz | 26 | Washington Wizards | 27 |
Use get_teams for the complete, authoritative list.
NBA Team IDs
| Team | ID | Team | ID |
|---|---|---|---|
| Atlanta Hawks | 1 | Memphis Grizzlies | 29 |
| Boston Celtics | 2 | Miami Heat | 14 |
| Brooklyn Nets | 17 | Milwaukee Bucks | 15 |
| Charlotte Hornets | 30 | Minnesota Timberwolves | 16 |
| Chicago Bulls | 4 | New Orleans Pelicans | 3 |
| Cleveland Cavaliers | 5 | New York Knicks | 18 |
| Dallas Mavericks | 6 | Oklahoma City Thunder | 25 |
| Denver Nuggets | 7 | Orlando Magic | 19 |
| Detroit Pistons | 8 | Philadelphia 76ers | 20 |
| Golden State Warriors | 9 | Phoenix Suns | 21 |
| Houston Rockets | 10 | Portland Trail Blazers | 22 |
| Indiana Pacers | 11 | Sacramento Kings | 23 |
| LA Clippers | 12 | San Antonio Spurs | 24 |
| Los Angeles Lakers | 13 | Toronto Raptors | 28 |
| Utah Jazz | 26 | Washington Wizards | 27 |
Tip: Use get_teams to get the full, accurate list of team IDs.
#!/bin/bash
# Validates parameters before executing sports-skills commands
SPORT="nba"
MONTH=$(date +%m)
case "$SPORT" in
nba)
if [[ $MONTH -ge 7 && $MONTH -le 9 ]]; then
echo "WARNING: NBA is in off-season (Oct–Jun). Scoreboard may be empty."
echo "SUGGESTION: Use get_news or get_standings with a prior season."
fi
;;
esac
if [[ "$*" == *"--date="* ]]; then
DATE=$(echo "$*" | grep -o '\-\-date=[^ ]*' | cut -d= -f2)
if [[ ! "$DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Date must be YYYY-MM-DD format. Got: $DATE"
exit 1
fi
fi
if [[ "$*" == *"--team_id="* ]]; then
TEAM_ID=$(echo "$*" | grep -o '\-\-team_id=[^ ]*' | cut -d= -f2)
if [[ -z "$TEAM_ID" ]]; then
echo "ERROR: --team_id requires a value. Use get_teams to find valid IDs."
exit 1
fi
fi
echo "OK"
Related skills
FAQ
How many NBA teams does nba-data return?
nba-data `get_teams` returns all 30 NBA teams with id, name, abbreviation, logo, and location fields, requiring no parameters.
What date format does nba-data scoreboard use?
nba-data `get_scoreboard` accepts an optional `date` string in YYYY-MM-DD format and defaults to today's games when omitted.
Is Nba Data safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.