ESPN Ingest Admin
Trigger ingestion jobs and watch them live.
Data freshness
Canonical ingestors
Pick one or more named ingestors. Order is preserved (run in dependency order, e.g. core → teams).
Recent events
Re-pulls the scoreboard for each of the last N days (both leagues). Idempotent — upserts only fix missed games. Cheap nightly job.
Season backfill
Full season of events for one league. NFL year is the start year (2025 → 2025-26 season); NBA year is the end year (2026 → 2025-26 season).
Box scores
Per-player game stats for every existing event in the chosen league.
Play-by-play
Per-play data for completed games. Optional season scope (NBA: end year, e.g. 2026; NFL: start year). Idempotent — re-runs skip games already ingested.
Odds backfill
Pulls historical closing-line odds from core.api per-event endpoint. site.api scoreboard only includes inline odds for very-recent games — this fills the gap. Idempotent on (competition_id, provider_id); skips competitions that already have odds rows unless overwrite is checked.
All NFL athletes
Walks ESPN's core /athletes index — every player ever (active + retired). Long-running.
All NBA athletes
Walks ESPN's core /athletes index for NBA — every player ever (active + retired, incl. G-League/two-way). Run before plays ingest to resolve all participant FKs.
Freeform
Pass any flags through to `python -m espn_db.ingest.run`. Args are shlex-split (no shell, safe). Examples: `events --dates 20260415` or `--boxscores nfl`.