Hosted in The Netherlands

Maps, places, and routing for your product.

Worldwide tiles, geocoding, and routing on a single API for web and mobile applications.

GET /v1/geocode/autocomplete
Damrak 1, Amst
Damrak 1
1012 LG · Centrum
52.37° N
Damrak 100
1012 LM · Centrum
Damrak 80
1012 LK · Centrum
Z 13
↑N
Haarlem
52.38° N · 4.64° E
POST /v1/route
200 · 18 ms
Amsterdam → Utrecht
via F2 · 3 turns
Distance
47.2 km
Duration
2h 44m
Profile
bike
POST /v1/isochrone
86 ms
Reachable within 5 / 10 / 15 / 20 min
2015105
Bike · weekday 10:004 bands

One map. Every theme.

Switch themes without re-rendering tiles. Light for the day, dark for the night, minimal for dashboards. Same data, same edges, your style. Drop in a one-line JSON URL and MapLibre does the rest.

Light · default
Dark
/styles/dark.json
→
Grayscale
/styles/grayscale.json
→
White
/styles/white.json
→
Coming soon
Custom
bring your own colors
Soon

Drop the style URL into MapLibre.

No re-rendering, no asset pipeline, no tile-server to maintain. Swap themes by swapping URLs.

map.tsx
import maplibregl from 'maplibre-gl';
import { Protocol } from 'pmtiles';

maplibregl.addProtocol('pmtiles', new Protocol().tile);

const { url } = await fetch('https://api.rijwind.com/v1/tiles-token', {
  headers: { Authorization: 'Bearer rw_live_••••' },
}).then((r) => r.json());

const style = await fetch('https://rijwind.com/styles/light.json')
  .then((r) => r.text())
  .then((s) => JSON.parse(s.replace('{{TILE_URL}}', url)));

new maplibregl.Map({ container: 'map', style });

Drop in a single request.

Use the language you already ship in. The API speaks plain HTTP. No SDK required, no client library to keep in sync.

POST · /v1/route
curl https://api.rijwind.com/v1/route \
  -H "Authorization: Bearer rw_live_••••" \
  -d '{
    "locations": [
      { "lat": 52.3676, "lon": 4.9041 },
      { "lat": 52.0907, "lon": 5.1214 }
    ],
    "costing": "bicycle"
  }'

{
  "trip": {
    "summary": { "length": 47.2, "time": 9840 },
    "shape": "kxr~Hg{cZ..."
  }
}
Worldwide map data
Every country, every continent. Refreshed weekly.
Plain HTTP, no SDK
Curl, fetch, anything that speaks JSON.
Hosted in the Netherlands
Owned-and-operated EU infrastructure.
Predictable monthly bill
One counter. Alerts at 80% and 100%.

Start building today.

Try every endpoint on the free tier. Ship to production from €15 a month.