Guide Make + DVF — 8 nodes

Estimateur Immobilier de la saisie du bien au rapport DVF complet en 2 minutes

Ce guide décrit l'architecture complète de l'estimateur immobilier d'Automa-consulting — node par node — et vous donne les étapes concrètes pour reproduire ce workflow dans votre propre compte Make.

Ce guide est un tutoriel de reproduction. Il suppose une première expérience avec Make. Si vous souhaitez qu'Automa-consulting construise ce système pour vous ou forme vos équipes, contactez-nous directement →

Durée d'exécution : ~2 minutes
8 modules Make
Source : API DVF Open Data Cerema
Vue d'ensemble du scénario Make de l'estimateur immobilier — 8 nodes connectés

Le scénario Make complet — Tally → Tools → HTTP DVF → Iterator → Tools → Array Aggregator → Tools → Gmail

Avant de commencer

Ce dont vous avez besoin

Quatre outils suffisent. Tous proposent un plan gratuit ou un accès sans authentification.

Make (Integromat)

Plan Free suffisant pour démarrer. make.com

Tally

Formulaires avec webhook natif. Gratuit. tally.so

Gmail (ou SMTP)

Pour l'envoi du rapport final. Compte Google standard.

API DVF Cerema

Accès libre, sans clé. apidf.cerema.fr

Niveau requis : intermédiaire — première expérience Make recommandée

Contexte

La réalité du métier sans automatisation

  • 30 à 60 minutes par réponse d'annonceEntre la recherche de données marchés, les calculs manuels, la mise en forme du rapport et la rédaction du message — un seul bien prend un temps considérable, répété à chaque nouvelle demande.

  • Des estimations sans ancrage sur les transactions réellesSans accès aux données DVF, l'estimation repose sur des comparables parfois obsolètes. Ce workflow résout ce problème en interrogeant le registre national des mutations à chaque exécution.

  • Un rapport qui ne se différencie pasLe client ne perçoit pas la valeur d'une analyse ancrée sur des données officielles. Un rapport automatisé et documenté change cette perception sans effort supplémentaire.

Architecture technique

Le scénario node par node

Chaque node est décrit avec sa configuration réelle et les étapes concrètes pour le reproduire dans Make.

Tally — Watch New Responses

Déclenchement par formulaire

Le formulaire Tally est le point d'entrée. L'utilisateur renseigne les caractéristiques de sa recherche : nom, email, code INSEE de la commune, type de bien, période d'analyse. Dès la soumission, Make se déclenche automatiquement via un webhook.

  • Déclencheur : Watch New Responses (webhook instantané)
  • Champs collectés : Nom et prénom, Email, Code INSEE commune, Type de bien, Date de début, Date de fin
Comment reproduire ce node
  1. Sur tally.so, créez un nouveau formulaire avec les champs : Nom et prénom (texte court), Email (email), Code INSEE commune (texte court), Type de bien (liste déroulante : Appartement / Maison / Local industriel / commerce), Date de début et Date de fin (dates).
  2. Dans Make, créez un nouveau scénario. Ajoutez le module Tally → Watch New Responses. Connectez votre compte Tally.
  3. Sélectionnez votre formulaire dans le champ Form. Make génère automatiquement une URL webhook — copiez-la.
  4. Dans Tally, allez dans Integrations → Webhooks, collez l'URL Make. Soumettez le formulaire une fois pour que Make reçoive la structure des données et reconnaisse les champs.

Structure du formulaire Tally à créer

Nom du champType TallyNotes
Nom et prénomShort AnswerTexte libre — requis
EmailEmailFormat email validé — requis
Code INSEE communeShort Answer5 chiffres — ex. 75056
Type de bienDropdownAppartement · Maison · Local industriel · commerce
Date de débutDateRetourné en ISO 8601 par Tally
Date de finDateRetourné en ISO 8601 par Tally

