komoot.com APIkomoot.com ↗
Access Komoot route data via API: GPS coordinates, elevation profiles, surface types, photo galleries, and regional trail collections by location and sport type.
curl -X GET 'https://api.parse.bot/scraper/241b6f4c-0b7a-4a05-a37e-e5bb73799df8/search_routes?lat=47.3769&lng=8.5417&limit=2&sport=hike' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for outdoor routes by location, sport, and distance. Returns paginated results with route summaries including distance, duration, elevation, difficulty, and creator information.
| Param | Type | Description |
|---|---|---|
| latrequired | string | Latitude of the search center (e.g. 47.3769) |
| lngrequired | string | Longitude of the search center (e.g. 8.5417) |
| page | integer | Page number for pagination |
| limit | integer | Number of results per page |
| sport | string | Sport type filter (e.g. hike, mtb, racebike, touringbicycle, jogging) |
| difficulty | string | Difficulty filter: easy, moderate, or difficult |
| max_distance | integer | Search radius in meters from the center point |
{
"type": "object",
"fields": {
"page": "object with size, totalElements, totalPages, and number",
"_links": "object with pagination links (self, next)",
"_embedded": "object containing items array of route summaries with id, name, distance, duration, elevation_up, elevation_down, sport, difficulty, start_point, and creator"
},
"sample": {
"data": {
"page": {
"size": 3,
"number": 0,
"totalPages": 334,
"totalElements": 1002
},
"_embedded": {
"items": [
{
"id": "e1985976155",
"name": "Pfäffikersee Circular Trail",
"sport": "hike",
"distance": 10008.31,
"duration": 9260,
"share_url": "https://www.komoot.com/smarttour/e1985976155/pfaeffikersee-circular-trail",
"difficulty": {
"grade": "moderate"
},
"start_point": {
"alt": 548.4,
"lat": 47.367064,
"lng": 8.78465
},
"elevation_up": 45.07,
"elevation_down": 45.07
}
]
}
},
"status": "success"
}
}About the komoot.com API
The Komoot API exposes 5 endpoints covering outdoor route discovery, detailed GPS and elevation data, photo galleries, regional editorial collections, and public user profiles. The search_routes endpoint lets you query by latitude/longitude, sport type, difficulty, and search radius, returning paginated summaries with distance, duration, ascent, and descent figures. The get_route_details endpoint delivers per-coordinate altitude data alongside surface types, way types, and timeline highlights for any route ID.
Route Search and Filtering
The search_routes endpoint accepts a lat/lng center point plus optional filters for sport (hike, mtb, racebike, touringbicycle, jogging), difficulty (easy, moderate, difficult), and max_distance in meters. Results come back paginated — the page object includes totalElements and totalPages — with each item in _embedded.items carrying the route id, name, distance, duration, elevation_up, elevation_down, sport, and difficulty. That id feeds directly into the detail, gallery, and any downstream lookups.
Route Details and Elevation Profiles
get_route_details returns the full coordinate array under _embedded.coordinates.items, where each point has lat, lng, alt, and t (a distance-along-route index). This is the primary source for building an elevation profile or rendering a GPX-style track. The response also includes _embedded.way_types, _embedded.surfaces, and _embedded.timeline — the last of which contains highlights and tips placed at specific points along the route. Cover images and creator metadata are embedded in the same response.
Galleries and Regional Discovery
get_route_gallery paginates photos attached to a route, returning each image's templated src URL, location, created_at timestamp, and creator info. For broader location-based exploration, get_location_elements queries curated collections and editorial guides by lat/lng, optionally filtered by sport type. Each collection item includes type, name, intro, share_url, and summary statistics. User lookups are handled by get_user_profile, which resolves a username or numeric ID to display_name, avatar, status, and is_premium.
- Build a trail finder that searches routes by GPS bounding area, sport type, and difficulty level using
search_routes. - Generate elevation profile charts from the per-coordinate
altfield returned byget_route_details. - Export route tracks to GPX or GeoJSON by extracting the
lat,lng,alt,tcoordinate array. - Surface route surface and way-type breakdowns (paved, gravel, singletrack) for ride planning apps.
- Populate a location guide page with curated regional collections from
get_location_elements. - Attach a photo carousel to a route page using paginated gallery images from
get_route_gallery. - Look up Komoot user display names and premium status for community features via
get_user_profile.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Komoot have an official developer API?+
What does `get_route_details` return beyond basic distance and duration?+
lat, lng, alt, t) for the entire track, surface-type segments, way-type segments, a timeline of highlights and tips with positions along the route, cover images, and the creator's profile data — all in a single response keyed to the route ID.Can I retrieve a user's full list of created or saved routes?+
get_user_profile returns display name, avatar, status, and premium flag, but does not enumerate a user's routes or tours. You can fork this API on Parse and revise it to add an endpoint that queries a user's public route list.Does `search_routes` return routes globally, or is coverage limited?+
lat/lng center and a max_distance radius, so results depend on what Komoot's own dataset contains for that area. Coverage is generally strong in Europe and growing elsewhere, but sparse areas may return few or no results for certain sport types.