This is the operational map behind fbdata: what is connected, what needs a key or license, how quickly it moves, and what may be redistributed.
| source | role | state | latency | constraint |
|---|---|---|---|---|
| nflverse / nflreadpy | historical results and features | ingested | nightly in season | nfl-data-py is deprecated; nflreadpy is the supported Python reader. |
| Pro Football Reference via nflverse | historical validation and advanced stats | ingested | postgame | Use the nflverse release assets; do not operate a direct PFR scraper. |
| ESPN site JSON | free live scores, play-by-play and injuries | ready | poll every 15-30 seconds in-game | Connected and verified 2026-08-04; undocumented upstream, so monitor schema and availability. |
| The Odds API | market prices, player-prop lines and championship futures | ingested | polling | api_key |
| Kalshi and Polymarket | exchange-traded contract prices as probabilities | ingested | polling | Public read-only market data; no credentials and no order placement. Kalshi is a CFTC-regulated designated contract market, not a sportsbook, so a different regulatory regime applies to it than to the books in the_odds_api. |
| National Weather Service | stadium forecasts and observations | ready | hourly forecast updates | open |
| MySportsFeeds | live score and play-by-play redundancy | credential_required | real time | Free options are advertised for personal/private use; commercial use needs the matching plan. |
| BALLDONTLIE NFL API | free score and game-state backup | credential_required | 5 requests/minute on free tier | The free tier is basic game data; play-by-play, odds and webhooks are paid tiers. |
| API-American-Football | low-frequency live health check | credential_required | 100 requests/day on free tier | Useful as a fallback check, not enough quota for per-play polling. |
| BigBallsData NFL API | hosted nflverse and 2026 live scores | credential_required | 1,000 requests/day | Historical data is sourced from nflverse; live in-game scores are advertised for 2026. |
| Sleeper API | fantasy identity, rosters and NFL state | ready | near real time | Free and read-only; useful fantasy context, not game play-by-play. |
| NFL Big Data Bowl | historical player-tracking features | ready | annual archive | Unique 10 Hz Next Gen Stats tracking; sign in and accept each competition's rules. |
| Spreadspoke | long-run scores, lines, totals and weather | ready | periodic | Game results since 1966 and betting lines since 1979; valuable pre-1999 market history. |
| NFLSavant | historical play-by-play cross-check | ready | season archive | CSV play-by-play for 2013-2024; mostly redundant with nflverse, best used for validation. |
| Pro Football Focus | grades and charting enrichment | private_connected | browser snapshot | Connected through account-visible grade snapshots; browser credentials are not stored in fbdata. |
| Sharp Football Analysis | expert priors and market context | private_connected | browser snapshot | Connected through account-visible article signals and team tags. |
| Sportradar NFL API | live play-by-play and availability | license_required | streaming push | enterprise_license |
| Genius Sports | official NFL play-by-play and Next Gen Stats | license_required | low-latency stream | enterprise_license |
| RotoWire | injuries, depth charts and player news | license_required | minutes | enterprise_license |
PFF and Sharp account-visible snapshots feed the authenticated private agent surface. Public query and catalog routes exclude those datasets.
# main markets; add --props near game day
uv run python scripts/ingest_live.py --source espn
# main markets; add --props near game day
uv run python scripts/ingest_live.py --source odds --props --days 8
# forecasts for outdoor games inside the NWS window
uv run python scripts/ingest_live.py --source weather --days 8