v1.0.0
This is the API backend for
www.sportspuff.org.
It serves live scores, schedules, standings, and season info across
12 sports/leagues:
MLB, NBA, NFL, NHL, WNBA, MLS, IPL, MLC, FIFA World Cup, ATP, WTA, and the UCI World Tour (Tour de France, Giro, Vuelta, classics).
Canonical API routes live under /v1 and negotiate JSON vs plain text with the
Accept header. Legacy /api/v1 and /curl/v1 routes remain
available as compatibility shims.
Interactive API docs at /docs and /redoc.
| League | Slug | Scores | Schedule | Standings | Season info |
|---|---|---|---|---|---|
| MLB | mlb | ✓ | ✓ | ✓ | ✓ |
| NBA | nba | ✓ | ✓ | ✓ | ✓ |
| NFL | nfl | ✓ | ✓ | ✓ | ✓ |
| NHL | nhl | ✓ | ✓ | ✓ | ✓ |
| WNBA | wnba | ✓ | ✓ | ✓ | ✓ |
| MLS | mls | ✓ | ✓ | ✓ | ✓ |
| IPL (cricket) | ipl | ✓ | ✓ | ✓ | ✓ |
| MLC (cricket) | mlc | ✓ | ✓ | ✓ | ✓ |
| FIFA World Cup | wc | ✓ | ✓ | ✓ (group stage) | ✓ |
| ATP tennis | atp | fixture only | ✓ | n/a | tour calendar |
| WTA tennis | wta | fixture only | ✓ | n/a | tour calendar |
| UCI World Tour (cycling) | cycling | calendar + results fields | ✓ | GC when configured | race calendar |
Tennis still has fixture-only coverage upstream. Cycling now surfaces stage winner and GC rank fields when the configured collector provides them; standings are available when the source exposes GC data.
| /v1/scores/today CANONICAL | All sports; use Accept to choose JSON or text |
| /v1/scores/{sport}/today CANONICAL | Single sport; use Accept to choose JSON or text |
| /api/v1/scores/today JSON | Legacy JSON compatibility route |
| /api/v1/scores/{sport}/today JSON | Legacy JSON compatibility route |
| /curl/v1/scores/today TEXT | Legacy plain-text compatibility route |
| /curl/v1/scores/{sport}/today TEXT | Legacy plain-text compatibility route |
| /v1/schedules/today CANONICAL | All sports; use Accept to choose JSON or text |
| /v1/schedule/{sport}/today CANONICAL | Single sport; use Accept to choose JSON or text |
| /api/v1/schedules/today JSON | Legacy JSON compatibility route |
| /api/v1/schedule/{sport}/today JSON | Legacy JSON compatibility route |
| /curl/v1/schedules/today TEXT | Legacy plain-text compatibility route |
| /curl/v1/schedule/{sport}/today TEXT | Legacy plain-text compatibility route |
| /v1/standings/{sport} CANONICAL | Use Accept to choose JSON or text |
| /api/v1/standings/{sport} JSON | Legacy JSON compatibility route |
| /curl/v1/standings/{sport} TEXT | Legacy plain-text compatibility route |
| /v1/season-info/{league} CANONICAL | Season phase dates, current phase, last champion (when known) |
| /api/v1/season-info/{league} JSON | Legacy JSON compatibility route |
| /v1/status CANONICAL | Upstream + endpoint health snapshot; use Accept to choose JSON or text |
| /api/v1/status JSON | Legacy JSON compatibility route |
| /status | HTML status page |
| /curl/v1/status TEXT | Legacy plain-text compatibility route |
| /docs | Interactive API docs (Swagger UI) |
| /redoc | Reference API docs (ReDoc) |
| /openapi.json JSON | OpenAPI 3 spec (for client codegen) |
| /help | Full endpoint reference (HTML) |
| /api/help JSON | Full endpoint reference |
| /curl/help TEXT | Full endpoint reference |
Canonical endpoints live under /v1
and negotiate format via the Accept header.
Legacy /api/v1 and
/curl/v1 routes remain available as compatibility shims.
Replace today
with yesterday,
tomorrow,
or a date like 2026-04-28.
Sports: mlb,
nba,
nfl,
nhl,
wnba,
ipl,
mlc,
or all.
Add ?tz=et
for Eastern time (default is Pacific).