Week
Recent schedule changes
No kickoff changes recorded yet.
Sources
Each run fetches every source, votes on the kickoff for each game, and records disagreement. Two sources agreeing beats one; all three agreeing is marked confirmed.
Use this data
Plain GET requests, no sign-up, CORS enabled. Responses are cached at the edge for two minutes. Times default to Eastern; pass tz= with any IANA zone to convert.
| Endpoint | Returns |
|---|---|
GET /api/schedule.csv | CSV: Week #,Date,Time,Away Team,Home Team — all 18 weeks |
GET /api/schedule.csv?week=current | Same, only the current week. week=1…18 also works |
GET /api/schedule.json | JSON with kickoff in UTC, status, confidence, broadcast and per-source values |
GET /api/scores.json | Live scores for the current week: awayScore, homeScore, clockDisplay (Q3 4:12, Half, Final, F/OT), completed, winner. Refreshed every minute while games are on. week=all for the season |
GET /api/scores.csv | Same as CSV, with team abbreviations |
GET /api/status.json | Last update, next update, current week, source health, open issues |
GET /api/changes.json | Log of every kickoff move the feed has seen this season |
Query parameters
week | current or 1–18. Omit for the whole season. |
tz | IANA time zone for Date and Time, e.g. America/Chicago. Default America/New_York. |
timefmt | 24h (default, 20:15) or 12h (8:15 PM). |
columns=extended | CSV only: adds Kickoff (UTC), Time Zone, Status, Confidence, Broadcast, Neutral Site. |
tbd=skip | Leave out games whose kickoff time is not set yet (otherwise Time is TBD). |
download=1 | CSV only: send as a file attachment. |
Format
Week #,Date,Time,Away Team,Home Team 2,2026/09/17,20:15,Detroit Lions,Buffalo Bills 2,2026/09/20,13:00,Carolina Panthers,Atlanta Falcons
Date is YYYY/MM/DD. Team names are always City Nickname ("Dallas Cowboys"), never abbreviations. Rows are ordered by week, then kickoff.
Code
Reading the confidence field
confirmed | Every source that reports a kickoff time agrees. |
majority | Two or more agree, at least one differs. The majority value is used. |
single | Only one source has a time for this game yet (common for far-off weeks). |
conflict | Sources disagree with no majority. Highest-priority source (ESPN) wins and an alert goes out. |
tbd | No source has published a kickoff time. Date is still provided. |
Kickoff-sensitive apps (like locking picks once a game starts) should treat kickoffUtc from the JSON as the authority and use the CSV for display or import.
Scores
Scores come from ESPN and are checked every minute from 15 minutes before the first kickoff until the last game of the week is final. Before kickoff awayScore/homeScore are null and clockDisplay is empty; completed flips to true and winner is set (team name or tie) when a game ends. Poll once a minute on game days — responses are cached for 20 seconds.
GET /api/scores.json?week=current
{ "week": 1, "away": "Dallas Cowboys", "home": "New York Giants",
"awayAbbr": "DAL", "homeAbbr": "NYG", "status": "in_progress",
"clockDisplay": "Q3 4:12", "period": 3, "clock": "4:12",
"awayScore": 17, "homeScore": 14, "completed": false, "winner": null }