GeoRegistry
Référence API · v1

Documentation de l'API

Tout ce qu'il faut pour intégrer les prix immobiliers, les ventes DVF, l'estimation et le référentiel géographique français. Base : https://georegistry.fr/api/v1

Sommaire

Démarrer avec votre client HTTP

Les 28 endpoints, prêts à importer. Chaque requête arrive documentée, avec un exemple de valeur pour chaque paramètre — les paramètres optionnels sont présents mais décochés. Renseignez la variable apiKey une fois : elle s'applique à toute la collection.

Format Postman, lu aussi par Bruno et Insomnia. Postman : Import, puis déposez le fichier. Bruno : Import Collection, puis déposez ce même fichier — il reconnaît le format Postman. Sans clé, l'API répond déjà — 20 requêtes/minute.

Introduction

L'API GeoRegistry expose en JSON le référentiel géographique français (historisé et versionné, basé sur le COG INSEE), les ventes immobilières DVF géolocalisées (source DGFiP/Etalab), les diagnostics DPE de l'ADEME, la démographie INSEE et un moteur d'estimation par comparables.

Sa singularité : elle retrouve une localité même renommée, fusionnée ou disparue administrativement. Aucune donnée historique n'est supprimée — une commune disparue passe is_active = false et reste cherchable.

terminal
curl "https://georegistry.fr/api/v1/localities/search?q=Montigné"
réponse (extrait)
{
  "data": [
    {
      "name": "Les Hauts-d'Anjou",
      "insee_code": "49080",
      "is_historical_match": true,
      "matched_alias": "Montigné"
    }
  ]
}

Toutes les réponses sont en application/json (UTF-8), sauf les exports qui renvoient du CSV en flux. Les collections sont enveloppées dans data, avec links et meta pour la pagination.

Authentification

L'API est utilisable sans clé pour l'essai : chaque adresse IP est alors limitée à 20 requêtes/minute. Pour des volumes supérieurs, présentez une clé API — créez-la en libre-service depuis votre espace client (quota de 10 000 requêtes/jour par clé).

La clé se transmet par en-tête HTTP, au choix :

terminal
# En-tête dédié
curl -H "X-API-Key: geo_votrecle" "https://georegistry.fr/api/v1/regions"

# … ou en Bearer
curl -H "Authorization: Bearer geo_votrecle" "https://georegistry.fr/api/v1/regions"

Une clé fournie doit être valide : clé inconnue, révoquée ou expirée → 401 Unauthorized. Quota journalier épuisé → 429 Too Many Requests (le compteur se réinitialise chaque jour).

Limites de débit

Contexte Limite Comptée par
Sans clé API 20 req/min adresse IP
Avec clé API 60 req/min + quota journalier de la clé clé
Exports CSV 10 req/min (en sus de la limite globale) clé ou IP

Chaque réponse porte les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining. Au-delà de la limite : 429 avec Retry-After (secondes à attendre).

Pagination

Les listes (localities, dvf/ventes, dpe, référentiel) sont paginées : ?page= pour la page, ?per_page= pour la taille (défaut 50, maximum 200).

structure d'une réponse paginée
{
  "data": [ … ],
  "links": { "first": "…", "last": "…", "prev": null, "next": "…" },
  "meta": { "current_page": 1, "last_page": 12, "per_page": 50, "total": 573 }
}

Les recherches géographiques (search, reverse, radius, ventes par rayon/adresse) ne sont pas paginées : elles acceptent un limit et renvoient les meilleurs résultats.

Erreurs

Code Signification
401Clé API invalide, révoquée ou expirée.
404Ressource introuvable (localité, parcelle, statistiques absentes).
422Paramètres invalides — le détail champ par champ est dans errors.
429Débit ou quota journalier dépassé — attendre Retry-After.
exemple d'erreur 422
{
  "message": "The lat field is required.",
  "errors": { "lat": [ "The lat field is required." ] }
}

Localités

Le référentiel COG historisé : communes, arrondissements municipaux, communes déléguées/associées, IRIS. Filtre commun types[] : commune, arrondissement, commune_deleguee, commune_associee, iris, commune_historique.

