CYCLINGdata api12 races live

Cycling Data API documentation

Build with every stage.

Account and coverage

Coverage by season

Editions and result rows held for each season, by discipline, gender, class and region.

GET/v1/coverage/seasonsFree on every key

Your keyNot saved in this browser. Paste it to run the examples, or get a free key.

Request

curl "https://api.cyclingapi.com/v1/coverage/seasons" \
  -H "Authorization: Bearer YOUR_KEY"
$ch = curl_init('https://api.cyclingapi.com/v1/coverage/seasons');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_KEY']]);
$data = json_decode(curl_exec($ch), true);
import requests
r = requests.get("https://api.cyclingapi.com/v1/coverage/seasons",
  headers={"Authorization": "Bearer YOUR_KEY"})
data = r.json()
const r = await fetch("https://api.cyclingapi.com/v1/coverage/seasons", {
  headers: { Authorization: "Bearer YOUR_KEY" } });
const data = await r.json();
Try itRuns from this page with your saved key. Free on every key.

Parameters

NameTypeNeedAbout
disciplinestringOptionalroadtrackmtbcyclocrossbmxgravel
yearintegerOptionalOne season
genderstringOptionalmenwomen
categorystringOptionalClass, such as elite, u23 or junior
regionstringOptionalWhere the races were held, such as Europe or South America
pageintegerOptionalPage number, from 1
per_pageintegerOptionalRows per page (default 50, at most 200)
cursorstringOptionalThe next_cursor from the previous answer

Example answer

Response200 OK ยท application/json

{
    "data": {
        "discipline": "road",
        "year": 2025,
        "gender": "men",
        "category": "elite",
        "region": "",
        "editions": 31,
        "result_rows": 4210000
    }
}

Fields

FieldType
disciplinestring
yearinteger
genderstring
categorystring
regionstring
editionsinteger
result_rowsinteger