
Cfb Data
- 530 installs
- 201 repo stars
- Updated August 5, 2026
- machina-sports/sports-skills
cfb-data is a machina-sports skill that pulls college football stats, schedules, and historical results for developers who need real sports data to benchmark features, prototype dashboards, or validate analytics product
About
cfb-data is a machina-sports/sports-skills data access workflow for college football (CFB) datasets. The skill retrieves team stats, game schedules, and historical results so developers can populate prototype dashboards, benchmark analytics features, or sanity-check a sports product concept with real season data. Developers reach for cfb-data during early sports-app work when mock data is insufficient and they need authoritative CFB figures to demo stakeholders or test query performance. It supports validation and prototyping rather than production ETL pipelines or live betting integrations.
- college football
- historical stats
- schedules
- data exploration
- coverage checks
Cfb Data by the numbers
- 530 all-time installs (skills.sh)
- +6 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #436 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 cfb-dataAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 530 |
|---|---|
| repo stars | ★ 201 |
| Last updated | August 5, 2026 |
| Repository | machina-sports/sports-skills ↗ |
How do you get college football stats for prototypes?
Pull college football stats, schedules, and historical results to benchmark features, prototype dashboards, or validate a sports analytics product idea.
Who is it for?
Developers prototyping sports analytics dashboards or validating CFB data dependencies before building production pipelines.
Skip if: Production live-score betting systems needing sub-second feeds should skip prototype-oriented CFB data skills.
When should I use this skill?
A sports analytics prototype or benchmark needs real college football stats, schedules, or historical results.
What you get
CFB stats tables, schedule datasets, and historical game results ready for dashboards or feature benchmarks.
- CFB stats datasets
- Schedule and historical results extracts
- Prototype dashboard seed data
Files
College Football Data (CFB)
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:
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 cfb get_scoreboard
sports-skills cfb get_rankings
sports-skills cfb get_standings --group=8CRITICAL: 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
groupparameter is set to the correct conference ID (seereferences/api-reference.md). - If only a team name is provided, use
get_teamsto 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 CFB season runs August–January. If the current month is February–July (offseason), use
season = current_year - 1. From August onward, use the current year.
Important: College vs. Pro Differences
- Standings are per-conference — use the
groupparameter to filter - Rankings replace leaders — college uses AP Top 25, Coaches Poll, and CFP rankings
- Ranked teams have a
rankfield (null = unranked) on scoreboard competitors - Week-based schedule — like NFL, college football uses week numbers
Commands
| Command | Description |
|---|---|
get_scoreboard | Live/recent college football scores |
get_standings | Standings by conference (use group parameter) |
get_teams | All 750+ FBS college football 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_rankings | AP Top 25, Coaches Poll, CFP rankings |
get_news | College football news |
get_play_by_play | Full play-by-play for a game |
get_schedule | Season schedule by week |
get_injuries | Injury reports across all teams |
get_futures | Futures/odds markets (National Championship, Heisman, etc.) |
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: Current rankings User says: "What are the college football rankings?" Actions: 1. Call get_rankings() Result: AP Top 25, Coaches Poll, and CFP rankings with rank, previous rank, record
Example 2: Conference standings User says: "Show me SEC football standings" Actions: 1. Derive season year from currentDate 2. Call get_standings(group=8, season=<derived_year>) (group 8 = SEC) Result: SEC standings with W-L records per team
Example 3: Team schedule User says: "What's Alabama's schedule this season?" Actions: 1. Derive season year from currentDate 2. Call get_team_schedule(team_id="333", season=<derived_year>) Result: Alabama's full season schedule with opponent, date, score (if played)
Example 4: Weekly scores User says: "Show me this week's college football scores" Actions: 1. Call get_scoreboard() Result: All live and recent CFB games with scores and ranked status
Example 5: Heisman favorites User says: "Who's the Heisman favorite?" Actions: 1. Call get_futures(limit=10) Result: Top Heisman Trophy candidates with odds values
Example 6: Team statistics User says: "Show me Alabama's team stats" Actions: 1. Derive season year from currentDate 2. Call get_team_stats(team_id="333", season_year=<derived_year>) Result: Alabama'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. Useget_teamsinstead. - ~~
get_box_score~~ — does not exist. Useget_game_summaryinstead. - ~~
get_player_ratings~~ — does not exist. Useget_player_statsinstead. - ~~
get_bcs_rankings~~ / ~~get_playoff_rankings~~ — does not exist. Useget_rankingsinstead.
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 for a date, check if it's in the off-season (CFB runs August–January) 2. If standings are empty without a group filter, try with a specific conference group 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: No games found Cause: CFB is seasonal (August–January); off-season scoreboard will be empty Solution: Use get_rankings or get_news year-round; use get_schedule to find when the season starts
Error: Too many teams returned Cause: get_teams returns 750+ FBS teams Solution: Help users narrow down by suggesting specific team IDs from references/api-reference.md, or use ESPN URLs to look up IDs
Error: Rankings empty in off-season Cause: Rankings are only published during the season and early off-season Solution: Use get_news in the offseason; rankings resume in August
College Football (CFB) — API Reference
Commands
get_scoreboard
Get live/recent college football scores.
date(str, optional): Date in YYYY-MM-DD format. Defaults to today.week(int, optional): CFB week number.group(int, optional): Conference group ID to filter.limit(int, optional): Max events to return.
Returns events[] with game info, scores, competitor names, and ranked status.
get_standings
Get college football standings by conference.
season(int, optional): Season year. Defaults to current.group(int, optional): Conference ID to filter.
Returns conference standings with W-L records.
get_teams
Get all FBS college football teams (750+ teams). No parameters.
Returns teams[] with id, name, abbreviation, logo, and location.
get_team_roster
Get full roster for a college football team.
team_id(str, required): ESPN team ID.
Returns athletes[] with name, position, jersey number, height, weight.
get_team_schedule
Get schedule for a specific college football team.
team_id(str, required): ESPN team ID.season(int, optional): Season year. Defaults to current.
Returns events[] with opponent, date, score (if played), and venue.
get_game_summary
Get detailed game summary with box score, scoring plays, and leaders.
event_id(str, required): ESPN event ID.
Returns game_info, competitors, boxscore, scoring_plays, and leaders.
get_rankings
Get college football rankings — AP Top 25, Coaches Poll, CFP rankings.
season(int, optional): Season year. Defaults to current.week(int, optional): Week number for historical rankings.
Returns polls[] with poll name and teams[] containing rank, previous rank, record, points, and first-place votes.
get_news
Get college football news articles.
team_id(str, optional): ESPN team ID to filter news 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 drives[] with play-by-play detail including down, distance, yard line, play description, and scoring plays.
get_schedule
Get college football schedule by week.
season(int, optional): Season year. Defaults to current.week(int, optional): CFB week number.group(int, optional): Conference group ID to filter.
Returns events[] for the specified week/season.
get_injuries
Get current college football injury reports across all teams. No parameters.
Returns teams[] with per-team injury lists including player name, position, status, injury type, and detail.
get_futures
Get college football futures/odds markets (National Championship, Heisman, 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_team_stats
Get full team statistical profile for a season.
team_id(str, required): ESPN team ID.season_year(int, optional): Season year. Defaults to current.season_type(int, optional): 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 ID.season_year(int, optional): Season year. Defaults to current.season_type(int, optional): 2=regular (default), 3=postseason.
Returns categories[] with detailed stats including value, rank, and per-game averages.
Conference IDs (group parameter)
| Conference | Group ID | Conference | Group ID |
|---|---|---|---|
| ACC | 1 | Big 12 | 4 |
| SEC | 8 | Big Ten | 9 |
| Pac-12 | 15 | American | 151 |
| Mountain West | 17 | Sun Belt | 37 |
| MAC | 15 | Conference USA | 12 |
Note: Conference IDs may change across seasons. Use get_standings without a group to see all conferences and their current structure.
Common Team IDs
| Team | ID | Team | ID |
|---|---|---|---|
| Alabama | 333 | Ohio State | 194 |
| Georgia | 61 | Michigan | 130 |
| Texas | 251 | USC | 30 |
| Oregon | 2483 | Penn State | 213 |
| Clemson | 228 | LSU | 99 |
| Florida State | 52 | Oklahoma | 201 |
| Notre Dame | 87 | Tennessee | 2633 |
| Florida | 57 | Auburn | 2 |
Use get_teams for all 750+ FBS team IDs.
Season Structure
- Regular Season: Late August – early December (Weeks 1–15)
- Conference Championships: Early December
- Bowl Season: Mid-December – early January
- College Football Playoff: December – January
CFB Conference IDs
Use the --group parameter for standings and scoreboard filtering.
| Conference | Group ID | Conference | Group ID |
|---|---|---|---|
| ACC | 1 | Big 12 | 4 |
| SEC | 8 | Big Ten | 9 |
| Pac-12 | 15 | American | 151 |
| Mountain West | 17 | Sun Belt | 37 |
| MAC | 15 | Conference USA | 12 |
Tip: Conference IDs may change across seasons. Use get_standings without a group to see all conferences and their current structure.
CFB Common Team IDs
Use get_teams to look up any team ID programmatically.
| Team | ID | Team | ID |
|---|---|---|---|
| Alabama | 333 | Ohio State | 194 |
| Georgia | 61 | Michigan | 130 |
| Texas | 251 | USC | 30 |
| Oregon | 2483 | Penn State | 213 |
| Clemson | 228 | LSU | 99 |
| Florida State | 52 | Oklahoma | 201 |
| Notre Dame | 87 | Tennessee | 2633 |
| Florida | 57 | Auburn | 2 |
Tip: Use get_teams for a full FBS list. ESPN URLs reveal IDs (e.g., espn.com/college-football/team/_/id/333/alabama → ID 333).
#!/bin/bash
# Usage: scripts/validate_params.sh [command] [options]
# Validates parameters before executing sports-skills commands
SPORT="cfb"
COMMAND="${1:-}"
# Season check
MONTH=$(date +%m)
case "$SPORT" in
cfb)
if [[ $MONTH -ge 2 && $MONTH -le 7 ]]; then
echo "WARNING: CFB is in off-season (Aug-Jan). Scoreboard/rankings may be empty."
echo "SUGGESTION: Use get_news or get_standings with a specific season instead."
fi
;;
esac
# Date format check
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 in YYYY-MM-DD format. Got: $DATE"
exit 1
fi
fi
# Group ID check
if [[ "$*" == *"--group="* ]]; then
GROUP=$(echo "$*" | grep -o '\-\-group=[^ ]*' | cut -d= -f2)
if [[ ! "$GROUP" =~ ^[0-9]+$ ]]; then
echo "ERROR: Group ID must be a number. Got: $GROUP"
exit 1
fi
fi
# Team ID check
if [[ "$*" == *"--team_id="* ]]; then
TEAM_ID=$(echo "$*" | grep -o '\-\-team_id=[^ ]*' | cut -d= -f2)
if [[ ! "$TEAM_ID" =~ ^[0-9]+$ ]]; then
echo "ERROR: Team ID must be a number. Got: $TEAM_ID"
exit 1
fi
fi
# Week check
if [[ "$*" == *"--week="* ]]; then
WEEK=$(echo "$*" | grep -o '\-\-week=[^ ]*' | cut -d= -f2)
if [[ ! "$WEEK" =~ ^[0-9]+$ ]]; then
echo "ERROR: Week must be a number. Got: $WEEK"
exit 1
fi
fi
# Event ID check
if [[ "$*" == *"--event_id="* ]]; then
EVENT_ID=$(echo "$*" | grep -o '\-\-event_id=[^ ]*' | cut -d= -f2)
if [[ ! "$EVENT_ID" =~ ^[0-9]+$ ]]; then
echo "ERROR: Event ID must be a number. Got: $EVENT_ID"
exit 1
fi
fi
echo "OK"
Related skills
How it compares
Use cfb-data to seed CFB prototypes with real historical data; choose production sports API integrations when live in-game feeds and SLAs are required.
FAQ
What data does cfb-data provide for developers?
cfb-data provides college football stats, game schedules, and historical results from machina-sports/sports-skills. Developers use these datasets to benchmark analytics features, populate prototype dashboards, or validate whether a sports product idea has viable data coverage.
Is cfb-data meant for production sports betting apps?
cfb-data is oriented toward prototyping and feature validation with college football datasets, not production live trading infrastructure. Developers building real-time wagering systems need dedicated low-latency feeds beyond this validation-focused skill.