API Adresse (BAN)
Free official French address API with no key: geocode and validate any French address, reverse geocode coordinates, and bulk-geocode a CSV. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the API Adresse (BAN)?
API Adresse is the French government's free, key-free geocoding service, built on the Base Adresse Nationale. It converts French addresses to coordinates, validates and normalises them, reverse-geocodes a latitude and longitude, and can bulk-geocode an uploaded CSV file.
This is the authoritative source for French addresses, maintained by the state as part of the Base Adresse Nationale, so it is not a commercial geocoder's best guess — it is the reference the administration itself uses. For anything involving French postal addresses, that authority matters: INSEE municipality codes, official street names and canonical postcodes all come back correct.
Responses are GeoJSON, which drops straight into Leaflet, Mapbox or any mapping library with no transformation. The `score` field on each result is worth building logic around: it runs from 0 to 1, and a low score on the top hit is a strong signal that the input was malformed or the address does not exist, which makes it a practical validity check rather than just a ranking.
Quick facts
- Base URL
https://api-adresse.data.gouv.fr- Authentication
- No API key or account. It is French open government data, free for any use including commercial.
- Rate limit
- 50 requests per second per IP for the search endpoint. Larger jobs should use the CSV bulk endpoint instead of looping.
- Pricing
- Free. Open licence (Licence Ouverte / Etalab).
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the API Adresse (BAN)
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Geocode a French street address
GET https://api-adresse.data.gouv.fr/search/?q=8+bd+du+port&limit=1
curl 'https://api-adresse.data.gouv.fr/search/?q=8+bd+du+port&limit=1'const res = await fetch("https://api-adresse.data.gouv.fr/search/?q=8+bd+du+port&limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api-adresse.data.gouv.fr/search/?q=8+bd+du+port&limit=1", timeout=20)
res.raise_for_status()
print(res.json()){
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
2.062821,
49.031624
]
},
"properties": {
"label": "8 Boulevard du Port 95000 Cergy",
"score": 0.4924265550239234,
"housenumber": "8",
"id": "95127_1448_00008",
"banId": "8e6b04d7-f6fd-48a1-80be-4ec984a286e8",
"name": "8 Boulevard du Port",
"postcode": "95000",
"citycode": "95127",
"x": 631468.28,
"y": 6881710.34,
"city": "Cergy",
"context": "95, Val-d'Oise, Île-de-France",
"type": "housenumber",
"importance": 0.67985,
"depcode": "95",
"street": "Boulevard du Port",
"_type": "address"
}
}
],
"query": "8 bd du port"
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | query | Required | The address to geocode, as free text. Handles partial and misspelled input reasonably well. 8 bd du port |
limit | query | Optional | How many results to return. Defaults to 5. 1 |
type | query | Optional | Restrict result granularity: `housenumber`, `street`, `locality` or `municipality`. housenumber |
postcode / citycode | query | Optional | Narrow to a postcode or an INSEE municipality code, which sharply improves precision. 95000 |
lat / lon | query | Optional | On the `/reverse` endpoint, the coordinates to resolve to an address. 48.8566 |
(CSV bulk) | form field | Optional | The `/search/csv/` endpoint accepts an uploaded CSV and geocodes every row in one job. |
Response fields
typestring- Always `FeatureCollection` — the response is standard GeoJSON.
features[].geometry.coordinatesarray- Position as `[longitude, latitude]`. GeoJSON order is longitude first, which is the reverse of how most people say it.
properties.labelstring- The full normalised address, ready to display or store.
properties.scorefloat- Match confidence from 0 to 1. A low score on the best result means the input was probably wrong — use it as a validation signal.
properties.citycodestring- INSEE municipality code, the official French administrative identifier for the commune.
properties.postcode / citystring- Canonical postcode and city name.
properties.housenumber / streetstring- Parsed components of the address.
properties.typestring- Granularity actually matched — `housenumber` is precise, `municipality` means only the town was resolved.
What you can build with the API Adresse (BAN)
- Validate and normalise French addresses at checkout or signup
- Geocode a customer database for mapping and territory analysis
- Add address autocomplete to a French web form
- Reverse-geocode GPS coordinates to a street address for delivery tracking
Common errors and how to fix them
400
Missing `q`, or a query shorter than three characters.
Fix: The search endpoint needs a minimum query length. For reverse geocoding, `lat` and `lon` are both required.
Low score on the top result
The address is malformed or does not exist.
Fix: Do not silently accept the best match. Set a threshold — around 0.5 is a reasonable starting point — and ask the user to confirm below it.
Coordinates look swapped
Not an error — GeoJSON is `[longitude, latitude]`.
Fix: Most mapping libraries expect that order; most humans say it the other way. Check which your code assumes.
API Adresse (BAN) — frequently asked questions
Is the French address API free?
Yes, completely free with no API key or registration. It is French open government data under the Licence Ouverte, so commercial use is permitted.
What is the score field for?
It is match confidence from 0 to 1, and it doubles as a validation signal. A low score on the best result usually means the input address was malformed or does not exist, so setting a threshold is more reliable than accepting the top hit blindly.
Can I geocode many addresses at once?
Yes. The CSV endpoint accepts an uploaded file and geocodes every row in a single job, which is the intended route for bulk work rather than looping over the search endpoint at 50 requests per second.
Does it work for addresses outside France?
No. It covers France and its overseas territories only, since it is built on the Base Adresse Nationale. For international geocoding use Nominatim or Photon, both also documented in this directory.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
API Adresse (BAN) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.