
Chercher le « DVF par commune », c'est vouloir les ventes immobilières d'une seule ville sans manipuler le fichier national. Il existe trois façons de le faire, selon que l'on veut un tableur, un script ou une application.
Réponse courte. Les données DVF par commune se récupèrent de trois façons. Etalab publie un CSV par commune et par année dans les DVF géolocalisées, à l'adresse files.data.gouv.fr/geo-dvf/latest/csv/<année>/communes/<département>/<code INSEE>.csv. L'application app.dvf.etalab.gouv.fr permet de consulter une commune sur une carte. Immo API renvoie les ventes d'une commune en JSON avec GET /api/mutations?commune= et ses statistiques (médiane, quartiles, prix au m² médian) avec GET /api/stats?commune=.
Ce que contient le DVF à l'échelle d'une commune
Les demandes de valeurs foncières recensent les mutations à titre onéreux publiées par la DGFiP : ventes, ventes en l'état futur d'achèvement, adjudications, échanges. Chaque ligne porte une date, une nature de mutation, une valeur foncière, une adresse, une parcelle et, quand il y a du bâti, un type de local et une surface réelle bâtie.
La commune est la maille la plus demandée parce qu'elle correspond aux questions concrètes : combien de ventes cette année, quel prix médian, quel prix au m² pour un appartement. Deux colonnes l'identifient dans le CSV géolocalisé : code_commune, le code INSEE sur 5 caractères, et nom_commune. Le code postal ne suffit pas : un code postal peut couvrir plusieurs communes, et une commune peut avoir plusieurs codes postaux.
Deux exceptions à connaître. Paris, Lyon et Marseille sont découpées par arrondissement, avec un code INSEE par arrondissement (75101 pour le 1er arrondissement de Paris, 69381 pour le 1er de Lyon). Et les départements du Bas-Rhin, du Haut-Rhin et de la Moselle sont absents du DVF, pour les raisons détaillées dans notre article sur le DVF en Alsace-Moselle.
Méthode 1 : le CSV DVF par commune d'Etalab
Les DVF géolocalisées d'Etalab sont découpées par année, puis par département et par commune. L'index public files.data.gouv.fr/geo-dvf/latest/csv/ liste, au 2 novembre 2026, les dossiers 2021 à 2025. Pour une commune, l'URL suit ce modèle :
https://files.data.gouv.fr/geo-dvf/latest/csv/2024/communes/75/75101.csv
Le fichier est un CSV en UTF-8 séparé par des virgules. Son en-tête commence par id_mutation, date_mutation, numero_disposition, nature_mutation, valeur_fonciere, puis l'adresse, code_commune, nom_commune, les lots, type_local, surface_reelle_bati, nombre_pieces_principales, surface_terrain, longitude et latitude.
Récupérer plusieurs années d'une commune
Comme il y a un fichier par année, l'historique d'une commune se reconstruit en concaténant les millésimes. En Python :
import pandas as pd
insee, dep = "75101", "75"
frames = []
for annee in range(2021, 2026):
url = f"https://files.data.gouv.fr/geo-dvf/latest/csv/{annee}/communes/{dep}/{insee}.csv"
frames.append(pd.read_csv(url, dtype={"code_commune": "string", "code_postal": "string"}))
commune = pd.concat(frames, ignore_index=True)
print(len(commune), commune["date_mutation"].min(), commune["date_mutation"].max())
Le script complet de nettoyage (mutations multi-lots, prix au m²) est détaillé dans DVF Python avec pandas. Pour les dates de publication des millésimes, voir le calendrier de mise à jour du DVF.
Méthode 2 : consulter une commune dans l'application DVF
L'application publique app.dvf.etalab.gouv.fr affiche les ventes sur une carte : on choisit un département, une commune, puis une section cadastrale et une parcelle. C'est la bonne porte pour regarder quelques ventes autour d'une adresse. Elle n'est pas faite pour exporter toutes les ventes d'une commune dans un tableur ni pour alimenter un logiciel. Ses limites sont décrites dans notre mode d'emploi de l'app DVF.
Méthode 3 : le DVF par commune via l'API Immo API
Quand une application, un tableau de bord ou un agent IA doit interroger une commune à la demande, télécharger des fichiers devient lourd. Immo API expose deux routes utiles, décrites dans la documentation.
Les ventes d'une commune : GET /api/mutations
Le paramètre commune prend un nom de commune. La recherche est insensible à la casse et englobe les arrondissements : commune=Paris renvoie aussi « Paris 1er Arrondissement ». D'autres filtres se combinent : code_postal, annee, type_local, prix_min, prix_max, avec limit (100 par défaut, 1000 au plus) et offset pour paginer.
curl "https://immoapi.app/api/mutations?commune=Annecy&type_local=Appartement&annee=2024&limit=100" -H "x-api-key: dvf_live_VOTRE_CLE"
Les statistiques d'une commune : GET /api/stats
GET /api/stats prend commune ou code_postal. La route ne garde que les ventes de plus de 1 000 euros, compte une ligne par mutation, puis renvoie total_mutations, prix_moyen, prix_median, prix_p25, prix_p75, prix_min, prix_max, prix_m2_median et surface_moyenne. Le prix au m² médian est calculé sur les ventes d'un seul appartement ou d'une seule maison de plus de 9 m².
curl "https://immoapi.app/api/stats?commune=Annecy" -H "x-api-key: dvf_live_VOTRE_CLE"
Fichier ou API : quelle méthode choisir
| Besoin | CSV par commune | Application DVF | API Immo API |
|---|---|---|---|
| Regarder quelques ventes | Possible | Idéal | Possible |
| Analyser une commune dans un tableur | Idéal | Non prévu | Export JSON paginé |
| Prix médian et prix au m² | À calculer soi-même | Non | GET /api/stats |
| Interroger des communes à la demande | Téléchargement par commune | Non | Une requête par commune |
| Coût | Gratuit | Gratuit | Abonnement, voir tarifs |
Pour comparer plus largement les fournisseurs de données, voir notre comparatif des API immobilières.
Les pièges du DVF par commune
- Les mutations multi-lignes. Une vente de plusieurs lots occupe plusieurs lignes, avec la même valeur foncière répétée. Additionner les lignes compte plusieurs fois le même prix : il faut regrouper sur
id_mutation. - Les petites communes. Avec une dizaine de ventes par an, une médiane bouge beaucoup d'une année à l'autre. Regroupez plusieurs années ou élargissez au rayon avec
GET /api/mutations/nearby. - Les communes nouvelles et fusions. Le CSV géolocalisé garde
ancien_code_communeetancien_nom_commune: utile pour suivre une commune qui a changé de code. - Les homonymes. Plusieurs communes portent le même nom. Côté API, ajoutez
code_postalpour lever l'ambiguïté. Côté fichier, filtrez sur le code INSEE. - Les ventes atypiques. Ventes à l'euro symbolique, ventes en bloc, terrains : filtrez
nature_mutationettype_localavant tout calcul. Le prix au m² par commune est détaillé dans connaître le prix au m² de sa ville.
FAQ : DVF par commune
Où télécharger le DVF d'une seule commune ?
Dans les DVF géolocalisées d'Etalab : files.data.gouv.fr/geo-dvf/latest/csv/<année>/communes/<département>/<code INSEE>.csv. Il y a un fichier par commune et par année, gratuit, en CSV.
Quel code utiliser pour Paris, Lyon ou Marseille ?
Le code INSEE de l'arrondissement : 75101 à 75120 pour Paris, 69381 à 69389 pour Lyon, 13201 à 13216 pour Marseille. Il n'y a pas de fichier unique pour la ville entière.
Le code postal suffit-il pour filtrer une commune ?
Non. Un code postal peut regrouper plusieurs communes. Dans le fichier, filtrez sur code_commune. Dans l'API, utilisez commune, et ajoutez code_postal en cas d'homonymie.
Comment obtenir le prix au m² médian d'une commune ?
Avec GET /api/stats?commune=, le champ prix_m2_median le donne directement. Avec le fichier, calculez-le sur les ventes d'un seul logement, après regroupement par id_mutation.
Pourquoi ma commune n'apparaît-elle pas dans le DVF ?
Soit elle est en Alsace-Moselle (Bas-Rhin, Haut-Rhin, Moselle), où le DVF n'est pas publié, soit elle a changé de code après une fusion : cherchez l'ancien code dans ancien_code_commune.
Quelles années sont disponibles par commune ?
Au 2 novembre 2026, l'index des DVF géolocalisées propose les années 2021 à 2025. La DGFiP publie les mises à jour deux fois par an.
Passer à l'échelle de toutes les communes
Pour une commune, le CSV d'Etalab suffit. Pour des dizaines de communes, un tableau de bord ou un agent IA, une requête GET /api/stats?commune= par commune évite de télécharger et de nettoyer les fichiers. Les paramètres sont dans la documentation, et l'accès commence par l'essai gratuit présenté sur la page tarifs.
Articles connexes
DVF Python : analyser les données DVF avec pandas ou une API
Analyser les données DVF en Python : fichiers data.gouv avec pandas (code commune, prix au m², mutations multi-lots) ou API Immo API avec requests.
DVF et cadastre : retrouver le prix de vente d'une parcelle
DVF et cadastre : relier une parcelle à son prix de vente, lire le numéro cadastral et interroger les mutations immobilières avec une API (commune ou GPS).
App DVF Etalab (app.dvf.etalab.gouv.fr) : mode d'emploi, limites et passage à l'API
Comment utiliser l'app DVF d'Etalab pour voir les ventes immobilières par parcelle, ce qu'elle ne permet pas (export, API, Alsace-Moselle) et comment automatiser avec une API DVF.