Routing that knows a bike from a car.

Turn-by-turn directions across a worldwide road graph, for car, bicycle and on foot. Each profile has its own rules, so the bike route is a different road, not the car route at a different speed.

10,000 units free every month. No credit card, no sales call.

Live APIready

Routing…

POST /directions/v1 · costing: bicycle

Switch the profile and the road changes pace.

Where it lands in your product.

Nobody ships an endpoint. They ship a courier app that says the next turn out loud, a delivery ETA, a trip planner that knows a cyclist will not take the motorway. This is what directions look like from the outside.

Courier app · Navigating

220 m

Turn left onto the cycleway.

  • 1.7 kmTurn right onto the cycleway.
  • 1.6 kmTurn left onto Daveren.
  • 780 mTurn left onto Dubbele Buurt.
  • 210 mKeep right to stay on Dubbele Buurt.
20.9 km to Haarlem Centraal1 h 15

Turn-by-turn, ready to read out loud.

Every route comes back with its full manoeuvre list: the instruction, the distance to it and the time it takes, plus the geometry to draw. Enough to build a navigation screen, not just a line on a map.

Try it in the panel above
Map of the three routes from Amsterdam to Haarlem: car via the motorway, bike and on foot along the dyke and polder paths

Amsterdam Centraal to Haarlem Centraal, one request, three profiles

  • Car21.2 km · 22 min
  • Bike20.9 km · 1 h 15
  • On foot19.6 km · 3 h 52
© OpenStreetMap contributors

The bike route is not the car route.

Cycling prefers cycleways and refuses motorways; walking takes footpaths and crossings. Amsterdam to Haarlem by car takes the motorway; by bike it follows the Spaarndammerdijk and the polder cycleways: a different road, not a different speed.

See the climb in 3D
  1. Amsterdam Centraal
  2. Westerdoksdijk 12+ stop
1unit for this route

2 stops, in your order
still 1 unit

Ten stops cost what two stops cost.

A route is one unit, however many stops it has, out of the same pool as your maps and your search. No routing plan to sign, and on paid plans a spending cap you set yourself.

See what a month costs
route.ts
const { trip } = await rijwind.route({
  locations: [pickup, dropoff],
  costing: 'bicycle',
});

showEta(trip.summary.time);
drawLine(trip.legs[0].shape);

Typed client, or plain HTTP.

The SDK's types are generated from the same document the docs are built from, so your editor knows the shape before you run anything. Or skip it: one header, a JSON body, a route back.

Read the quickstart

Everything a navigation screen needs, in one response.

Distance, duration, the line to draw, and every manoeuvre with its own distance and time. The geometry is an encoded polyline, so it drops into whatever you already draw with, and the summary flags tell you up front whether the route takes a motorway, a toll road or a ferry.

  • MapLibre
  • Leaflet
  • OpenLayers
  • deck.gl
  • PostGIS
  • React
Every field, in the docs ↗
trip
  1. {
  2. "trip": {
  3. "summary": {
  4. "length": 20.911,// kilometres
  5. "time": 4504.761,// seconds, so 1 h 15
  6. "hasHighway": false, "hasToll": false, "hasFerry": false,// what the route uses, for your own warnings
  7. "minLon": 4.636897, "minLat": 52.379878, …// a box to fit the map to
  8. },
  9. "legs": [{// one leg per pair of stops
  10. "shape": "km_|bBmkcjH{D`OkIr[…",// the geometry, as an encoded polyline
  11. "maneuvers": [{// 39 of them on this route
  12. "instruction": "Turn left onto the cycleway.",// ready to display or read out
  13. "length": 0.222, "time": 47.4,// how far and how long this step is
  14. "type": 15, "travelMode": "bicycle",// turn type, for the arrow icon
  15. "beginShapeIndex": 295, "endShapeIndex": 302// which part of the line this step covers
  16. }, …]
  17. }],
  18. "units": "kilometers"
  19. }
  20. }

The short version.

Everything a developer scans a product page for, in one place, without the adjectives.

DirectionsAny number of stops, visited in the order you give.
1 unit / route
ProfilesEach with its own rules, not a speed multiplier.
car · bike · foot
Free tierHard cap. No card, no sales call.
10,000 units / month
Paid plansOne unit pool across maps, geocoding and routing, plus a spending cap you set.
from €5 / month
Travel-time matrixEvery origin against every destination, up to 2,500 pairs per call.
1 unit / pair
Isochrones, optimisation, map matchingSame road graph, same unit pool.
same key
Live traffic in ETAsDurations come from the road graph. Rijwind Traffic is a separate map layer.
no
CoverageOne graph, no per-region pricing.
worldwide
ProcessingNo US-controlled provider in the request path. DPA and sub-processor list published.
EU, end to end

Numbers as of September 2026. The pricing page has the full ladder.

Routing, answered.

Which travel profiles are supported?

Car, bicycle and pedestrian. Each has its own routing rules rather than being a speed multiplier on the car route: bikes prefer cycleways and avoid motorways, walking uses footpaths and crossings, and the resulting route is often a different length entirely.

How much does a route cost?

One unit per request, drawn from the same monthly pool as maps, geocoding and everything else. A route with two stops and a route with ten cost the same.

Is there a free tier?

Yes. The free plan includes 10,000 units a month with no card and no sales call, which is 10,000 routes if that is all you spend them on. It is a hard cap, so a runaway loop cannot produce a bill.

What comes back in the response?

The route geometry as an encoded polyline, a summary with distance and duration, flags for whether the route uses a motorway, a toll road or a ferry, and the full turn-by-turn manoeuvre list with per-step distance and time.

Are the ETAs traffic-aware?

No. Durations come from the road graph (speed limits, road class, surface and turn costs), not from live traffic. Rijwind Traffic is a separate live layer you can draw on your map, and it does not feed into route costs today.

Can I route through more than two points?

Yes. Pass as many stops as you need and they are visited in the order you gave them. If you want the best order worked out for you, that is route optimisation, a separate endpoint on the same key.

What else runs on the same road graph?

Travel-time matrices (every origin against every destination), isochrones (everything reachable within a number of minutes), route optimisation (the best order to visit your stops) and map matching (a noisy GPS trace snapped to the roads). All on the same key and the same unit pool.

How large an area does it cover?

The whole planet, from one graph. There is no per-region pricing and no separate contract for routing outside Europe.

Where are my requests processed?

In the European Union, end to end. No part of the request path touches a US-controlled provider, which is what makes the GDPR and data-residency conversation short. We publish a DPA and a full sub-processor list.

Point it at two coordinates.

Ten thousand units a month, free. The same key covers maps, search and static images when you get to them.

Amsterdam to Utrecht, by bikeGet an API key
No credit card. No sales call. A spending cap you set yourself.Read the quickstart