Postal Addresses
Live API

Clean an address a human wrote.

Send the address as you hold it - abbreviated, misspelled, parts in the wrong order - plus a two-letter country code. You get the postcode, the official locality, the normalised street, the house number checked against the street itself, print-ready lines, and a plain explanation of what was changed and what was not. One integration instead of one per country.

One call, one answer
# What a customer typed, and what it really is.
curl -X POST https://addresses.oredrift.com/v1/normalize \
  -H 'Content-Type: application/json' \
  -d '{"address": "12 Av. Lucien Lioret Le Dorat 87210",
       "country": "FR"}'

→ Avenue Lucien Lioret, 87210 Le Dorat,
  house number 12 found in the street itself,
  coverage "authoritative".
249countries and territories
12,167,673postcode and locality pairs
24,022,634streets
102 / 127countries measured at grade B or better
Endpoints

What you can call

Two endpoints, one contract, published as OpenAPI. One address, or a batch in a single call - the batch is the normal way to clean a customer file, and each line carries its own result or its own error. A hundred correct lines are never refused because the 57th is empty; you would not even know which one. How many addresses a call may carry is what your plan buys, because the marketplace counts requests and not addresses: see the plans below.

addresses.oredrift.com live

Access will run through an API marketplace, which issues the key and meters the calls, with a free tier. The listing is being prepared; until it opens, the contract and the live status above tell you exactly what you would be calling.

The problem

Why this is not a lookup

A reference file and a human being do not write the same street.

Both sides are inconsistent

The same street is written bd du port, Bd. du Port and BOULEVARD DU PORT. The same locality is SMARVES in one official file and Smarves in another. Normalising only the input misses every one of them.

Abbreviations are not optional

In a benchmark of real German web addresses, Bahnhofstr. appears in 147 cases out of 1,162, while the official street layer holds 71,703 names ending in -strasse against 5,812 in -str. Expanding the abbreviation on both sides is worth 40 house numbers in that country alone.

Every country has its own grammar

In France the number precedes the street; in Belgium it follows. In Belgium the locality precedes the postcode; in France it follows. A single parser tuned on one country returns confident nonsense on the next.

What comes back

Four things it will never do

An address service that is confidently wrong corrupts your database without telling you. These four rules are tested on every change, and a release is blocked if any of them fails.

A sorting code is never turned into a street

75987 PARIS CEDEX 19 is a destination inside a sorting centre, not a building. Naive geocoding reads the 75 as a house number and returns a street two hundred kilometres away. The same applies to Postboks, Postfach, Postbus, casella postale, apartado postal and caixa postal.

No address is invented

A purely postal form comes back with geocodable: false and no coordinates, rather than a plausible street that does not exist.

Nothing is returned without its confidence

Every answer carries a confidence score, a coverage level and an explanation in plain English. A coordinate always carries the scale it is valid at: a postcode centroid can be ten kilometres from the door, and a point without its scale is a trap.

Nothing of yours is lost

Your input comes back verbatim, and a special-delivery mention is preserved in the form you wrote it. If you write 5 bis and the file holds only 5, the extension is reported rather than silently dropped: you hold information we do not.

Three coverage levels, declared

authoritative: the house number was found in the street's own number list. postcode_verified: the postcode and locality pair exists, the street or number was not confirmed. unverified: the locality is named in your input and exists in the country.

Print-ready lines

The answer carries the address line by line, in the NF Z 10-011 layout, with the recipient separated from the street. Absent lines are not returned: an empty line would be more misleading than useful.

Measured, not claimed

Quality is a number, country by country

Measured against two external benchmarks, and both grades are published side by side because they disagree. MESSY STREETS (arXiv:2609.01612) is the reference: addresses as they are actually written on the web, ground truth from OpenAddresses and OpenStreetMap, never from our own data. The thousand-case benchmark is distilled from the same Web Data Commons corpus but holds up to 1,000 cases per country, which is what the strictest grades require: AA needs 100 checked house numbers and AAA needs 200. Neither grade is an average, and neither is hidden.

