Geocoding API

Address search that runs on every keystroke.

Forward, autocomplete and reverse geocoding over a worldwide index of addresses and places. Type-ahead is billed at a tenth of a unit, so you can fire it on every keypress instead of rationing it.

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

Live APIready

Type two characters, or pick an example.

GET /search/geocode/v1/autocomplete?q=&limit=5
per autocomplete call
0.1 unitper autocomplete call
free type-ahead calls a month
100,000free type-ahead calls a month
straight out, no custom envelope
GeoJSONstraight out, no custom envelope
request path, no US hop
EU-onlyrequest path, no US hop
Three endpoints

One index. Three ways in.

The same places, reachable from whichever direction your interface needs: a half-typed query, a finished one, or a pair of coordinates.

/search/geocode/v1/autocomplete

Type-ahead

Partial input in, ranked suggestions out. Priced for the way it is actually used — fired on every keypress, debounced at most.

0.1unit per call
/search/geocode/v1/forward

Forward geocoding

A full address or place name in, coordinates and a structured address out. Bias toward a point, or clamp results to a bounding box.

1unit per call
/search/geocode/v1/reverse

Reverse geocoding

Coordinates in, the nearest named place out. Behind every dropped pin, every 'use my location', and every GPS fix a human has to read.

1unit per call
Integration

Two lines, or one HTTP call.

The SDK is a thin, fully typed wrapper — every parameter and response field is generated from the same OpenAPI document the docs are built from, so your editor knows the shape before you run anything.

If you would rather not add a dependency, the endpoints are ordinary REST. One header, a query string, GeoJSON back.

  • Typed TypeScript client generated from the public OpenAPI document.
  • Or skip the SDK: it is a plain GET with your key in a header.
  • The same key already covers maps, routing and static images.
search.ts
import { createClient } from '@rijwind/sdk/client';

const rijwind = createClient({ apiKey: 'rw_live_•••' });

// fires on every keystroke — 0.1 unit each
const { data } = await rijwind.geocode.autocomplete({
  q: input.value, limit: 5, lang: 'en',
  lat: 52.37, lon: 4.90, // bias to the user
});

for (const f of data.features) {
  render(f.properties.name, f.geometry.coordinates);
}
Parameters

Everything you can pass.

No query-language to learn and no session token to mint before you are allowed to search. The parameters are the ones you would have guessed, and the response is a GeoJSON FeatureCollection with the structured address in properties.

Errors come back in one consistent envelope with a machine- readable code, whichever endpoint produced them.

q
Free-text query — an address, a place name, or the half of one somebody has typed so far.
lang
en, de, fr, or omit for local names. Anything else is rejected with a clear 400 rather than a surprise.
limit
How many results to return.
lat, lon
Bias ranking toward a point, so nearby matches win ties.
bbox
minLon,minLat,maxLon,maxLat — restrict results to a box outright.
radius
Reverse only: how far out to look, in kilometres.

Type-ahead you don’t have to ration.

Most providers charge the same for a keystroke as for a finished search, which quietly pushes you into debouncing harder than your users would like, or into caching layers you never wanted to build.

One user, one address, typed out

Eight keystrokes of type-ahead, then one confirmed lookup.

8 × autocomplete
0.8 unit
1 × forward
1 unit
Total per search
1.8units

The free plan absorbs roughly 5,500 complete searches like this one every month.

Units are one pool shared by every endpoint. A month heavy on search and light on routing costs the same as the reverse — you are not forecasting five separate product budgets.

On paid plans you set a spending cap yourself. Reach it and requests stop, rather than the invoice continuing without you.

See the full unit table →
Where it goes

What people build with it.

Checkout and signup forms

Autocomplete the address field, then store the coordinates you got for free. Fewer typos at the point where a typo costs you a delivery.

Store and branch locators

Turn 'near me' or a typed postcode into a point, then sort your own locations against it. Pairs with the routing API for real travel times instead of straight-line distance.

Delivery and field service

Geocode an inbound order list, feed the coordinates to route optimisation, and reverse-geocode the driver's GPS fix into something a dispatcher can read out loud.

Dashboards and internal tools

Batch a spreadsheet of addresses into coordinates once, and get a map layer out of a column of text nobody wanted to clean by hand.

Where it runs

Every search stays in the EU.

The search box is the part of a map integration that carries the most personal data: it is where people type their own home address. That makes where those strings go a real question rather than a compliance formality.

Requests are served from Dutch infrastructure, by a Dutch company, under EU law. For teams moving off US infrastructure, that is the whole conversation.

  • A DPA you can sign, and a published sub-processor list.
  • Query logs retained briefly for operations, not built into profiles.
  • No third-party analytics or advertising identifiers in the path.
Your userswherever they are
Rijwind APIThe Netherlands
Place indexThe Netherlands

No US-controlled provider in the request path.

Questions

Geocoding, answered.

What is geocoding?

Geocoding turns a place written the way people write it — an address, a business name, a neighbourhood — into a latitude and longitude your software can use. Reverse geocoding does the opposite: it takes coordinates and returns the nearest named place, which is how a dropped pin or a phone's GPS fix becomes a readable address.

What is the difference between the forward and autocomplete endpoints?

They search the same index. Forward is for a complete query where you want the best-matching results; autocomplete is for partial input while someone is still typing. The difference that matters is price: autocomplete costs 0.1 unit against 1 unit for forward, because it is a call your users trigger five to ten times per search rather than once.

How much does geocoding cost?

Every endpoint draws from one monthly unit pool shared across maps, geocoding and routing. Autocomplete is 0.1 unit per call, forward and reverse are 1 unit each. There are no per-product SKUs to reason about and no separate geocoding bill.

Is there a free tier?

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

Which languages can results come back in?

English, German and French, or local names if you omit the language parameter entirely. A result without a name in the language you asked for falls back to its local name rather than disappearing from the response.

Can I bias or restrict results to a region?

Two ways. Pass lat and lon to bias ranking toward a point, so a search for 'Springfield' from Utrecht prefers the nearby one. Pass bbox as minLon,minLat,maxLon,maxLat to restrict results to a bounding box outright. Reverse geocoding takes a radius in kilometres.

What shape do the results come back in?

A GeoJSON FeatureCollection. Coordinates sit in the standard geometry field and the structured address — name, street, house number, postcode, city, state, country — sits in properties. It drops straight into MapLibre, Leaflet, OpenLayers, PostGIS or anything else that speaks GeoJSON, with no custom envelope to unwrap first.

Can I store or cache the results?

Yes, and caching what you already paid for is not a second call. There is no separate permanent-geocoding product and no per-result storage tier. The underlying place data comes from open data under the ODbL licence, so the usual open-data attribution applies if you publish a derived database — the same condition every provider in this category works under.

How fresh is the place data?

The index is rebuilt weekly from open data, so new streets, renamed businesses and freshly numbered addresses arrive within days rather than at a quarterly release cadence.

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.

Put it behind your search box.

Ten thousand units a month, free, and the same key covers maps, routing and static images when you need them.