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, lit-street preference for the run home after dark, and elevation profiles that return null rather than a guess.

Why MapMap for the outdoors

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. This is a real MapMap route, Bakewell to Monsal Head on a hybrid with quiet-road and gentle-hill preferences: 5.4 km, 18 minutes, exactly as the engine returned it.

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. Wheelchair and low-vision profiles ship in the same costing, and lit-street preference covers the run home after dark.

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, because an honest gap beats a confident lie.

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. Trail apps get to explain themselves instead of shrugging.

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 in 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

We will build your route planner as a working POC.

Tell us the activity and give us a region, and our AI agents will build a working route-planning proof of concept on MapMap: your costing preferences, elevation profiles, your map style. Built the same agent-first way as everything in our showcase.