---
title: "DVF à l'adresse : toutes les mutations"
method: GET
path: "/adresses/{cle_ban}/ventes"
---

# DVF à l'adresse : toutes les mutations

`GET /adresses/{cle_ban}/ventes`

## Request

- Base URL: `https://pillr.fr/api/v1`
- URL: `https://pillr.fr/api/v1/adresses/{cle_ban}/ventes`
- Auth: HTTP bearer

Toutes les mutations DVF enregistrées à une adresse de la Base Adresse Nationale (par sa clé), ou à une parcelle cadastrale, regroupées par mutation. Les ventes de 2021 et suivantes sont lues au numéro (code de voie et numéro DVF), sinon aux parcelles de l'adresse ; celles de 2018 à 2020, dont le fichier n'a ni adresse ni parcelle, sont rapprochées par position autour du numéro. Pour chaque mutation : date, nature, valeur foncière, adresse DVF, locaux (type, surface bâtie, pièces, lots et surfaces Carrez), terrains, parcelles, volumes, position. Le prix au m² est recalculé à la mutation sur la surface de ses logements, avec sa qualité : vente en bloc, dépendance, local professionnel, prix atypique et son motif, rattachement incertain. Aucune vente : 404 ressource_absente, rien n'est débité. L'Alsace-Moselle (livre foncier) n'est pas dans DVF. Coût : 5 crédits par appel réussi.

## Path parameters

- `cle_ban` string, required: Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.

## Query parameters

- `depuis` string: Ne garder que les mutations à partir de cette date (AAAA-MM-JJ).
- `jusqu_a` string: Ne garder que les mutations jusqu'à cette date comprise (AAAA-MM-JJ).
- `inclure_2018_2020` union: Ajouter les ventes de 2018 à 2020 rapprochées par position (adresse seulement). Vrai par défaut.
  - boolean
  - string
- `rayon_position_m` integer: Rayon du rapprochement par position des ventes de 2018 à 2020, en mètres (15 par défaut, 100 au plus).

## Response `200`

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

