---
title: "Localisation pas à pas (étapes déterministes)"
method: GET
path: "/annonces/{id}/localisation"
---

# Localisation pas à pas (étapes déterministes)

`GET /annonces/{id}/localisation`

## Request

- Base URL: `https://pillr.fr/api/v1`
- URL: `https://pillr.fr/api/v1/annonces/{id}/localisation`
- Auth: HTTP bearer

Étapes déterministes de la localisation d'une annonce floutée, une par appel (etape), celles de l'outil du Hub : disque (centre et rayon du flou du portail, adresse BAN du centre, précision honnête des coordonnées, immeuble annoncé, adresse validée) ; dpe (DPE du miroir ADEME dans le disque, à la même étiquette, à la surface près et du même type, repli sur l'API de l'ADEME) ; dvf (ventes DVF de 2018 à 2025 du même type à 3 % de surface près, adresse retrouvée par la BAN) ; copro (copropriétés du registre national au nombre de lots annoncé) ; parcelle (maisons : parcelles du cadastre IGN à la contenance du terrain annoncé) ; batiments (bâtiments BD TOPO du disque, compatibles d'abord avec l'étage annoncé) ; geocoder (saisie q géocodée par la Base Adresse Nationale, au code postal de l'annonce ou à code_postal, et contrôlée contre le flou). Les candidats sont croisés avec les disques des rediffusions du même bien sur d'autres portails. tolerance règle l'étape : surface en m² pour dpe (1 à 15), lots pour copro (1 à 8), contenance en % pour parcelle (1 à 30). Street View, Google Maps et l'image aérienne ne sont donnés qu'en lien. Rien n'est débité quand l'annonce ne permet pas l'étape (sans étiquette DPE, sans surface, sans position, hors copropriété, sans terrain). Coût : 5 crédits par appel réussi.

## Path parameters

- `id` string, required: Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.

## Query parameters

- `etape` 'disque' | 'dpe' | 'dvf' | 'copro' | 'parcelle' | 'batiments' | 'geocoder', required: L'étape à exécuter.
- `tolerance` number: Tolérance de l'étape dpe (m²), copro (lots) ou parcelle (% de contenance), bornée par l'étape.
- `q` string: geocoder : la rue, le lieu ou l'adresse à géocoder.
- `code_postal` string: geocoder : code postal de la recherche (par défaut, celui de l'annonce).

## Response `200`

Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).

- object
  - `id` string, nullable, required: Identifiant Pillr de l'annonce dans la base servie ; null quand l'annonce n'est connue que des archives du lac.
  - `id_portail` string, nullable, required: Identifiant de l'annonce chez son portail : lbc:<n>, bienici:<id> ou seloger:<id>.
  - `etape` 'disque' | 'dpe' | 'dvf' | 'copro' | 'parcelle' | 'batiments' | 'geocoder', required
  - `criteres` object, required: Les critères que l'étape a appliqués.
    - `dpe` 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G', nullable, required
    - `type_bien` string, nullable, required
    - `surface_m2` number, nullable, required
    - `tolerance` number, nullable, required: Tolérance appliquée, après bornage par l'étape.
    - `unite_tolerance` 'm2' | 'lots' | 'pct', nullable, required
    - `lots` integer, nullable, required
    - `terrain_m2` number, nullable, required
    - `etage` integer, nullable, required
    - `etage_minimum` integer, nullable, required
    - `code_postal` string, nullable, required
    - `q` string, nullable, required
    - `annees` integer[], nullable, required
  - `disque` object, nullable, required
    - `centre` object, required
      - `lat` number, required
      - `lon` number, required
    - `rayon_flou_m` integer, nullable, required: Rayon du flou donné par le portail ; null quand il ne le donne pas.
    - `rayon_recherche_m` integer, required: Rayon de recherche : le flou, ou le rayon supposé, plus la marge de géocodage.
    - `origine` 'flou_du_portail' | 'coordonnees_annonce', required
    - `rediffusions_croisees` integer, nullable, required: Disques des rediffusions du même bien sur d'autres portails, croisés avec celui-ci ; null quand l'étape ne les croise pas.
  - `nb_candidats` integer, required
  - `candidats` object[], required
    - `adresse` string, nullable, required
    - `cle_ban` string, nullable, required: Clé BAN du candidat quand il est retrouvé au numéro ; null sinon.
    - `lat` number, nullable, required
    - `lon` number, nullable, required
    - `distance_m` integer, nullable, required: Distance au centre du disque, en mètres.
    - `ecart` number, nullable, required: Écart au critère de l'étape : m² de surface (dpe, dvf), lots (copro), m² de terrain (parcelle) ; null pour batiments et geocoder.
    - `dpe` 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G', nullable, required
    - `ges` 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G', nullable, required
    - `date` string, nullable, required: Date du DPE (dpe) ou de la vente (dvf).
    - `surface_m2` number, nullable, required
    - `type` string, nullable, required: Type de bâtiment du DPE (dpe).
    - `periode_construction` string, nullable, required
    - `valeur_fonciere` number, nullable, required: Prix de la vente DVF, en euros (dvf).
    - `lots_total` integer, nullable, required
    - `lots_habitation` integer, nullable, required
    - `nom_copropriete` string, nullable, required: Nom d'usage de la copropriété au registre (copro).
    - `contenance_m2` number, nullable, required
    - `section` string, nullable, required
    - `numero_parcelle` string, nullable, required
    - `niveaux` integer, nullable, required: Niveaux du bâtiment BD TOPO, sinon estimés par sa hauteur (batiments).
    - `hauteur_m` number, nullable, required
    - `usage` string, nullable, required
    - `logements` integer, nullable, required
    - `compatible_etage` boolean, nullable, required: Vrai si l'étage annoncé existe dans le bâtiment ; null sans étage annoncé ou sans hauteur connue.
    - `precision` string, nullable, required: Type du résultat de la Base Adresse Nationale (geocoder) : housenumber, street, locality, municipality.
    - `score` number, nullable, required: Score de la Base Adresse Nationale, de 0 à 1 (geocoder).
    - `liens` object, required: Liens vers le point ; null quand le point manque.
      - `street_view` string, nullable, required: Lien Google Street View du point (un lien : aucune image Google n'est servie).
      - `maps` string, nullable, required: Lien Google Maps du point.
      - `ortho` string, nullable, required: Image aérienne de l'IGN (Géoplateforme, service WMS) centrée sur le point.
  - `dans_le_disque` boolean, nullable, required: geocoder : vrai si l'adresse tombe dans le flou du portail, faux pour une voie homonyme hors du disque ; null sans flou.
  - `situation` object, nullable, required: disque : ce que l'annonce dit de sa position ; null pour les autres étapes.
    - `precision` 'aucune' | 'disque_de_flou' | 'numero' | 'rue' | 'approchee', required: Précision honnête des coordonnées affichées : avec un flou, jamais au numéro.
    - `adresse_proche` object, nullable, required: Adresse BAN la plus proche du centre : celle du centre du flou, pas celle du bien.
      - `adresse` string, required
      - `cle_ban` string, nullable, required
      - `type` string, required
      - `score` number, required
    - `commune` string, nullable, required
    - `code_postal` string, nullable, required
    - `insee` string, nullable, required
    - `quartier` string, nullable, required
    - `batiment` object, required
      - `etage` integer, nullable, required
      - `nb_etages` integer, nullable, required
      - `en_copropriete` boolean, nullable, required
      - `lots_copro` integer, nullable, required
      - `ascenseur` boolean, nullable, required
    - `liens` object, required: Liens vers le point ; null quand le point manque.
      - `street_view` string, nullable, required: Lien Google Street View du point (un lien : aucune image Google n'est servie).
      - `maps` string, nullable, required: Lien Google Maps du point.
      - `ortho` string, nullable, required: Image aérienne de l'IGN (Géoplateforme, service WMS) centrée sur le point.
  - `adresse_validee` object, nullable, required: Adresse confirmée par un utilisateur de Pillr (cache partagé des localisations) ; null si aucune.
    - `adresse` string, required
    - `lat` number, nullable, required
    - `lon` number, nullable, required
    - `precision` 'numero' | 'rue' | 'lieu_dit' | 'commune', nullable, required
    - `confiance` string, nullable, required: Ce qui a fondé la validation, en clair (Street View, DPE...).
    - `le` string, nullable, required: Date de la validation.
    - `qualite` object, required: Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.
      - `n` integer, nullable, required: Nombre d'observations derrière la valeur ; null si sans objet.
      - `provenance` 'mesure' | 'estime', nullable, required: mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.
      - `incertitude` object, nullable, required: Incertitude de la valeur : fourchette et demi-largeur.
        - `demi_largeur_pct` number, nullable, required: Demi-largeur de la fourchette, en % de la valeur.
        - `bas` number, nullable, required
        - `haut` number, nullable, required
      - `drapeaux` string[], required: Ce qui doit faire lire la valeur avec prudence ; vide si rien.
      - `methode` string, nullable, required: Méthode de calcul ou de rattachement, en clair.
      - `donnees_du` string, nullable, required: Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).
      - `source` string, required: Source publique ou moteur Pillr, en clair.
  - `qualite` object, required: Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.
    - `n` integer, nullable, required: Nombre d'observations derrière la valeur ; null si sans objet.
    - `provenance` 'mesure' | 'estime', nullable, required: mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.
    - `incertitude` object, nullable, required: Incertitude de la valeur : fourchette et demi-largeur.
      - `demi_largeur_pct` number, nullable, required: Demi-largeur de la fourchette, en % de la valeur.
      - `bas` number, nullable, required
      - `haut` number, nullable, required
    - `drapeaux` string[], required: Ce qui doit faire lire la valeur avec prudence ; vide si rien.
    - `methode` string, nullable, required: Méthode de calcul ou de rattachement, en clair.
    - `donnees_du` string, nullable, required: Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).
    - `source` string, required: Source publique ou moteur Pillr, en clair.
  - `credits` object, required: Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).
    - `debites` integer, required
    - `restants` integer, nullable, required

## Other responses

- `304`: Non modifiée depuis l'ETag fourni : rien n'est débité.
- `400`: Paramètres invalides
- `401`: Clé d'API absente
- `402`: Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint
- `403`: Portée insuffisante
- `404`: Ressource absente : rien n'est débité
- `429`: Trop de requêtes par minute
- `500`: Erreur interne
- `503`: API indisponible ; Donnée momentanément indisponible

---

[API](https://skmtc.dev/pillr/apis/api-pillr.md) · [All operations](https://skmtc.dev/pillr/apis/api-pillr/llms.txt) · [OpenAPI document](https://skmtc.dev/pillr/apis/api-pillr/revisions/218b2866bd6c?raw)