Liste paginée des localités, triée par code INSEE. N'expose que les localités actives par défaut ; include_inactive=1 ajoute l'historique (communes fusionnées, supprimées…).

Paramètres

Nom Type Description
types[] string[] Natures à retenir : commune, arrondissement, commune_deleguee, commune_associee, iris, commune_historique.
department string Code département (49, 2A, 971) pour restreindre la liste.
include_inactive booléen Inclure les localités inactives (historique). Défaut : 0.
per_page entier Taille de page, 1 à 200. Défaut : 50.
terminal
curl "https://georegistry.fr/api/v1/localities?department=49&types[]=commune&per_page=20"

Localités les plus proches d'un point, triées par distance croissante.

Paramètres

Nom Type Description
lat requis nombre Latitude WGS84 (-90 à 90).
lng requis nombre Longitude WGS84 (-180 à 180).
limit entier Nombre de résultats, 1 à 50. Défaut : 5.
types[] string[] Natures à retenir.
terminal
curl "https://georegistry.fr/api/v1/localities/reverse?lat=47.4736&lng=-0.5548"

Localités contenues dans un rayon autour d'un point.

Paramètres

Nom Type Description
lat requis nombre Latitude WGS84.
lng requis nombre Longitude WGS84.
radius requis nombre Rayon en mètres, 1 à 100 000.
limit entier Nombre de résultats, 1 à 200. Défaut : 50.
types[] string[] Natures à retenir.
terminal
curl "https://georegistry.fr/api/v1/localities/radius?lat=47.4736&lng=-0.5548&radius=15000"

Localités rattachées à un code postal. Un même code peut être partagé par plusieurs communes — la réponse est toujours une collection.

terminal
curl "https://georegistry.fr/api/v1/localities/postal-code/49150"

Localités portant un code INSEE donné : la commune et, le cas échéant, ses arrondissements municipaux (Paris, Lyon, Marseille).

terminal
curl "https://georegistry.fr/api/v1/localities/insee/49007"

Détail d'une localité (par identifiant interne renvoyé dans les listes) : département et région, alias historiques, entités rattachées (children), statistiques démographiques INSEE (demographics : population, densité, gentilé, tranches d'âge, ménages, revenus, CSP) et statistiques DPE (dpe : répartition A-G, passoires énergétiques, médianes).

terminal
curl "https://georegistry.fr/api/v1/localities/12345"

DVF — Valeurs foncières

Les mutations (ventes) DVF géolocalisées des 5 dernières années, mises à jour à chaque publication DGFiP (avril et octobre). type_local : 1 maison, 2 appartement, 3 dépendance, 4 local industriel/commercial. nature : Vente, Vente en l'état futur d'achèvement, Vente terrain à bâtir, Adjudication, Echange, Expropriation, Donation.

Liste paginée des mutations, triée par date décroissante. Chaque mutation porte ses dispositions (lignes de vente) et leurs parcelles.

Paramètres

Nom Type Description
commune string Code INSEE de la commune (5 caractères), ex. 49007.
departement string Code département, ex. 49.
type_local entier Filtre sur le type de local (1 à 4, voir plus haut).
nature string Nature de mutation (voir plus haut).
date_from date Date de mutation minimale (AAAA-MM-JJ).
date_to date Date de mutation maximale.
per_page entier Taille de page, 1 à 200. Défaut : 50.
terminal
curl -H "X-API-Key: geo_votrecle" \
  "https://georegistry.fr/api/v1/dvf/ventes?commune=49007&type_local=2&date_from=2024-01-01"

Dispositions (lignes de vente) géolocalisées dans un rayon autour d'un point, triées par distance croissante.

Paramètres