Les noms exacts des champs Tally doivent correspondre aux références utilisées dans Make — respectez la casse et les espaces.

Tools — Set Variable

Buffer : normalisation des données d'entrée

Ce module normalise les données brutes du formulaire avant de les envoyer à l'API. Il formate les dates, nettoie le code commune et prépare les paramètres de requête. Cette étape évite les erreurs de format en aval.

Comment reproduire ce node
  1. Ajoutez un module Tools → Set Variable après le node Tally.
  2. Créez la variable code_commune avec la valeur {{1.fields["Code INSEE commune"]}}.
  3. Créez type_local avec {{first(1.fields["Type de bien"])}} — le first() extrait la valeur de la liste déroulante Tally qui retourne un tableau.
  4. Créez date_debut et date_fin avec {{formatDate(1.fields["Date de début"]; "YYYY-MM-DD")}} — l'API DVF attend ce format ISO.
Node 2 — Module Tools Set Variable dans Make
Node 2 — Initialisation et normalisation des variables d'entrée
HTTP — GET /dvf/opendata/mutations/

Appel API DVF — données de transactions réelles

Le scénario interroge l'API nationale DVF (Données de Valeurs Foncières) via l'endpoint Cerema. Sans authentification. En retour : la liste des transactions immobilières réelles correspondant aux critères saisis — commune, type de bien, période.

  • Endpoint : https://apidf.cerema.fr/dvf/opendata/mutations/
  • Paramètres : code_commune, type_local, date_mutation_min, date_mutation_max
  • Retour : tableau results[] — chaque entrée contient valeur_fonciere, surface_reelle_bati, date_mutation
Comment reproduire ce node
  1. Ajoutez un module HTTP → Make a Request. Méthode : GET.
  2. URL : https://apidf.cerema.fr/dvf/opendata/mutations/. Pas de headers ni d'authentification requis.
  3. Dans Query String, ajoutez les paramètres : code_commune{{2.code_commune}}, type_local{{2.type_local}}, date_mutation_min{{2.date_debut}}, date_mutation_max{{2.date_fin}}, page_size500.
  4. Activez Parse response → Yes et sélectionnez Content type : JSON. Make reconnaîtra automatiquement la structure du retour.
Node 3 — Configuration HTTP GET
Node 3 — URL et méthode GET
Node 3 suite 1 — Query params DVF
Node 3 — Query params (suite 1)
Node 3 suite 2 — Options parse
Node 3 — Query params (suite 2)
Tools — Iterator

Itération sur chaque transaction

L'API DVF retourne un tableau de transactions. L'Iterator parcourt chaque entrée une par une pour permettre un calcul individuel du prix au m². Sans cette étape, les calculs par transaction seraient impossibles.

Comment reproduire ce node
  1. Ajoutez un module Tools → Iterator.
  2. Dans le champ Array, sélectionnez {{3.data.results}} — le tableau des transactions retourné par le node HTTP.
  3. Make génère automatiquement un bundle par transaction. Chaque bundle expose les propriétés de la transaction : valeur_fonciere, surface_reelle_bati, date_mutation, etc.
Node 4 — Module Iterator dans Make
Node 4 — Iterator sur le tableau results[] de l'API DVF
Tools — Set Variable

Calcul du prix au m² par transaction

Pour chaque transaction itérée, ce module calcule le prix au m². Il applique aussi un filtre sur la surface pour exclure les transactions avec surface nulle qui fausseraient les agrégats.

Comment reproduire ce node
  1. Ajoutez un module Tools → Set Variable après l'Iterator.
  2. Créez la variable prix_m2 avec la formule : {{4.valeur_fonciere / 4.surface_reelle_bati}}.
  3. Ajoutez un filtre sur le lien entre l'Iterator (node 4) et ce node : condition {{4.surface_reelle_bati}} Greater than 0. Cela exclut les transactions sans surface renseignée.
