Strava API endpoint
Returns Strava's public challenge gallery: the currently promoted challenge plus every gallery section (partner challenges, and one section per sport such as run/ride), each with its challenges' goal, duration, and cover art. Public data, sourced from Strava's own challenge gallery.
/strava/challengesNo parameters — the gallery is not paginated or query-filterable server-side.
Notable response behavior:
sections is ordered with partner first, then the remaining sport
categories alphabetically.goal is null for challenges measured by elapsed time
rather than a fixed distance/duration target (e.g. "fastest mile ever").| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| category | 3 | |
| title | 3 | |
| challenges | 3 | median 4 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/strava/challenges" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"promoted_challenge": {
"id": 6158,
"name": "August Flexibility Challenge",
"url": "https://www.strava.com/challenges/August-Flexibility-Challenge",
"sponsored": false,
"goal": 36000,
"dimension": "moving_time",
"icon": "yoga",
"duration": "Aug 1, 2026 to Aug 31, 2026",
"goal_description": "Complete 10 hours of yoga or workout activity this month."
},
"sections": [
{
"category": "partner",
"title": "Partner Challenges",
"challenges": [
{
"id": 6156,
"name": "Runna August Ten Days Active Challenge",
"url": "https://www.strava.com/challenges/Runna-August-Ten-Days-Active-2026",
"sponsored": true,
"goal": 10,
"dimension": "moving_time",
"duration": "Aug 1, 2026 to Aug 31, 2026"
}
]
},
{
"category": "run",
"title": "Run Challenges",
"challenges": [
{
"id": 6162,
"name": "August 10K Challenge",
"url": "https://www.strava.com/challenges/August-10K-challenge-2026",
"sponsored": false,
"goal": 10000,
"dimension": "avg_pace_min_distance",
"duration": "Aug 1, 2026 to Aug 31, 2026",
"goal_description": "Complete a 10 km (6.2 mi) run."
}
]
}
],
"source_url": "https://www.strava.com/challenges"
}
}Request schema
No body schema
Response schema
#/definitions/strava.challengesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | strava.ChallengesResponse | No | ||||
| data.fetched_at | string | No | 2026-08-07T12:00:00Z | |||
| data.promoted_challenge | strava.Challenge | No | ||||
| data.promoted_challenge.cover_image_url | string | No | https://dgalywyr863hv.cloudfront.net/challenges/6162/6162-cover.png | |||
| data.promoted_challenge.dimension | string | No | avg_pace_min_distance | |||
| data.promoted_challenge.duration | string | No | Aug 1, 2026 to Aug 31, 2026 | |||
| data.promoted_challenge.goal | number | No | 10000 | |||
| data.promoted_challenge.goal_description | string | No | Complete a 10 km (6.2 mi) run. | |||
| data.promoted_challenge.icon | string | No | run | |||
| data.promoted_challenge.id | integer | No | 6162 | |||
| data.promoted_challenge.logo_image_url | string | No | https://dgalywyr863hv.cloudfront.net/challenges/6162/6162-logo.png | |||
| data.promoted_challenge.name | string | No | August 10K Challenge | |||
| data.promoted_challenge.sponsored | boolean | No | false | |||
| data.promoted_challenge.url | string | No | https://www.strava.com/challenges/August-10K-challenge-2026 | |||
| data.sections | array | No | ||||
| data.sections[].category | string | No | run | |||
| data.sections[].challenges | array | No | ||||
| data.sections[].challenges[].cover_image_url | string | No | https://dgalywyr863hv.cloudfront.net/challenges/6162/6162-cover.png | |||
| data.sections[].challenges[].dimension | string | No | avg_pace_min_distance | |||
| data.sections[].challenges[].duration | string | No | Aug 1, 2026 to Aug 31, 2026 | |||
| data.sections[].challenges[].goal | number | No | 10000 | |||
| data.sections[].challenges[].goal_description | string | No | Complete a 10 km (6.2 mi) run. | |||
| data.sections[].challenges[].icon | string | No | run | |||
| data.sections[].challenges[].id | integer | No | 6162 | |||
| data.sections[].challenges[].logo_image_url | string | No | https://dgalywyr863hv.cloudfront.net/challenges/6162/6162-logo.png | |||
| data.sections[].challenges[].name | string | No | August 10K Challenge | |||
| data.sections[].challenges[].sponsored | boolean | No | false | |||
| data.sections[].challenges[].url | string | No | https://www.strava.com/challenges/August-10K-challenge-2026 | |||
| data.sections[].title | string | No | Run Challenges | |||
| data.source_url | string | No | https://www.strava.com/challenges | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/strava/challenges" \
-H "x-api-key: $CRAWLORA_API_KEY"