API
Free · read-only · no key required
PUL Stats Hub publishes its stats as plain JSON. No API key, no sign-up, no rate limit. Fetch a file, use the data. Start with the manifest — it lists every endpoint that currently exists.
Every response has the same shape: { schemaVersion, generatedAt, league, data }. Your data is in data. generatedAt tells you how fresh it is, and is null for older seasons we have no timestamp for.
Endpoints
- /api/v1/index.jsonManifest — every available endpoint, per season, with status and last-updated.
- /api/v1/games.jsonEvery completed game, all seasons, with final scores.
- /api/v1/teams.jsonTeam directory — abbreviation, name, colors.
- /api/v1/{season}/standings.jsonWin/loss, points for/against, point differential, division.
- /api/v1/{season}/schedule.jsonAll games including unplayed ones (null scores), with venue and stream links. Cancelled games are flagged cancelled: true, so you can tell them apart from games not yet played.
- /api/v1/{season}/teams.jsonTeam season totals. Absent for seasons without game stats.
Things worth knowing
This is a snapshot, not an event log. Values change retroactively — scores get corrected and stats get reprocessed as we fix data. Check generatedAt if freshness matters to you.
If an endpoint isn't in the manifest, it doesn't exist. We'd rather 404 than hand you an empty array that looks like real data. Seasons without game stats have no team-totals endpoint at all.
Player stats aren't here yet. Players will get a stable ID before they get an endpoint — we're not publishing an identifier we'd have to change later.
Postseason games carry isPostseason: true and weeks 98 (semifinals) / 99 (finals). Filter on the boolean, not the number.
Stability. Within /api/v1/ changes are additive only — new fields may appear, but existing fields won't change name, type, or meaning. Anything breaking gets a new /api/v2/, and v1 keeps working for at least six months after. Data values changing (a corrected score) isn't a breaking change — that's the snapshot note above.
Using it
Free to use with attribution to PUL Stats Hub. If you build something, we'd love to know — get in touch. It also helps us warn you before anything changes.