# Komoot Scraper (`solidcode/komoot-scraper`) Actor

\[💰 $1.7 / 1K] Extract hiking, cycling and outdoor routes from Komoot — distance, duration, elevation, difficulty, ratings, surfaces, and named highlights. Search around any place or coordinates, or paste Komoot tour URLs. Filter by activity type and difficulty across 7 sports.

- **URL**: https://apify.com/solidcode/komoot-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Automation, Developer tools, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Komoot Scraper

Pull hiking, cycling, and outdoor routes from Komoot at scale — distance, duration, elevation gain and loss, difficulty grade, star ratings, surface and way-type breakdowns, named highlights with coordinates, and start points for every route in an area. Search around any place name or GPS coordinates, or paste tour links directly. Built for travel-content teams, outdoor-gear marketers, and route-planning app builders who need structured route data without copy-pasting tour pages one at a time.

### Why This Scraper?

- **7 activity types in one run** — hiking, mountain biking, road cycling, bike touring, trail running, e-mountain biking, and e-bike touring, all multi-selectable so you can pull hiking and trail running together in a single search.
- **Named highlights with coordinates** — each route returns its labelled waypoints (peaks, viewpoints, huts) with latitude and longitude, plus a `highlightsCount`, so you can map points of interest, not just the track.
- **Surface and way-type breakdowns** — every route ships a `surfaces` array (asphalt, gravel, trail, etc.) and a `wayTypes` array with the proportion of each, so you know the terrain before you plan.
- **Elevation gain and loss in meters** — separate `elevationUp` and `elevationDown` values per route, not a single net figure — the numbers trail-difficulty and effort models actually need.
- **Star rating and review count** — aggregate `ratingScore` plus `ratingCount` and Komoot `visitors` on every route, ready for popularity ranking.
- **Coverage beyond Komoot's 12-route web limit** — the site shows only 12 routes per view; this actor sweeps a whole area (radius up to 200 km) and returns hundreds of unique routes, deduplicated by tour ID.
- **Three ways in, zero setup** — search by place name ("Dolomites"), by exact trailhead coordinates, or by pasting Komoot tour URLs or IDs; URLs are auto-detected, no mode dropdown to configure.
- **Difficulty filtering across easy, moderate, and difficult** — narrow an area to just the grade you want, applied on top of any activity-type selection.
- **8 result languages** — request route titles and place names in English, German, French, Spanish, Italian, Dutch, Polish, or Portuguese where Komoot provides translations.

### Use Cases

**Travel & Tourism Content**
- Build "best hikes near [town]" guides with distance, elevation, and difficulty pre-filled
- Populate destination pages with route highlights and cover imagery
- Compare route inventory across regions to spot content gaps
- Localize route listings into 8 languages for international audiences

**Outdoor Gear Market Research**
- Map where road cycling vs. mountain biking activity concentrates by region
- Size the e-bike audience by pulling e-MTB and e-touring route counts per area
- Correlate terrain mix (gravel vs. trail vs. asphalt) with product demand
- Track popular routes by rating and visitor counts to target campaigns

**Route-Planning & Fitness Apps**
- Seed a route database with distance, duration, elevation, and start coordinates
- Enrich a known set of tours by pasting their Komoot URLs
- Filter by difficulty grade to match routes to user skill levels
- Pull named highlights to power points-of-interest layers on a map

**Location Intelligence**
- Analyze outdoor-activity density around a coordinate for tourism planning
- Benchmark trail supply between competing destinations
- Identify underserved areas with few graded routes
- Map surface types across a region for infrastructure studies

**Tourism Boards & Destination Marketing**
- Inventory every graded route within a search radius of a resort or park
- Surface top-rated routes to feature in visitor materials
- Track how many routes each activity type offers in your region

### Getting Started

#### Search Around a Place

The simplest way to start — just name a place:

