PermisAPI
marchands de biens, architectes, banques, assureurs, proptech.
temps 4 min de lecture.budget 199 EUR/mois (plan Pro), endpoint réservé aux comptes Pro et plus.

Géorisques BRGM : éviter les pièges en 1 appel API

Persona : marchands de biens, architectes, banques, assureurs, proptech. Temps : 4 min de lecture. Budget : 199 EUR/mois (plan Pro), endpoint réservé aux comptes Pro et plus.

TL;DR : on a branché chaque permis sur l'API Géorisques officielle (BRGM + Ministère). Un appel, les risques connus sur la commune (inondation, séisme, argile, ICPE proches), un score agrégé 0-100 et un tier qualitatif. 200-1000 ms de latence. Disqualifie un dossier risqué avant les 4h de DD.

Le problème métier

Un MDB regarde un permis à Vitry-sur-Seine. Au-delà du prix au m² et du zonage, il faut vérifier :

  • La commune est-elle en zone inondable PPRi ? (impact assurance + revente)
  • Quelle zone sismique ? (impact coût construction parasismique)
  • Aléa retrait-gonflement argile ? (impact fondations)
  • Y a-t-il une ICPE Seveso à moins de 1 km ? (impact valeur foncière + restrictions PLU)

Le réflexe historique : ouvrir georisques.gouv.fr, entrer l'adresse, attendre 4-5 secondes, naviguer 5 onglets différents (Risques, Pollution, ICPE, Cavités, Sismique), noter mentalement. 3-5 minutes par parcelle. Multipliez par 30 dossiers/semaine, vous avez perdu 1h30-2h30.

Le réflexe API :

curl -H "X-API-Key: pk_..." \
  https://api.permisapi.fr/v1/permits/PC07404021K1/risks

Réponse en 200-1000 ms :

{
  "num_pa": "PC07404021K1",
  "comm_code": "75116",
  "risk_score": 37,
  "risk_tier": "moderate",
  "risks": [
    {
      "code": "INONDATION",
      "label": "Inondation",
      "has_ppr": true,
      "ppr_type": "PPRi"
    },
    {
      "code": "RGA",
      "label": "Retrait-gonflement argile",
      "has_ppr": false
    }
  ],
  "icpe_proches": [
    {
      "nom": "USINE TEST",
      "regime": "ICPE soumis",
      "distance_m": 850,
      "activite": "Stockage de produits chimiques"
    }
  ],
  "fetch_errors": [],
  "source": "Géorisques (BRGM + Ministère Transition Écologique)",
  "disclaimer": "Heuristique commune-level, pas un diagnostic juridique."
}

Vous savez : il y a un PPRi en vigueur (signal fort), un aléa argile, une ICPE soumise à déclaration à 850 m. Score 37 = moderate. Décision en 30 secondes.

La source : Géorisques BRGM

Géorisques est la plateforme officielle française des risques naturels et technologiques. Maintenue par le BRGM (Bureau de Recherches Géologiques et Minières) et le Ministère de la Transition Écologique. Données issues des arrêtés préfectoraux, des PPR communaux, et des bases nationales BASIAS/BASOL.

Accès : API publique gratuite sans authentification :

https://www.georisques.gouv.fr/api/v1/...

Endpoints utilisés en V0.1 :

  • gaspar/risques?code_insee={code}&rayon=1000 : risques naturels et technologiques recensés sur la commune
  • installations_classees?code_insee={code}&rayon=1000 : ICPE dans 1 km

Les 14 codes de risques reconnus

L'API Géorisques utilise une nomenclature standardisée. PermisAPI les mappe sur des labels FR humains et des poids dans le score agrégé :

CodeLabelPoids
INONDATIONInondation25
MVTMouvement de terrain15
SEISMESéisme20
RGARetrait-gonflement argile15
FEUFORFeu de forêt10
AVALANCHEAvalanche10
INDUSTRIELRisque industriel25
RUPTURE_BARRAGERupture de barrage20
TMDTransport matières dangereuses10
CYCLONECyclone15
ERUPTIONÉruption volcanique30
TSUNAMITsunami25
RADONRadon5
NUCLEAIRERisque nucléaire30

Bonus PPR : si un risque a un Plan de Prévention des Risques en vigueur (PPRn naturel, PPRi inondation, PPRT technologique), son poids est multiplié par 1.5. Un PPR signifie que les aléas sont officiellement reconnus, cartographiés, et opposables au PLU.

Le score agrégé 0-100

Heuristique transparente :

score = sum(poids × bonus_PPR) + bonus_ICPE

Bonus ICPE : +10 par ICPE Seveso (seuil bas ou haut), +5 par ICPE simple, plafonné à +30.

Plafond final : 100 (multi-risques majeurs).

Tier qualitatif :

  • low < 15 : peu ou pas de risque connu
  • moderate 15-39 : 1-2 risques modérés
  • high 40-69 : multi-risques, ou un risque majeur avec PPR
  • critical ≥ 70 : zone exposée à plusieurs risques majeurs

Important : ce score est une heuristique, pas un diagnostic juridique. Pour une décision réelle d'investissement, consulter le DDRM (Dossier Départemental des Risques Majeurs) et faire valider par un notaire.

L'architecture côté PermisAPI

V0.1 : appel live à Géorisques à chaque requête /risks. Pas de cache, pas de stockage DB.

