Skip to content
datasportsAPI

No. 19 · Racing · Race sport

CyclingStages, jerseys and the general classification.

Grand Tours, classics and the full men's and women's calendars: stages, classifications and series standings.

19Racing
Cycling8 endpoints · races

Scouting report

What you get for Cycling

Cycling is a race sport: a race (a one-day classic or a stage race) holds its sessions, each stage one of them, and results carry the classification with times and gaps.

Stage races add the jerseys: general, points, mountains and best young rider, each with its position and points. Series cover the men's and women's calendars, and series standings rank riders and teams across the season.

First request

Today's cycling in one call.

The day's cycling races, each with all its sessions, in UTC. Change the date to read any day your plan's history reaches.

  1. 1Create a key in the dashboard. Free gives you 1,000 requests a day during the beta.
  2. 2Put it in DATASPORTSAPI_API_KEY so the SDKs and the dsa command find it.
  3. 3Call /v2/races?sport=cycling&date=YYYY-MM-DD.
curl -H "Authorization: Bearer dsa_live_…" \
  "https://api.datasportsapi.com/v2/races?sport=cycling&date=$(date -u +%F)"

The catalog

Cycling, endpoint by endpoint

Its own detail first, then the shared spine every race sport answers on. Each row opens the endpoint’s reference page.

All 116 endpoints

Where cycling goes deeper

5 endpoints with detail specific to the sport.

The shared spine

3 endpoints that behave the same for every race sport.

What comes back

Race results, as served

The general classification of a stage race: the leader's time and jersey, plus points and mountains positions.

GET/v2/races/{id}/resultsAll plans

Sample from the docs, trimmed with …

GET /v2/races/{id}/results
{ "data": [ …,
  { "position": 1, "competitor": { "name": "Tadej Pogačar", … }, "team": { "name": "UAE Team Emirates", … }, "state": "classified",
    "timeMs": 266186000, "gapMs": null, …, "tyreStints": [], "currentTyre": null, "inPit": null,
    "cycling": { "jersey": "general", "pointsPosition": 2, "points": 289, "mountainsPosition": 1, "mountainsPoints": 154,
                 "youngRiderPosition": null, "youngRiderTimeMs": null } },
  … ] }

Cycling is one query string away.

Swap ?sport=cycling for the other race sport and the same code keeps working. Free key, no card.