```json
{
    "location": "Munich, Germany",
    "maxResults": 50
}
````

#### Filter by Activity and Difficulty

```json
{
    "location": "Dolomites",
    "sports": ["hike", "e_mtb"],
    "difficulty": ["moderate", "difficult"],
    "searchRadiusKm": 40,
    "maxResults": 200
}
```

#### Search Around Exact Coordinates

Pin the search to a specific trailhead:

```json
{
    "latitude": 47.37,
    "longitude": 10.28,
    "sports": ["hike"],
    "searchRadiusKm": 30,
    "maxResults": 100
}
```

#### Enrich Known Tours by URL

Paste Komoot tour links or bare IDs — filters are ignored, each tour is fetched exactly:

```json
{
    "startUrls": [
        "https://www.komoot.com/tour/41891394",
        "36591"
    ]
}
```

### Input Reference

#### What to Scrape

Provide one of these — URLs take priority, then coordinates, then the place name.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | Komoot tour links (e.g. `https://www.komoot.com/tour/123456789`) or bare tour IDs. When set, the search fields and filters below are ignored and each tour is fetched exactly. |
| `location` | string | `"Munich, Germany"` | A place to search routes around, e.g. "Munich, Germany", "Dolomites", or "Lake District". Used when you are not pasting URLs or coordinates. |
| `latitude` | number | — | Latitude of the point to search around, e.g. `48.137154`. Overrides the place name. Pair with longitude. |
| `longitude` | number | — | Longitude of the point to search around, e.g. `11.576124`. Overrides the place name. Pair with latitude. |

#### Filters

