Results feed for your own tools
If you run your own tool alongside FranchiseHub — a head-to-head bot, a stats tracker, a custom leaderboard — you can pull this league's game results straight from FranchiseHub instead of re-entering them by hand. It updates automatically every time your league advances.
Get a key
- Open your dashboard's Commish Center → League Access.
- Click Create a key, give it a label so you remember what it's for (e.g. "Head-to-head bot"), and click Create key.
- Copy the key shown — it is only shown once. If you lose it, revoke it and create a new one.
Keep the key private. Anyone who has it can read this league's results.
The endpoint
GET https://<your-dashboard-domain>/api/leagues/<leagueId>/results
Send your key as a Bearer token:
curl -H "Authorization: Bearer YOUR_KEY" \
"https://<your-dashboard-domain>/api/leagues/<leagueId>/results?season=0"
Your league's numeric ID is shown at the top of the League Access page and in the example URL there.
Query parameters (all optional)
| Parameter | What it does |
|---|---|
season |
Only this season. Matches the seasonIndex in the response (Season 1 = 0, Season 2 = 1, and so on). |
week |
Only this week. Matches the weekIndex in the response (Week 1 = 0, Week 2 = 1, and so on — playoff weeks continue the same count). |
since |
Only games first seen final at or after this time. Accepts either an ISO timestamp (2026-09-20T00:00:00Z) or milliseconds since epoch. Use this to poll for "what's new" without re-reading the whole season. |
all=1 |
Include games that haven't been played yet too (normally only final games come back). |
format=csv |
Return the same rows as a CSV download instead of JSON. |
Leave everything off to get every played game in the league's current data.
Response shape (JSON)
{
"generatedAt": "2026-09-24T15:04:05.000Z",
"leagueId": "1234567890",
"count": 1,
"results": [
{
"seasonIndex": 0,
"stageIndex": 1,
"weekIndex": 6,
"scheduleId": 4821,
"homeTeamId": 12,
"homeTeam": { "teamId": 12, "name": "Dallas Cowboys", "abbr": "DAL" },
"awayTeamId": 4,
"awayTeam": { "teamId": 4, "name": "Buffalo Bills", "abbr": "BUF" },
"homeScore": 27,
"awayScore": 24,
"status": "played",
"homeUser": { "id": "1234...", "name": "some_discord_name" },
"awayUser": null,
"playedAt": "2026-09-22T02:11:09.000Z"
}
]
}
A few notes on the columns:
homeTeam/awayTeamcarry the CURRENT team identity, even if EA changed this league's team IDs since the game was played — you'll never see a game named for a team that no longer exists under that ID.homeUser/awayUserare only present when a real person has claimed that team through FranchiseHub's team-claim system. A CPU-controlled team comes backnull.playedAtis when FranchiseHub first saw the game as final — not the in-game clock. EA's export doesn't carry a real played-at timestamp, so this is the closest honest substitute, and it's also what?since=filters against. A game played before you created your key may showplayedAt: nullthe first time it appears; after that it's recorded.statusis"played"unless you passedall=1, in which case not-yet-played games come back as"not_played"with zeroed scores.
CSV columns
?format=csv returns the same data as a spreadsheet-friendly download:
seasonIndex,stageIndex,weekIndex,scheduleId,homeTeamId,homeTeamName,homeTeamAbbr,awayTeamId,awayTeamName,awayTeamAbbr,homeScore,awayScore,status,homeUserId,homeUserName,awayUserId,awayUserName,playedAt
Rate limits and revoking a key
Each key can make up to 30 requests per minute — plenty for polling after every advance. If your tool hits that limit it gets a 429 response with a Retry-After header telling it how long to wait.
To shut off a key immediately — a leak, a retired tool, anything — go back to League Access and click Revoke next to it. Revoked keys stop working right away; nothing else on your dashboard changes.