Strava API endpoint
Returns a page of Strava's public route recommendations for a sport, country, and region (state, or state/city). `sport` values: `hiking`, `road-biking`, `mountain-biking`, `trail-running`, `gravel-biking`. Public data, sourced from Strava's own server-rendered route pages.
/strava/routesReturns a page of Strava's public route recommendations for a sport, country, and region: name, difficulty, distance, elevation gain, and description for each route.
Query parameters:
sport (required) — route sport. Allowed values: hiking,
road-biking, mountain-biking, trail-running, gravel-biking.country (required) — country slug, e.g. usa.region (required) — a state (colorado) or state/city
(colorado/boulder) slug.page (optional) — page number, starting at 1. Defaults to 1.Notable response behavior:
path is usable directly as the path query parameter to
/strava/routes/detail.sport returns 400 before any upstream request is made.404 rather than an empty 200 list.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| rank | 20 | 1 to 20, median 10 |
| name | 20 | |
| path | 20 | |
| url | 20 | strava.com |
| difficulty | 2 | |
| distance_raw | 20 | |
| elevation_gain_raw | 19 | |
| description | 20 | median 253 characters |
| image_url | 20 | dgtzuqphqg23d.cloudfront.net |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| sport | string | Yes | Route sport. Allowed values: hiking, road-biking, mountain-biking, trail-running, gravel-biking Allowed values: hiking, road-biking, mountain-biking, trail-running, gravel-biking. | hiking | |
| country | string | Yes | Country slug, e.g. usa | usa | |
| region | string | Yes | Region slug: a state (colorado) or state/city (colorado/boulder) | colorado | |
| page | integer | No | Page number, starting at 1 | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/strava/routes?sport=hiking&country=usa®ion=colorado&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"sport": "hiking",
"country": "usa",
"region": "colorado",
"title": "Top 318 hiking trails in Colorado",
"page": 1,
"total_pages": 16,
"total_results": 318,
"source_url": "https://www.strava.com/routes/hiking/usa/colorado",
"routes": [
{
"rank": 1,
"name": "Mallory Cave via N.C.A.R. Trail",
"path": "hiking/usa/colorado/boulder/mallory-cave_5171952737974445730",
"url": "https://www.strava.com/routes/hiking/usa/colorado/boulder/mallory-cave_5171952737974445730",
"difficulty": "Easy",
"distance_raw": "1.46 mi",
"elevation_gain_raw": "345 ft",
"description": "The Mallory Cave hike takes you to the mouth of a beautiful cave...",
"image_url": "https://dgtzuqphqg23d.cloudfront.net/8UruePMrrrQMdHGsELroGsOsTMWqh030g7159PMSue4-768x576.jpg"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/strava.routesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | strava.RoutesResponse | No | ||||
| data.country | string | No | usa | Country slug that was requested, such as `usa`. | ||
| data.fetched_at | string | No | 2026-08-07T12:00:00Z | Time the data was fetched, in UTC (RFC 3339). | ||
| data.page | integer | No | 1 | Page number returned, starting at 1. | ||
| data.region | string | No | colorado | Region slug that was requested, such as `colorado`. | ||
| data.routes | array | No | Routes listed on this page. | |||
| data.routes[].description | string | No | The Mallory Cave hike takes you to the mouth of a beautiful cave... | Short description of the route. | ||
| data.routes[].difficulty | string | No | Easy | Difficulty label Strava shows for the route, such as `Easy`. | ||
| data.routes[].distance_raw | string | No | 1.46 mi | Route distance as Strava displays it, with its unit, such as `1.46 mi`. | ||
| data.routes[].elevation_gain_raw | string | No | 345 ft | Elevation gain as Strava displays it, with its unit, such as `345 ft`. | ||
| data.routes[].image_url | string | No | https://dgtzuqphqg23d.cloudfront.net/8UruePMrrrQMdHGsELroGsOsTMWqh030g7159PMSue4-768x576.jpg | URL of the route's image. | ||
| data.routes[].name | string | No | Mallory Cave via N.C.A.R. Trail | Name of the route as Strava shows it. | ||
| data.routes[].path | string | No | hiking/usa/colorado/boulder/mallory-cave_5171952737974445730 | Route path on Strava. Pass it to the route detail endpoint. | ||
| data.routes[].rank | integer | No | 1 | Position of the route in the listing. | ||
| data.routes[].url | string | No | https://www.strava.com/routes/hiking/usa/colorado/boulder/mallory-cave_5171952737974445730 | URL of the route page on Strava. | ||
| data.source_url | string | No | https://www.strava.com/routes/hiking/usa/colorado?page=1 | URL the data was read from. | ||
| data.sport | string | No | hiking | Sport the routes are for, such as `hiking`. | ||
| data.title | string | No | The Best Hiking Trails in Colorado | Title of the Strava route listing page. | ||
| data.total_pages | integer | No | 16 | Total number of pages in the route listing. | ||
| data.total_results | integer | No | 318 | Total number of routes in the listing. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 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/routes?sport=hiking&country=usa®ion=colorado&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"