cbb-data
College Basketball (CBB) data via ESPN public endpoints and the NCAA's official endpoints — scores, standings, rosters, schedules, game summaries, play-by-play, win probability, rankings, futures, team/player stats, and news for Division I men's basketball, plus official D2/D3 scoreboards, NCAA game
By machina-sports · 587 installs
npx skills add machina-sports/sports-skills --skill cbb-data
Source repository · Upstream listing
College Basketball Data (CBB)
Before writing queries, consult references/api reference.md for endpoints, conference IDs, team IDs, and data shapes.
Setup
Before first use, check if the CLI is available:
If pip install fails with a Python version error, the package requires Python 3.10+. Find a compatible Python:
No API keys required.
Quick Start
Prefer the CLI — it avoids Python import path issues:
CRITICAL: Before Any Query
CRITICAL: Before calling any data endpoint, verify:
Season year is derived from the system prompt's currentDate — never hardcoded.
For standings, the group parameter is set to the correct conference ID (see references/api reference.md ).
If only a team name is provided, use get teams to resolve the team ID.
Choosing the Season
Derive the current year from the system prompt's date (e.g., currentDate: 2026 02 28 → 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 CBB season runs November–April. If the current month is November or December, use season = current year + 1 . If January–April, use season = current year . If May–October (offseason), use season = current year (most recently completed season).
Important: College vs. Pro Differences
Standings are per conference — use the group parameter to filter
Rankings replace leaders — college uses AP Top 25 and Coaches Poll
Ranked teams have a rank field (null = unranked) on scoreboard competitors
360+ D1 teams — many games per day during the season (50+ during conference play)
March Madness — NCAA Tournament runs in March/April with 68 teams
Commands
Command Description
get scoreboard Live/recent college basketball scores
get standings Standings by conference (use group parameter)
get teams All 360+ D1 men's basketball teams
get team roster Full roster for a team
get team schedule Schedule for a specific team
get game summary Detailed box score and player stats
get rankings AP Top 25 and Coaches Poll rankings
get news College basketball news
get play by play Full play by play for a game
get win probability Win probability chart data
get schedule Schedule for a date or season
get futures Futures/odds markets (National Championship, etc.)
get team stats Team statistical profile
get player stats Player statistical profile
get ncaa scoreboard Official NCAA scoreboard — D1, D2, and D3
get ncaa schedule Which dates have games (official index)
get ncaa game Official NCAA game information
get ncaa boxscore Official NCAA box score
get ncaa play by play Official play by play
get ncaa bracket March Madness bracket with live scores
get ncaa schools NCAA schools index (all divisions)
get power index BPI (Basketball Power Index) ratings for D1 teams
get tournament projections NCAA tournament projections with seeds, regions, and advancement probabilities
compare teams Compare two teams using BPI ratings and season stats
find upset candidates Potential upsets based on BPI vs seed differential
See references/api reference.md for full parameter lists and return shapes.
Official NCAA Backend
The get ncaa commands read the NCAA's own endpoints (data.ncaa.com +
sdataprod.ncaa.com) — coverage ESPN does not carry:
D2 and D3 scoreboards via division="d2" / "d3" — ESPN's college
coverage is D1 centric.
Both scoreboards now return all of Division I by default — the
ESPN backed get scoreboard / get schedule previously inherited ESPN's
Top 25 only un grouped default (1 game on an ordinary Friday instead of ~24).
Pass group explicitly for a narrower ESPN grouping.
The official March Madness bracket with live scores: get ncaa bracket .
Official game detail : get ncaa game , get ncaa boxscore ,
get ncaa play by play .
The schools index (~1,200 schools, all divisions): get ncaa schools .
NCAA game ids (from get ncaa scoreboard ) and ESPN event ids share nothing —
join on game date plus team names. Game detail and bracket commands ride NCAA's
GraphQL persisted queries, whose hashes rotate when ncaa.com redeploys; when
that happens those commands say so explicitly while the scoreboard/schedule
commands keep working.
Examples
Example 1: Current rankings
User says: "What are the college basketball rankings?"
Actions:
1. Call get rankings()
Result: AP Top 25 and Coaches Poll with rank, previous rank, record, and points
Example 2: Conference standings
User says: "Show me SEC basketball standings"
Actions:
1. Derive season year from currentDate
2. Call get standings(group=23, season=<derived year ) (group 23 = SEC)
Result: SEC standings with W L records per team
Example 3: Today's scores
User says: "What are today's college basketball scores?"
Actions:
1. Call get scoreboard()
Result: All live and recent CBB games with scores and ranked status
Example 4: Team roster
User says: "Show me Duke's roster"
Actions:
1. Call get team roster(team id="150")
Result: Full Duke roster with name, position, jersey number
Example 5: March Madness futures
User says: "Who's favored to win March Madness?"
Actions:
1. Call get futures(limit=10)
Result: Top National Championship contenders with odds values
Example 6: Team statistics
User says: "Show me Duke's team stats"
Actions:
1. Derive season year from currentDate
2. Call get team stats(team id="150", season year=<derived year )
Result: Duke's 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. 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.
~~ get ap poll ~~ — does not exist. Use get rankings 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. If no events found, check if it's the off season (CBB runs November–April)
2. If standings are empty without a group filter, try a specific conference
3. During March Madness, the scoreboard will have tournament games
4. 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: No games found on scoreboard
Cause: CBB is seasonal (November–April); off season scoreboard will be empty
Solution: Use get rankings or get news year round; check get schedule for when the season resumes
Error: Too many games returned — hard to filter
Cause: During the season, 50+ games per day are scheduled
Solution: Use group to filter by conference, or limit to cap results
Error: Rankings empty
Cause: Rankings are published weekly during the season (November–March) only
Solution: Use get news in the offseason; rankings resume in November