Nom Type Description
lat requis nombre Latitude WGS84.
lng requis nombre Longitude WGS84.
radius nombre Rayon en mètres, 1 à 50 000. Défaut : 1 000.
limit entier Nombre de résultats, 1 à 100. Défaut : 20.
type_local entier Filtre sur le type de local (1 à 4).
sales_only booléen Ne garder que les ventes au sens strict (exclut donations, échanges…).
terminal
curl "https://georegistry.fr/api/v1/dvf/ventes/radius?lat=48.8365&lng=2.2403&radius=300"
réponse (extrait)
{
  "data": [
    {
      "adresse": "53 RUE DE LA SAUSSIERE",
      "type_local": "Appartement",
      "surface_bati": 36,
      "valeur_fonciere": 304780,
      "prix_m2": 8466,
      "mutation_date": "2025-08-31",
      "distance_m": 42
    }
  ]
}

Géocode l'adresse via la Base Adresse Nationale puis renvoie les ventes les plus proches. L'adresse résolue est exposée dans meta.address (ou null si le géocodage échoue — la liste est alors vide).

Paramètres

Nom Type Description
adresse requis string Adresse en texte libre, 3 à 200 caractères.
radius nombre Rayon en mètres, 1 à 50 000. Défaut : 1 000.
limit entier Nombre de résultats, 1 à 100. Défaut : 20.
type_local entier Filtre sur le type de local (1 à 4).
terminal
curl "https://georegistry.fr/api/v1/dvf/ventes/address?adresse=12+rue+de+la+Roë+Angers&radius=500"

Résout une parcelle cadastrale par référence (code commune + section + numéro) et renvoie son historique de ventes. 404 si la parcelle n'apparaît dans aucune vente DVF.

Paramètres

Nom Type Description
insee requis string Code INSEE de la commune (5 caractères).
section requis string Section cadastrale, ex. 0A.
numero requis string Numéro de parcelle, ex. 0001.
terminal
curl "https://georegistry.fr/api/v1/dvf/parcelles?insee=49007§ion=0A&numero=0001"

Une parcelle par identifiant Etalab (14 caractères, ex. 490070000A0001) avec toutes les ventes qui l'ont concernée, de la plus récente à la plus ancienne.

Paramètres

Nom Type Description
geometry booléen Avec geometry=1, joint la géométrie GeoJSON de la parcelle (locale, sinon résolue via API Carto IGN).
terminal
curl "https://georegistry.fr/api/v1/dvf/parcelles/490070000A0001?geometry=1"

Estime un bien d'habitation à partir des ventes comparables : fourchette de valeur, prix au m² médian, comparables retenus et indice de confiance. Le bien est localisé par coordonnées, parcelle ou adresse (au moins l'une des trois). Paramètres en JSON (Content-Type: application/json) ou en formulaire.

Paramètres

Nom Type Description
type_local requis entier 1 maison ou 2 appartement.
surface_bati requis entier Surface habitable en m².
lat / lng l'un des trois nombre Coordonnées WGS84 du bien.
parcelle l'un des trois string Identifiant Etalab de la parcelle (14 caractères).
adresse l'un des trois string Adresse en texte libre (géocodée via la BAN).
nombre_pieces entier Nombre de pièces principales.
surface_terrain entier Surface du terrain en m² (maisons).
dpe string Étiquette énergie A à G — ajuste la « valeur verte ».
etat string État du bien : a_renover, travaux, correct, bon, renove, neuf.
etage entier Étage (appartements), 0 = rez-de-chaussée.
ascenseur booléen Présence d'un ascenseur (appartements).
terminal
curl -X POST "https://georegistry.fr/api/v1/dvf/estimate" \
  -H "Content-Type: application/json" \
  -d '{
    "type_local": 2,
    "surface_bati": 62,
    "nombre_pieces": 3,
    "dpe": "D",
    "adresse": "8 boulevard du Roi René, Angers"
  }'
réponse (extrait)
{
  "data": {
    "estimate": 214000,
    "range": { "low": 191000, "high": 238000 },
    "price_per_m2": 3452,
    "confidence": "high",
    "comparables_count": 14
  }
}

DPE — Performance énergétique

Diagnostics de performance énergétique de l'ADEME (logements existants, depuis juillet 2021). Les listes sont bornées à une commune ou un département : le jeu national compte ~15 millions de lignes.

Liste paginée des diagnostics, triée par date d'établissement décroissante.

