{"recommended_stack":["nflverse","the_odds_api","nws","pff","sharp"],"production_live_upgrade":["sportradar_or_genius","rotowire"],"feeds":[{"name":"nflverse","label":"nflverse / nflreadpy","role":"historical results and features","access":"open","latency":"nightly in season","datasets":["pbp","schedules","players","player_stats","snap_counts","injuries","depth_charts"],"required_env":[],"redistribution":"derived_and_raw","note":"nfl-data-py is deprecated; nflreadpy is the supported Python reader.","state":"ingested","configured":true,"datasets_present":["depth_charts","injuries","pbp","player_stats","players","schedules","snap_counts"]},{"name":"pfr_via_nflverse","label":"Pro Football Reference via nflverse","role":"historical validation and advanced stats","access":"open_redistribution_path","latency":"postgame","datasets":["pfr_pass","pfr_def","pfr_rec","pfr_rush"],"required_env":[],"redistribution":"derived_and_raw","note":"Use the nflverse release assets; do not operate a direct PFR scraper.","state":"ingested","configured":true,"datasets_present":["pfr_def","pfr_pass","pfr_rec","pfr_rush"]},{"name":"espn","label":"ESPN site JSON","role":"free live scores, play-by-play and injuries","access":"no_key_unofficial","latency":"poll every 15-30 seconds in-game","datasets":["live_games","live_plays","live_injuries"],"required_env":[],"redistribution":"derived_only","note":"Connected and verified 2026-08-04; undocumented upstream, so monitor schema and availability.","state":"ready","configured":true,"datasets_present":[]},{"name":"the_odds_api","label":"The Odds API","role":"market prices, player-prop lines and championship futures","access":"api_key","latency":"polling","datasets":["odds_events","market_quotes","prop_quotes","futures_quotes"],"required_env":["THE_ODDS_API_KEY"],"redistribution":"derived_and_raw","note":"","state":"ingested","configured":true,"datasets_present":["futures_quotes","market_quotes","odds_events","prop_quotes"]},{"name":"prediction_markets","label":"Kalshi and Polymarket","role":"exchange-traded contract prices as probabilities","access":"no_key_public_read","latency":"polling","datasets":["prediction_quotes"],"required_env":[],"redistribution":"derived_only","note":"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.","state":"ingested","configured":true,"datasets_present":["prediction_quotes"]},{"name":"nws","label":"National Weather Service","role":"stadium forecasts and observations","access":"open","latency":"hourly forecast updates","datasets":["weather_forecasts"],"required_env":[],"redistribution":"derived_and_raw","note":"","state":"ready","configured":true,"datasets_present":[]},{"name":"mysportsfeeds","label":"MySportsFeeds","role":"live score and play-by-play redundancy","access":"free_private_use_or_paid","latency":"real time","datasets":["msf_games","msf_plays","msf_injuries"],"required_env":["MYSPORTSFEEDS_API_KEY"],"redistribution":"per_plan","note":"Free options are advertised for personal/private use; commercial use needs the matching plan.","state":"credential_required","configured":false,"datasets_present":[]},{"name":"balldontlie","label":"BALLDONTLIE NFL API","role":"free score and game-state backup","access":"free_api_key","latency":"5 requests/minute on free tier","datasets":["bdl_games"],"required_env":["BALLDONTLIE_API_KEY"],"redistribution":"derived_and_raw","note":"The free tier is basic game data; play-by-play, odds and webhooks are paid tiers.","state":"credential_required","configured":false,"datasets_present":[]},{"name":"api_sports_nfl","label":"API-American-Football","role":"low-frequency live health check","access":"free_api_key","latency":"100 requests/day on free tier","datasets":["api_sports_games"],"required_env":["API_SPORTS_KEY"],"redistribution":"derived_and_raw","note":"Useful as a fallback check, not enough quota for per-play polling.","state":"credential_required","configured":false,"datasets_present":[]},{"name":"bigballsdata","label":"BigBallsData NFL API","role":"hosted nflverse and 2026 live scores","access":"free_api_key","latency":"1,000 requests/day","datasets":["bbd_games","bbd_weekly_stats","bbd_plays"],"required_env":["BIGBALLSDATA_API_KEY"],"redistribution":"derived_and_raw","note":"Historical data is sourced from nflverse; live in-game scores are advertised for 2026.","state":"credential_required","configured":false,"datasets_present":[]},{"name":"sleeper","label":"Sleeper API","role":"fantasy identity, rosters and NFL state","access":"open_no_key","latency":"near real time","datasets":["sleeper_state","sleeper_players"],"required_env":[],"redistribution":"derived_and_raw","note":"Free and read-only; useful fantasy context, not game play-by-play.","state":"ready","configured":true,"datasets_present":[]},{"name":"big_data_bowl","label":"NFL Big Data Bowl","role":"historical player-tracking features","access":"free_kaggle_account","latency":"annual archive","datasets":["tracking_frames","tracking_plays"],"required_env":[],"redistribution":"derived_and_raw","note":"Unique 10 Hz Next Gen Stats tracking; sign in and accept each competition's rules.","state":"ready","configured":true,"datasets_present":[]},{"name":"spreadspoke","label":"Spreadspoke","role":"long-run scores, lines, totals and weather","access":"free_download","latency":"periodic","datasets":["spreadspoke_games","spreadspoke_stadiums"],"required_env":[],"redistribution":"derived_and_raw","note":"Game results since 1966 and betting lines since 1979; valuable pre-1999 market history.","state":"ready","configured":true,"datasets_present":[]},{"name":"nflsavant","label":"NFLSavant","role":"historical play-by-play cross-check","access":"free_download","latency":"season archive","datasets":["nflsavant_pbp"],"required_env":[],"redistribution":"derived_and_raw","note":"CSV play-by-play for 2013-2024; mostly redundant with nflverse, best used for validation.","state":"ready","configured":true,"datasets_present":[]},{"name":"pff","label":"Pro Football Focus","role":"grades and charting enrichment","access":"account_authenticated_private","latency":"browser snapshot","datasets":["pff_grades"],"required_env":[],"redistribution":"private_agent_context","note":"Connected through account-visible grade snapshots; browser credentials are not stored in fbdata.","state":"private_connected","configured":true,"datasets_present":["pff_grades"]},{"name":"sharp","label":"Sharp Football Analysis","role":"expert priors and market context","access":"account_authenticated_private","latency":"browser snapshot","datasets":["sharp_signals"],"required_env":[],"redistribution":"private_agent_context","note":"Connected through account-visible article signals and team tags.","state":"private_connected","configured":true,"datasets_present":["sharp_signals"]},{"name":"sportradar","label":"Sportradar NFL API","role":"live play-by-play and availability","access":"enterprise_license","latency":"streaming push","datasets":["play_by_play_live","live_injuries","live_depth_charts"],"required_env":[],"redistribution":"per_contract","note":"","state":"license_required","configured":true,"datasets_present":[]},{"name":"genius","label":"Genius Sports","role":"official NFL play-by-play and Next Gen Stats","access":"enterprise_license","latency":"low-latency stream","datasets":["official_live","next_gen_stats"],"required_env":[],"redistribution":"per_contract","note":"","state":"license_required","configured":true,"datasets_present":[]},{"name":"rotowire","label":"RotoWire","role":"injuries, depth charts and player news","access":"enterprise_license","latency":"minutes","datasets":["news","live_injuries","live_depth_charts"],"required_env":[],"redistribution":"per_contract","note":"","state":"license_required","configured":true,"datasets_present":[]}],"rule":"Account-authenticated sources are isolated behind the private API. Secrets are reported only as configured/not configured."}