These apply to place and coordinate searches, not to pasted URLs.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sports` | select\[] | `["hike"]` | Activity types to include: Hiking, Mountain biking, Road cycling, Bike touring, Trail running, E-mountain biking, E-bike touring. Multi-select; leave empty for all. |
| `difficulty` | select\[] | `[]` | Difficulty levels to include: Easy, Moderate, Difficult. Leave empty for all. |
| `searchRadiusKm` | integer | `25` | How far from the place or coordinates to search, in kilometers (1–200). Larger areas are covered automatically. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum number of routes to collect across all searches and URLs. Set to `0` to collect all routes in the area (up to a high safety limit). Start with 10–50 to test, then increase. |
| `language` | select | `"en"` | Language for route titles and place names where Komoot provides translations: English, German, French, Spanish, Italian, Dutch, Polish, Portuguese. |

### Output

Each route is returned as one flat record. Here is a representative result:

```json
{
    "tourId": "41891394",
    "name": "Isar Trail – Munich to Grünwald",
    "url": "https://www.komoot.com/tour/41891394",
    "sport": "hike",
    "tourType": "tour_planned",
    "status": "public",
    "difficulty": "moderate",
    "distanceKm": 18.42,
    "durationMin": 265.0,
    "elevationUp": 180.0,
    "elevationDown": 165.0,
    "startLat": 48.137154,
    "startLng": 11.576124,
    "startAlt": 519.0,
    "ratingScore": 4.6,
    "ratingCount": 128,
    "visitors": 5421,
    "constitution": 3,
    "surfaces": [
        { "type": "gravel", "amount": 0.61 },
        { "type": "asphalt", "amount": 0.39 }
    ],
    "wayTypes": [
        { "type": "hiking_path", "amount": 0.72 },
        { "type": "cycleway", "amount": 0.28 }
    ],
    "highlights": [
        { "name": "Grünwald Bridge Viewpoint", "type": "highlight", "sport": "hike", "lat": 48.041, "lng": 11.526 }
    ],
    "highlightsCount": 1,
    "coverImageUrl": "https://photos.komoot.de/...?width=800&height=600&crop=false",
    "mapImageUrl": "https://tiles.komoot.de/...?width=800&height=600&crop=false",
    "createdAt": "2023-05-11T09:24:00.000Z",
    "updatedAt": "2024-08-02T16:03:00.000Z",
    "scrapedAt": "2026-07-02T14:30:00.000Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `tourId` | string | Unique Komoot tour identifier |
| `name` | string | Route title |
| `url` | string | Direct Komoot tour link |
| `sport` | string | Activity category (hike, mtb, racebike, touringbicycle, etc.); may include a finer grade such as `mtb_easy` or `mtb_advanced` when Komoot assigns one |
| `tourType` | string | Tour type (e.g. planned vs. recorded) |
| `status` | string | Visibility status of the tour |
| `difficulty` | string | Graded difficulty: easy, moderate, or difficult |
| `scrapedAt` | string | ISO timestamp of data extraction |

#### Route Metrics

| Field | Type | Description |
|-------|------|-------------|
| `distanceKm` | number | Total distance in kilometers |
| `durationMin` | number | Estimated duration in minutes |
| `elevationUp` | number | Total ascent in meters |
| `elevationDown` | number | Total descent in meters |
| `constitution` | number | Komoot fitness-requirement rating |
| `surfaces` | object\[] | Surface-type breakdown, each `{ type, amount }` (amount = proportion 0–1) |
| `wayTypes` | object\[] | Way/path-type breakdown, each `{ type, amount }` (amount = proportion 0–1) |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `startLat` | number | Start point latitude |
| `startLng` | number | Start point longitude |
| `startAlt` | number | Start point altitude in meters |

#### Ratings & Timestamps

| Field | Type | Description |
|-------|------|-------------|
| `ratingScore` | number | Average star rating |
| `ratingCount` | number | Number of ratings |
| `visitors` | number | Number of visitors / completions |
| `createdAt` | string | When the tour was created |
| `updatedAt` | string | When the tour was last changed |

#### Highlights & Imagery

| Field | Type | Description |
|-------|------|-------------|
| `highlights` | object\[] | Named waypoints, each `{ name, type, sport, lat, lng }` |
| `highlightsCount` | number | Number of highlights on the route |
| `coverImageUrl` | string | Cover photo URL |
| `mapImageUrl` | string | Static map image URL |

### Tips for Best Results

- **Start small, then scale** — set `maxResults` to 10–50 on your first run to confirm the data fits your needs, then raise it or set `0` to sweep the whole area.
- **Widen `searchRadiusKm` in sparse regions** — rural and alpine areas have fewer routes per square kilometer, so a 60–100 km radius returns far more results than the 25 km default. Dense cities fill up quickly at a small radius.
- **Use coordinates for precise trailhead searches** — a place name geocodes to a town center; latitude and longitude let you center the search exactly on a trailhead, park entrance, or summit.
- **Combine activity types thoughtfully** — because the actor stops at `maxResults`, a high-volume activity like hiking can fill the cap before a rarer one appears. Raise `maxResults` or run niche activities (e-MTB, trail running) on their own for full coverage.
- **Paste URLs to enrich a known list** — already have tour IDs from another source? Drop them into `startUrls` to fetch those exact routes, skipping search entirely.
- **Difficulty is filtered within your area** — leaving `difficulty` empty returns every grade; set it to focus a region on beginner-friendly or expert routes only.
- **Match `language` to your audience** — request German, French, Italian, and five more languages to get localized route and place names in one pass.

### Pricing

**From $1.70 per 1,000 results** — a flat pay-per-result rate that undercuts comparable Komoot route extractors. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows the total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.20 | $0.19 | $0.18 | $0.17 |
| 1,000 | $2.00 | $1.90 | $1.80 | $1.70 |
| 10,000 | $20.00 | $19.00 | $18.00 | $17.00 |
| 100,000 | $200.00 | $190.00 | $180.00 | $170.00 |

A "result" is any route row in the output dataset. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate route research, travel-content creation, and market analysis. Users are responsible for complying with applicable laws and Komoot's Terms of Service. Collect only publicly available route data, respect intellectual property rights, and do not use extracted data for spam, harassment, or any unlawful purpose.

# Actor input Schema

## `startUrls` (type: `array`):

Paste Komoot tour links directly (e.g. https://www.komoot.com/tour/123456789). You can also paste bare tour IDs. When you provide URLs, the search fields and filters below are ignored — each tour is fetched exactly.

## `location` (type: `string`):

A place to search routes around, e.g. 'Munich, Germany', 'Dolomites', or 'Lake District'. Used when you are not pasting URLs or coordinates.

## `latitude` (type: `number`):

Latitude of the point to search around, e.g. 48.137154. Overrides the place name. Pair with Longitude.

## `longitude` (type: `number`):

Longitude of the point to search around, e.g. 11.576124. Overrides the place name. Pair with Latitude.

## `sports` (type: `array`):

Only include routes for these activities. Leave empty for all activities. Applies to searches, not to pasted URLs.

## `difficulty` (type: `array`):

Only include routes at these difficulty levels. Leave empty for all difficulties.

## `searchRadiusKm` (type: `integer`):

How far from the place or coordinates to search, in kilometers. Larger areas are covered automatically. Only applies to place and coordinate searches.

## `maxResults` (type: `integer`):

Maximum number of routes to collect across all searches and URLs. Set to 0 to collect all routes in the area (up to a high safety limit). Tip: start with 10-50 to test, then increase.

## `language` (type: `string`):

Language for route titles and place names where Komoot provides translations.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.komoot.com/tour/123456789"
  ],
  "location": "Munich, Germany",
  "sports": [
    "hike"
  ],
  "difficulty": [],
  "searchRadiusKm": 25,
  "maxResults": 100,
  "language": "en"
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped routes with key fields.

## `terrain` (type: `string`):

Table of route distance, duration, elevation, and start coordinates.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.komoot.com/tour/123456789"
    ],
    "location": "Munich, Germany",
    "sports": [
        "hike"
    ],
    "difficulty": [],
    "searchRadiusKm": 25,
    "maxResults": 100,
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/komoot-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": ["https://www.komoot.com/tour/123456789"],
    "location": "Munich, Germany",
    "sports": ["hike"],
    "difficulty": [],
    "searchRadiusKm": 25,
    "maxResults": 100,
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/komoot-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.komoot.com/tour/123456789"
  ],
  "location": "Munich, Germany",
  "sports": [
    "hike"
  ],
  "difficulty": [],
  "searchRadiusKm": 25,
  "maxResults": 100,
  "language": "en"
}' |
apify call solidcode/komoot-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/komoot-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Komoot Scraper",
        "description": "[💰 $1.7 / 1K] Extract hiking, cycling and outdoor routes from Komoot — distance, duration, elevation, difficulty, ratings, surfaces, and named highlights. Search around any place or coordinates, or paste Komoot tour URLs. Filter by activity type and difficulty across 7 sports.",
        "version": "1.0",
        "x-build-id": "POfbh85AXe3lt2M3o"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~komoot-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-komoot-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~komoot-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-komoot-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~komoot-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-komoot-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Komoot Tour URLs",
                        "type": "array",
                        "description": "Paste Komoot tour links directly (e.g. https://www.komoot.com/tour/123456789). You can also paste bare tour IDs. When you provide URLs, the search fields and filters below are ignored — each tour is fetched exactly.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Place Name",
                        "type": "string",
                        "description": "A place to search routes around, e.g. 'Munich, Germany', 'Dolomites', or 'Lake District'. Used when you are not pasting URLs or coordinates."
                    },
                    "latitude": {
                        "title": "Latitude",
                        "type": "number",
                        "description": "Latitude of the point to search around, e.g. 48.137154. Overrides the place name. Pair with Longitude."
                    },
                    "longitude": {
                        "title": "Longitude",
                        "type": "number",
                        "description": "Longitude of the point to search around, e.g. 11.576124. Overrides the place name. Pair with Latitude."
                    },
                    "sports": {
                        "title": "Activity Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include routes for these activities. Leave empty for all activities. Applies to searches, not to pasted URLs.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "hike",
                                "mtb",
                                "racebike",
                                "touringbicycle",
                                "jogging",
                                "e_mtb",
                                "e_touringbicycle"
                            ],
                            "enumTitles": [
                                "Hiking",
                                "Mountain biking",
                                "Road cycling",
                                "Bike touring",
                                "Trail running",
                                "E-mountain biking",
                                "E-bike touring"
                            ]
                        },
                        "default": [
                            "hike"
                        ]
                    },
                    "difficulty": {
                        "title": "Difficulty",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include routes at these difficulty levels. Leave empty for all difficulties.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "easy",
                                "moderate",
                                "difficult"
                            ],
                            "enumTitles": [
                                "Easy",
                                "Moderate",
                                "Difficult"
                            ]
                        },
                        "default": []
                    },
                    "searchRadiusKm": {
                        "title": "Search Radius (km)",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "How far from the place or coordinates to search, in kilometers. Larger areas are covered automatically. Only applies to place and coordinate searches.",
                        "default": 25
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of routes to collect across all searches and URLs. Set to 0 to collect all routes in the area (up to a high safety limit). Tip: start with 10-50 to test, then increase.",
                        "default": 100
                    },
                    "language": {
                        "title": "Result Language",
                        "enum": [
                            "en",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "nl",
                            "pl",
                            "pt"
                        ],
                        "type": "string",
                        "description": "Language for route titles and place names where Komoot provides translations.",
                        "default": "en"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