Pourquoi ce choix :

  1. Données fraîches : si une commune passe en PPRi mardi, l'API le reflète mercredi
  2. DB Free tier protégée : on n'archive pas 36k communes × 14 codes risques
  3. Latence acceptable : 200-1000 ms en cold (Géorisques peut être lent en heures de pointe)

Le compromis : si Géorisques est down, on retourne ce qu'on a (potentiellement vide) avec fetch_errors peuplé. Pas de 500 silencieux.

V0.2 prévu (si traction) : cache Redis 24h sur comm_code.

Les 3 cas particuliers

1. Plusieurs PPR sur la même commune. Vitry-sur-Seine peut avoir un PPRi (inondation Seine) ET un PPRT (industriel). L'endpoint retourne les 2 dans risks avec leurs ppr_type respectifs. Le score additionne.

2. Communes sans données. Les très petites communes rurales peuvent avoir 0 risque déclaré. C'est rare mais ça arrive. Score = 0, tier = low. Pas faux mais à interpréter avec prudence (absence de donnée ≠ absence de risque).

3. ICPE proches d'une autre commune. Une parcelle à la limite de Vitry et Choisy-le-Roi peut avoir des ICPE dans Choisy à moins de 1 km. V0.1 = on requête uniquement la commune du permis, donc on rate ces ICPE limitrophes. V0.2 prévoit de requêter le rayon 1 km au point GPS exact (via lat/lng).

Cas d'usage concrets

MDB en sourcing. Workflow Make/Zapier qui reçoit chaque nouveau permis via webhook PermisAPI, appelle /risks, et flag les permis avec risk_tier=high|critical. Le commercial ne voit que les dossiers safe. Économie : 30 minutes par permit risqué qu'on aurait analysé pour rien.

Architecte en phase APS. Le score sert de checklist : "le permis est en zone sismique 4 → règles parasismiques EC8", "RGA fort → fondations renforcées + étude G1/G2", "PPRi → côte de référence à respecter". Plus de risque d'oublier une contrainte technique en phase amont.

Banque en analyse crédit immobilier. Un crédit sur un bien en zone inondable PPRi non déclarée = risque sinistre + impossibilité de revente facile. Notre endpoint retourne le PPRi explicitement, le RM peut bloquer le dossier en pré-validation.

Assureur multirisque habitation. La tarification d'une MRH dépend de l'exposition aux risques de la commune. Notre endpoint retourne le profil de risque commune en 1 appel = scoring tarification automatisable.

L'utiliser dans votre stack

L'endpoint est documenté sur https://api.permisapi.fr/docs avec try-it-out. Plan Pro à 199 EUR/mois inclut Géorisques + PLU + DVF + Score MDB + SIRENE + Cadastre + France entière + historique complet.

# SDK Python (permisapi-client >= 0.6.0)
from permisapi_client import PermisAPI

client = PermisAPI(api_key="pk_live_...")
r = client.permits.risks("PC07404021K1")

print(f"Risk score: {r['risk_score']}/100 ({r['risk_tier']})")
for risk in r["risks"]:
    if risk["has_ppr"]:
        print(f"⚠ {risk['label']} ({risk['ppr_type']})")
    else:
        print(f"  {risk['label']}")

for icpe in r["icpe_proches"]:
    print(f"ICPE: {icpe['nom']} - {icpe['regime']} à {icpe['distance_m']}m")
// Pipeline Node.js
const r = await fetch(
  `https://api.permisapi.fr/v1/permits/${num_pa}/risks`,
  { headers: { "X-API-Key": process.env.PERMISAPI_KEY } }
);
const { risk_score, risk_tier, risks, icpe_proches } = await r.json();

if (risk_tier === "high" || risk_tier === "critical") {
  flagDealForReview(num_pa, risk_score, risks);
}

Limites V0.1

  • Commune-level uniquement. On requête par code_insee (5 chars), pas par lat/lng. Pour une parcelle à la limite communale qui aurait des ICPE dans la commune voisine, on les rate. V0.2 prévoit le mode point-précis.
  • Pas de PPR détaillé. On retourne le ppr_type (PPRi, PPRn, PPRT) mais pas le règlement complet. Pour les côtes de référence d'un PPRi, consulter le document PDF officiel via le lien Géorisques.
  • Pas de cache. Latence 200-1000 ms par appel. Sur 1000 permis, comptez 5-15 min en bouclant. V0.2 prévoit un cache Redis 24h sur comm_code.
  • Pas de scoring sismique précis. On utilise les zones 1-5 du décret de 2010, mais sans pondération par zone (zone 4 ≠ zone 5 dans la réalité). V0.2 affinera.

Pourquoi on l'a construit

PermisAPI est ma boîte solo. Avec DVF cross-ref, Score MDB, PLU et maintenant Géorisques, on a couvert les 4 questions pré-faisabilité que tout MDB / architecte se pose face à un permis :

  • Combien vaut le quartier ? → DVF
  • Est-ce une opportunité MDB ? → Score MDB
  • Est-ce constructible ? → PLU
  • Y a-t-il des risques cachés ? → Géorisques

Le tout en un seul endpoint Vue 360° si vous voulez tout en parallèle (6 fetches simultanés). C'est ce que j'appelle l'intelligence layer foncier.

Et si vous avez des suggestions (autres endpoints Géorisques à intégrer, scoring custom, format de réponse), répondez à cet article ou écrivez à evan@permisapi.fr.

Essaie l'API en 30 secondes

Pas de signup, pas de carte bleue. Entre un code postal sur la home et regarde 5 permis en temps reel.

Autres tutoriels