- object
  - `cle_ban` string, nullable, required: Clé BAN demandée ; null pour une demande par parcelle.
  - `id_parcelle` string, nullable, required: Parcelle demandée ; null pour une demande par adresse.
  - `rattachement` 'numero' | 'parcelle' | 'position', nullable, required: Comment les ventes 2021 et suivantes ont été trouvées : au numéro, sinon aux parcelles de l'adresse ; null si aucune.
  - `adresse` object, nullable, required: L'adresse résolue (Base Adresse Nationale et faits Pillr de l'adresse) ; null pour une demande par parcelle.
    - `numero` string, nullable, required
    - `voie` string, nullable, required
    - `code_postal` string, nullable, required
    - `insee` string, nullable, required
    - `commune` string, nullable, required
    - `lat` number, nullable, required
    - `lon` number, nullable, required
  - `parcelles_lues` string[], required: Parcelles lues pour le rattachement par parcelle.
  - `mutations` object[], required: Toutes les mutations, la plus récente d'abord.
    - `id_mutation` string, nullable, required: Identifiant DVF de la mutation ; null pour une vente de 2018 à 2020 (fichier sans identifiant).
    - `date` string, required: Date de la mutation (AAAA-MM-JJ).
    - `nature` string, nullable, required: Nature de la mutation : Vente, Vente en l'état futur d'achèvement, Adjudication, Échange...
    - `valeur_fonciere` number, nullable, required: Valeur foncière de la mutation entière, en euros.
    - `adresse` object, nullable, required: Adresse DVF de la mutation (celle de ses logements d'abord) ; null quand DVF n'en donne pas.
      - `numero` string, nullable, required: Numéro dans la voie, suffixe compris (« 12 bis »), tel que DVF l'écrit.
      - `voie` string, nullable, required: Libellé DVF de la voie, souvent abrégé.
      - `code_voie` string, nullable, required: Code FANTOIR de la voie, le même que dans la clé BAN.
      - `cle_ban` string, nullable, required: Clé BAN reconstituée depuis la commune, le code de voie et le numéro DVF : elle peut ne pas exister dans la Base Adresse Nationale.
    - `code_postal` string, nullable, required
    - `insee` string, nullable, required: Code INSEE de la commune DVF (l'arrondissement à Paris, Lyon et Marseille).
    - `nb_dispositions` integer, required: Dispositions de l'acte (une vente peut en compter plusieurs).
    - `locaux` object[], required: Locaux de la mutation, lus une fois par parcelle.
      - `type` string, required: Type de local DVF : Appartement, Maison, Dépendance, Local industriel. commercial ou assimilé.
      - `surface_bati` number, nullable, required: Surface réelle bâtie du local, en m².
      - `pieces` integer, nullable, required: Nombre de pièces principales.
      - `id_parcelle` string, nullable, required
      - `lots` object[], required: Lots déclarés sur la ligne du local (cinq au plus dans DVF).
        - `numero` string, required: Numéro du lot de copropriété.
        - `carrez` number, nullable, required: Surface Carrez du lot, en m² ; null quand elle n'est pas déclarée.
    - `nombre_lots` integer, nullable, required: Lots de copropriété déclarés dans la mutation.
    - `terrains` object[], required: Terrains de la mutation, par parcelle et nature de culture.
      - `id_parcelle` string, nullable, required
      - `nature_culture` string, nullable, required: Nature de culture du terrain (sols, jardins, terres...).
      - `nature_culture_speciale` string, nullable, required
      - `surface` number, nullable, required: Surface du terrain, en m².
    - `surface_terrain` number, nullable, required: Somme des surfaces de terrain, en m².
    - `parcelles` string[], required: Parcelles cadastrales de la mutation.
    - `volumes` string[], required: Numéros de volume (division en volumes), s'il y en a.
    - `lat` number, nullable, required
    - `lon` number, nullable, required
    - `surface_logements` number, nullable, required: Surface bâtie des appartements et maisons, en m².
    - `prix_m2` number, nullable, required: Valeur foncière rapportée à la surface bâtie des logements, en euros par m², arrondie ; null sans logement. Recalculé à la mutation, jamais à la ligne.
    - `indicateurs` object, required
      - `logements` integer, required: Appartements et maisons de la mutation.
      - `vente_en_bloc` boolean, required: Plus d'un logement : le prix au m² porte sur l'ensemble des logements.
      - `avec_dependance` boolean, required: La mutation comprend une dépendance (cave, parking, garage).
      - `avec_local_pro` boolean, required: La mutation comprend un local industriel, commercial ou assimilé.
      - `prix_atypique` boolean, required: Surface ou prix au m² hors des bornes du barème Pillr : à lire avec prudence.
      - `motif` string, nullable, required: Pourquoi le prix est atypique ; null sinon.
    - `qualite` object, required: Qualité du prix au m² de cette vente : une observation, ses drapeaux et sa méthode.
      - `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.
    - `millesime` string, nullable, required: Millésime du fichier DVF qui porte la mutation.
    - `rattachement` 'numero' | 'parcelle' | 'position', required: numero : la vente porte le code de voie et le numéro de l'adresse ; parcelle : elle porte une parcelle de l'adresse ; position : vente de 2018 à 2020 rapprochée par sa position.
    - `distance_m` integer, nullable, required: Distance entre la vente et l'adresse demandée, en mètres ; null sans position.
  - `resume` object, required
    - `n` integer, required: Mutations servies.
    - `n_2021_et_apres` integer, required
    - `n_2018_2020` integer, required
    - `derniere` object, nullable, required: La mutation la plus récente.
      - `date` string, required
      - `prix` number, nullable, required
      - `prix_m2` number, nullable, required
  - `millesimes` object, required: Premier et dernier millésimes DVF des mutations servies.
    - `premier` string, nullable, required
    - `dernier` string, nullable, required
  - `donnees_du` string, nullable, required: Date de chargement des lignes DVF servies (horodatage ISO 8601).
  - `limites` string[], required: Ce que la réponse ne couvre pas, 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 ; Opération coupée sur ce créneau

---

[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)
