Base URL and auth
https://api.sportsapipro.com/v3/cycling/... maps to the same routes.
Endpoints
/api/v1/cycling/tournament/{id} is not served, and /api/v1/match/{eventId} (plus /standings) returns an empty shell for cycling — all the cycling payload is in the period listings.
How to read the response
-
Each
leagues[]entry is a classification, not a competition.... - Overallis the General Classification (GC).... - Stage Nis that stage’s result.- One race therefore appears as several leagues sharing the same
tournamentId.
-
Each
events[]entry is one rider’s placing, not a match.homeTeam.name— the rider (Wiebes L.)homeTeam.shortName— the position ("1","2","3", …)homeTeam.slug/participantId— stable rider identifiersstatus/statusCode—finished, in progress, etc.awayTeamand all score objects are unused for cycling — ignore them.
Recipe: GC table and stage result
"Overall" for "Stage 2" to get that stage’s finishing order.
Coverage notes
- Men’s and women’s Grand Tours and week-long stage races appear under this structure while they are running. Once a race finishes it drops out of the
today/livewindows; useyesterdayimmediately after a stage. league.nameis prefixed with the race family (for exampleTOURS:) and suffixed with the classification. Match ontournamentIdwhen you need a stable key across days.- Not available for cycling on any version: live GPS/telemetry, power and gradient data, per-rider in-stage splits, cycling odds, and multi-season historical backfill.