CountryLocality exactHouse number validChecked end to endGrade, MESSY STREETSGrade, 1,000 cases
Austria94.7 %98.2 %72.9 %AAAAA
Norway94.4 %96.0 %67.3 %AAAA
Belgium96.4 %90.6 %69.1 %AAAA
Switzerland96.9 %95.4 %63.4 %AAAA
France96.6 %92.4 %51.7 %AAAA
Netherlands95.0 %92.7 %74.0 %AAA
Czechia90.0 %88.7 %67.1 %AAA
Denmark93.9 %89.0 %80.2 %AA
Germany92.4 %88.5 %21.2 %AA
Slovenia92.9 %100.0 %-B-
Spain93.1 %83.1 %14.9 %B-
Australia95.1 %69.2 %40.2 %B-
United States97.8 %72.6 %43.8 %B-
United Kingdom94.3 %-0 %B-

Read the third column, not the second. "House number valid" is measured only on the cases where a street was resolved at all, which is the usual way this figure is published and the way it flatters everyone. "Checked end to end" is the share of ALL addresses in the benchmark whose house number came back verified, and it is the number you will actually experience. Germany reads 88.5 % and delivers 21.2 %, because three whole postcode regions have no open street layer we may redistribute. Denmark reads 89.0 % and delivers 80.2 %. We publish both because only one of them is a promise.

The United States and Australia carry house numbers since 18 October 2026, and before that date neither did: 72.6 % and 69.2 % are not good figures, they are early ones. Czechia moved from 33.3 % to 90.2 % the same day, once we understood that its source writes two numbers joined by a slash and that both identify the same building.

A dash means the country has no open street-and-number layer we are entitled to redistribute, so no house number can be checked there. That is a property of the available data, not of the engine, and saying so is the point: the grade of every measured country travels with the product rather than being averaged away into a single marketing figure.

On recall. The benchmark's own authors measure that the strongest commercial geocoders outperform open-source systems by up to 49 percentage points in recall. A product built on open data does not close that gap, and we do not claim to. What is defensible here is the opposite promise: the four rules above, an explanation for every correction, and a declared coverage level on every single answer.

How to get it

Three steps, and the first one costs nothing

Subscribe on RapidAPI

The listing carries the free tier, the interactive console and ready-made snippets in 20+ languages. Subscribing takes a minute and bills nothing.

Open the listing

Copy your key

RapidAPI issues it the moment you subscribe and shows your usage against the quota. One key works across every API you subscribe to on the hub.

Send your first address

Post the address as you hold it plus a two-letter country code. The answer carries the corrected form, the coverage level and the explanation. The direct origin accepts nothing that did not come through the marketplace.

PlanPer monthRequests includedBeyond thatAddresses per call
BASICFree100, then it stopsno overage1
PRO$2910,000$0.004 each25
ULTRA$99100,000$0.002 each50
MEGA$3991,000,000$0.001 each100

Why the number of addresses per call is part of the plan. The marketplace meters requests, not addresses, so a batch of a thousand would cost exactly as much as a batch of one. The included volume is therefore stated in requests, and what each plan buys on top of it is how much a single request may carry. A batch over your limit is refused with a message naming both the limit and the plan, so the answer is always either to split the file or to move up a plan - never a silent truncation.

Who uses this

Three ways it gets called

At the point of entry. A customer types an address into a checkout. One call returns the corrected form and an explanation you can show, before a parcel is printed against a street that does not exist.

On a file. A customer base accumulated over ten years, with abbreviations, merged communes and renamed localities. One batch call per hundred rows returns what each one really is, with the former name where a commune has merged.

Inside a workflow. An agent or a script that must decide whether two records describe the same place. The INSEE code, where it exists, is unambiguous in a way a string never is: ST LEU, Saint-Leu and SAINT LEU are all 97413.

Data, source and attribution

Where this comes from

The postcode and locality reference comes from GeoNames, licensed CC BY 4.0. New and merged localities come from La Poste, under Licence Ouverte 2.0. Street and house-number layers come from national address files, each under its own open licence, checked for commercial reuse before a line of code was written.

Attribution travels in meta of every response, not in a terms page nobody opens - because a licence condition that lives in a file nobody reads is not met. Where a country's licence restricts what you may do with the result, that restriction comes back in licence_notice, on the answer itself.

Reference fields are reproduced unchanged. Confidence, coverage and the explanation are derived by Oredrift and are returned as such, never mixed into the official values.

What is not promised. This service does not certify deliverability, and it does not make you eligible for any postal operator's bulk tariff: that is an accreditation granted by the operator for its own network, not a calculation. It tells you what the official reference says about what you sent, and how far it could corroborate it.