Skip to content

50,000 free calls a month, card-free. Get an API key →

Solutions / Outdoors & Active

Routing that respects the terrain.

A pedestrian profile with a hiking difficulty cap, bicycle costing that knows gravel from tarmac and how you feel about hills, and elevation profiles that return null rather than a guess.

Built for apps where the route is the experience.

Fitness and adventure apps live or die on route quality. These knobs are in the engine, not on a roadmap.

A real MapMap cycling route from Bakewell to Monsal Head in the Peak District, with a stat card reading 5.4 km, 18 min and chips for hybrid bike, quiet roads and gentle hills
By bike

Costing that knows your bike

Road, hybrid, gravel or mountain: bicycle type, surface tolerance and hill appetite all shape the search. A real route, Bakewell to Monsal Head on a hybrid with quiet-road preferences: 5.4 km, 18 minutes. Where a road-surface survey covers the ground, its graded readings feed the same costing: our router already uses them to pick smoother cycle routes.

Surface-scored cycle routing
Ink illustration of a mountain path winding through contour lines with a gate across the steepest section and walkers on the gentle lower path
On foot

A difficulty cap, not a disclaimer

The pedestrian costing takes a maximum hiking difficulty on the SAC scale, so a family walk never quietly includes a scramble the map has graded. Where a path carries no SAC grade there is nothing to cap, and it comes back walkable. It also takes a lit-street preference, so a walk home after dark can favour the streets the map records as lit, and the rationale says when that preference is what changed the route.

A real elevation profile for the Bakewell to Monsal Head ride climbing from 126 to 224 metres, drawn as a blue area chart
Elevation

Profiles that never guess

Elevation along any route, with a null where there is no coverage rather than an invented number. Climb totals your users can trust.

A card listing the declared cycling preferences and the engine's real verdict: the preferences did not change the route
Why this route

An answer when riders ask why

Request the rationale and the response names what shaped the route: a surface avoided, a difficulty cap binding, a hill preference applied.

the whole stack, on your own infrastructure
$ docker compose up -d --build
→ tiles · geocoder · router · guidance · territories
→ 0 external map dependencies
Offline

The map works where the signal does not

Signed territory packages carry tiles, search and routing fully offline. The summit photo uploads later; the route home should not have to.

Ink illustration of a mountain trail with contour lines, a cyclist climbing and a chat bubble above the summit
Agent-first

Route-planning agents, grounded in the engine

Every costing knob is callable through the hosted MCP server, so an AI coach can plan a flat 40 km gravel loop and mean it: the constraint runs in the engine, not the prompt.

Known limit

There is no 3D terrain or hillshade rendering today, and elevation coverage is not global; where data is missing the API returns null, never a guess.

Agent-first

Name the activity and a region.

We build the route planner around your costing preferences, with elevation profiles and your own map style, and our AI agents do the building.

The offer

What you are actually being offered.

On the page, not in the small print: the scope, the deliverable, the timetable and how the money works, before you spend an hour on a call finding out.

Who it is for
A fitness, cycling or adventure app where the quality of the route is the product.
What is in scope
Name the activity and a region. We build the planner around your costing preferences, with elevation profiles and your own map style.
What you get
A route planner tuned to your activity, with the hiking difficulty cap, surface and hill preferences wired up, and elevation that returns null rather than a guess where coverage is missing.
How long
Days rather than months, with the date agreed on the call.
What it costs
Scoped on the call. Routing and elevation calls are metered on the published rate card.
Next step
Name the activity and the region, and we will build the planner on it.
Name your activity