Node 5 — Calcul prix au m² par transaction
Node 5 — Calcul prix_m2 = valeur_fonciere / surface_reelle_bati
Array Aggregator

Consolidation — refermer la boucle

L'Array Aggregator referme la boucle d'itération. Il rassemble tous les prix_m2 calculés dans un tableau unique — prêt pour les calculs statistiques du node suivant.

Comment reproduire ce node
  1. Ajoutez un module Tools → Array Aggregator.
  2. Dans Source Module, sélectionnez le module Iterator (Node 4) — c'est lui qui définit le périmètre de la boucle.
  3. Dans Aggregated fields, ajoutez le champ prix_m2{{5.prix_m2}}. L'Aggregator produit un objet array avec toutes les valeurs collectées.
Node 6 — Array Aggregator dans Make
Node 6 — Agrégation de tous les prix_m2 dans un tableau
Tools — Set Multiple Variables

Calculs statistiques — synthèse finale

Ce module produit les indicateurs finaux : prix moyen, médian, minimum, maximum et nombre de transactions. Ces valeurs sont directement injectées dans le template d'email du node suivant.

  • Nombre de transactions : {{length(6.array)}}
  • Prix moyen : {{round(sum(map(6.array; "prix_m2")) / length(6.array); 0)}}
  • Prix min / max : {{round(min(map(6.array; "prix_m2")); 0)}}
Comment reproduire ce node
  1. Ajoutez un module Tools → Set Multiple Variables.
  2. Variable nb_transactions{{length(6.array)}}
  3. Variable prix_moyen{{round(sum(map(6.array; "prix_m2")) / length(6.array); 0)}}
  4. Variable prix_median{{round(get(sort(map(6.array; "prix_m2")); round(length(6.array) / 2; 0)); 0)}}
  5. Variables prix_min et prix_max{{round(min(map(6.array; "prix_m2")); 0)}} et {{round(max(map(6.array; "prix_m2")); 0)}}
Node 7 — Variables 1/3
Node 7 — nb_transactions et prix_moyen
Node 7 — Variables 2/3
Node 7 — prix_median
Node 7 — Variables 3/3
Node 7 — prix_min et prix_max
Gmail — Send an Email

Envoi automatique du rapport DVF

Le dernier module envoie le rapport en HTML à l'adresse saisie dans le formulaire. L'objet est personnalisé avec le type de bien et la commune. Le corps intègre les métriques calculées au node précédent.

Comment reproduire ce node
  1. Ajoutez un module Gmail → Send an Email. Connectez votre compte Google.
  2. Champ To : {{1.fields.Email}} — l'email saisi dans le formulaire Tally.
  3. Champ Subject : Rapport prix au m² — {{2.type_local}} — Commune {{2.code_commune}}
  4. Activez Content type → HTML. Collez le template HTML du rapport (voir la section "Email reçu" ci-dessous), en remplaçant les valeurs statiques par les variables Make : {{7.prix_moyen}}, {{7.prix_median}}, {{7.prix_min}}, {{7.prix_max}}, {{7.nb_transactions}}.
Node 8 — Gmail paramètres 1/3
Node 8 — Destinataire et objet
Node 8 — Gmail template 2/3
Node 8 — Template HTML
Node 8 — Gmail variables 3/3
Node 8 — Variables injectées
Vue d'ensemble

Vue d'ensemble du scénario

Tally
Formulaire
Set Var
Normalisation
HTTP DVF
Données réelles
Iterator
Par transaction
Set Var
Calcul m²
Aggregator
Consolidation
Set Multi
Statistiques
Gmail
Rapport envoyé
Résultat

L'email reçu — exemple de rapport

Rapport généré automatiquement et livré dans la boîte email en moins de 2 minutes après soumission du formulaire.

Données fictives à titre illustratif — le rapport réel utilise les transactions DVF de votre commune

Node 8 — Template Gmail

Le HTML à coller dans Make