Paramètres

Nom Type Description
commune requis sans departement string Code INSEE de la commune (5 caractères).
departement requis sans commune string Code département.
etiquette string Étiquette énergie A à G.
etiquette_ges string Étiquette climat (GES) A à G.
type_batiment string maison, appartement ou immeuble.
date_from date Date d'établissement minimale.
date_to date Date d'établissement maximale.
per_page entier Taille de page, 1 à 200. Défaut : 50.
terminal
curl "https://georegistry.fr/api/v1/dpe?commune=49007&etiquette=G&type_batiment=maison"

Statistiques agrégées d'une commune (arrondissements municipaux et communes-mères Paris/Lyon/Marseille compris) ou d'un département : répartition par étiquette énergie et climat, part de passoires énergétiques (F+G), médianes (consommation, émissions, surface), détail par type de bâtiment et fenêtre récente (24 derniers mois).

Paramètres

Nom Type Description
commune requis sans departement string Code INSEE de la commune.
departement requis sans commune string Code département.
terminal
curl "https://georegistry.fr/api/v1/dpe/stats?departement=49"

Référentiel administratif

Les mailles supra-communales, paginées (per_page, défaut 50, max 200).

Régions françaises (avec leurs anciennes régions), triées par nom.

terminal
curl "https://georegistry.fr/api/v1/regions"

Anciennes régions (nomenclature d'avant 2016), avec leur région successeur.

terminal
curl "https://georegistry.fr/api/v1/former-regions"

Départements, triés par code, avec leur région, leurs statistiques démographiques (demographics) et DPE, leur préfecture et sous-préfectures (COG) et leur préfet/point culminant (Wikidata) lorsqu'ils sont renseignés.

terminal
curl "https://georegistry.fr/api/v1/departments"

Cantons, triés par code.

Paramètres

Nom Type Description
department string Code département pour restreindre la liste.
terminal
curl "https://georegistry.fr/api/v1/cantons?department=49"

Exports CSV

Le référentiel et les données s'exportent en CSV, générés en flux (streaming). Encodage UTF-8 avec BOM ; ajoutez ?delimiter=semicolon pour un fichier directement lisible dans Excel français (défaut : comma). Ces mêmes fichiers sont aussi téléchargeables sans clé depuis la page Exports.

Les exports DVF et DPE doivent être bornés à une commune ou un département (pas de dump national en une requête). Limite dédiée : 10 requêtes/minute.

Endpoint Contenu Paramètres
GET /api/v1/export/regions.csv Régions delimiter
GET /api/v1/export/departments.csv Départements delimiter
GET /api/v1/export/cantons.csv Cantons delimiter
GET /api/v1/export/communes.csv Localités du référentiel types[], department, include_inactive, demographics (joint la démographie), delimiter
GET /api/v1/export/demographics.csv Statistiques INSEE level (commune|department), departement, delimiter
GET /api/v1/export/dvf.csv Ventes DVF à plat (une ligne par disposition) commune ou departement (requis), type_local, nature, date_from, date_to, delimiter
GET /api/v1/export/dpe.csv DPE en détail commune ou departement (requis), etiquette, type_batiment, date_from, date_to, delimiter
GET /api/v1/export/dpe-stats.csv Agrégats DPE par territoire level (commune|department), departement, delimiter
terminal
curl -H "X-API-Key: geo_votrecle" \
  "https://georegistry.fr/api/v1/export/dvf.csv?departement=49&date_from=2024-01-01&delimiter=semicolon" \
  -o ventes-49.csv

Service

État de santé du service et de ses dépendances (public, sans clé). 200 si tout est opérationnel, 503 si une dépendance critique est indisponible.

réponse
{
  "status": "ok",
  "checks": { "database": { "status": "up" }, "redis": { "status": "up" } },
  "providers": { "insee": { "status": "up" } },
  "time": "2026-08-03T09:00:00+02:00"
}

Prêt à intégrer ?

Créez un compte pour obtenir vos clés API en libre-service, ou commencez sans clé (20 requêtes/minute) directement depuis votre terminal.