Copiez ce template dans le champ Body du module Gmail (activez Content type → HTML). Les variables {{...}} sont directement compatibles Make — remplacez les numéros de node si votre ordre diffère.

email-rapport-dvf.html
Chargement…

Variables : {{1.fields.`...`}} = champs Tally (node 1 direct) · {{7.nb_transactions}}, {{7.prix_moyen}}… = statistiques du node 7

Dépannage

Pièges courants et comment les éviter

Cinq erreurs fréquentes lors de la mise en place de ce scénario — et leur correction.

  • Code INSEE invalide ou absent

    L'API DVF retourne un tableau results[] vide. Le scénario s'exécute sans erreur mais aucun email n'est envoyé. Le problème est silencieux et difficile à diagnostiquer sans inspecter les bundles Make.

    Vérifiez le code sur insee.fr avant de tester. Paris = 75056, Lyon = 69123, Marseille = 13055.
  • Surface nulle sur toutes les transactions filtrées

    Le filtre du node 5 élimine toutes les entrées (surface = 0). L'Array Aggregator reçoit un tableau vide. La division dans node 7 produit une erreur ou une valeur NaN. L'email n'est pas envoyé.

    Testez d'abord avec une grande ville sur une période récente (2022–2024) — les transactions y ont presque toujours une surface renseignée.
  • Webhook Tally non connecté

    Le scénario ne se déclenche jamais. Make reste en attente indéfinie. Aucune erreur visible dans le dashboard Make.

    Dans Tally : Integrations → Webhooks — vérifiez que l'URL Make est enregistrée. Soumettez le formulaire une fois pour que Make reçoive la structure et reconnaisse les champs.
  • Dropdown Tally retourne un tableau, pas une chaîne

    Sans le first() dans la formule du node 2, la variable type_local vaut ["Appartement"] au lieu de "Appartement". L'API DVF ne reconnaît pas ce format et retourne 0 résultat.

    Vérifiez que la formule du node 2 utilise bien {{first(1.fields["Type de bien"])}} — le first() extrait la valeur du tableau.
  • page_size trop bas — statistiques biaisées

    Par défaut, l'API DVF pagine à 100 résultats. Si vous omettez le paramètre page_size=500, vous n'obtenez que les 100 premières transactions, ce qui fausse les médianes et les extremums.

    Toujours inclure page_size500 dans les Query String params du node HTTP (étape 3 du node 3).
Offre de formation

Construisez ce type d'automatisation avec votre équipe

Ce workflow illustre ce qu'il est possible de mettre en place avec Make en quelques heures de travail. Automa-consulting accompagne les entreprises qui souhaitent construire leurs propres automatisations — sur leur propre compte, avec leurs propres données, en toute autonomie.

Audit de vos process

Identification des tâches répétitives les plus automatisables dans votre contexte précis.

Construction d'un scénario sur-mesure

Nous construisons avec vous un workflow Make adapté à vos outils et à vos données.

Formation pratique Make

Sessions de travail en direct : logique des modules, gestion des données, débogage, bonnes pratiques.

Documentation et autonomie

Chaque scénario livré est documenté. Vos équipes repartent avec les clés pour faire évoluer les systèmes seules.

Missions sur-mesure · À distance · Bureaux d'études, PME et services techniques

Tester l'outil

Soumettre une demande d'analyse

Renseignez les caractéristiques du bien pour lancer l'analyse. Si des transactions DVF correspondent à vos critères, un rapport vous sera envoyé à l'adresse indiquée dans les 2 minutes suivant la soumission.

Code INSEE commune — Il s'agit du code officiel à 5 chiffres qui identifie chaque municipalité française. Un code absent ou incorrect empêchera l'interrogation de l'API DVF et aucun rapport ne sera envoyé. Exemples : Paris 75056 · Lyon 69123 · Marseille 13055 · Bordeaux 33063. Vous pouvez retrouver ce code sur insee.fr.