La plupart des annonces immobilières sont invisibles pour les moteurs de recherche IA. Ce guide vous explique pourquoi et comment y remédier, que vous gériez 1 bien ou 10 000.
Balisage JSON-LD, données structurées et enrichissement de localisation pour rendre les annonces immobilières visibles dans ChatGPT, Perplexity et Google AI Overviews.
Sans données géo
Ce que l'IA voit : rien d'exploitable. Aucune requête de voisinage ou de proximité satisfaite.
Avec GeoEnrich
Ce que l'IA voit : exploitable pour 50+ types de requêtes, dont "appartement 2 pièces près du tramway à De Pijp", "appartement avec parking sous 400k", "rue calme proche des écoles".
GeoEnrich génère automatiquement la colonne de droite à partir d'une adresse. Un seul appel API.
Ajoutez ce JSON-LD à votre page d'annonce immobilière pour que les moteurs de recherche IA puissent immédiatement l'analyser et la recommander :
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "2-Bedroom Apartment in Amsterdam De Pijp",
"url": "https://www.example-agency.com/listings/ruysdaelkade-21",
"description": "Bright 2-bedroom apartment on the Ruysdaelkade in De Pijp, Amsterdam. 85 square meters, south-facing balcony, open-plan kitchen, renovated bathroom. 200 meters from Albert Cuyp market, 1-minute walk to tram lines 3 and 12.",
"datePosted": "2026-03-15",
"about": {
"@type": "Residence",
"address": {
"@type": "PostalAddress",
"streetAddress": "Ruysdaelkade 21",
"addressLocality": "Amsterdam",
"addressRegion": "North Holland",
"postalCode": "1072 AK",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3534,
"longitude": 4.8965
},
"floorSize": {
"@type": "QuantitativeValue",
"value": 85,
"unitCode": "MTK"
},
"numberOfRooms": 3,
"numberOfBedrooms": 2,
"numberOfBathroomsTotal": 1,
"petsAllowed": false,
"yearBuilt": "1925"
},
"offers": {
"@type": "Offer",
"price": 395000,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
}
}
Cela couvre les bases. Les sections suivantes expliquent comment ajouter le contexte de quartier, les POI à proximité, les données de transport et bien plus pour faire correspondre votre annonce à des dizaines de types de requêtes supplémentaires. Consultez l'onglet exemples de schéma pour des fichiers complets prêts pour la production.
Les recherches immobilières via l'IA sont fondamentalement différentes des recherches sur les portails. Au lieu de menus déroulants, les gens décrivent ce qu'ils cherchent en langage naturel. Comprendre ces schémas d'intention est le fondement du GEO immobilier.
Ce sont les requêtes immobilières les plus courantes et les plus difficiles à satisfaire pour les annonces traditionnelles :
Chacune de ces requêtes nécessite des données de localisation structurées, des coordonnées et un contexte de POI à proximité. Sans cela, votre annonce est invisible.
Les acheteurs et les locataires se soucient de ce qui est à proximité. Les moteurs IA ont besoin de données de distance pour répondre à :
Elles combinent les caractéristiques du bien avec la localisation :
Les investisseurs posent des questions différentes :
Pour apparaître dans ces résultats, votre annonce a besoin de données structurées que les moteurs IA peuvent analyser : coordonnées exactes, POI à proximité avec distances, spécifications du bien sous forme de champs structurés et signaux de contexte de quartier.
La grande majorité des annonces immobilières est invisible pour les moteurs de recherche IA. Voici pourquoi et ce qu'il faut corriger.
« Situé dans un quartier prisé » ne dit rien à l'IA. « Ruysdaelkade 21, Amsterdam De Pijp, 200 mètres du marché Albert Cuyp » dit tout à l'IA. Les descriptions vagues sont la principale raison pour laquelle les annonces échouent. L'IA ne peut pas déduire que « super quartier » signifie De Pijp, ou que « proche des commerces » signifie 200 mètres d'un marché.
Sans latitude et longitude, l'IA ne peut pas calculer les distances. Chaque requête de proximité (« près du parc », « proche du métro », « à distance de marche des écoles ») nécessite des coordonnées à la fois pour l'annonce et le POI. Les coordonnées doivent être précises à 4+ décimales. « 52,35, 4,90 » pointe vers un rayon de 100 mètres ; « 52,3534, 4,8965 » pointe vers un bâtiment spécifique.
C'est là que la plupart des annonces échouent, même si elles ont une adresse. Une annonce avec des coordonnées mais sans données POI à proximité ne peut pas répondre à « appartements près des écoles » car l'IA n'a pas de données scolaires pour effectuer la correspondance. Vous devez indiquer explicitement ce qui est à proximité, avec les noms et les distances.
Les détails du bien enfouis dans le texte sont difficiles à extraire pour l'IA. « Ce bel appartement de 85 m² a 2 chambres, 1 salle de bain et un balcon exposé sud » est lisible par les humains. Mais les champs de schéma structurés comme floorSize: 85, numberOfBedrooms: 2 et amenityFeature: "South-facing balcony" sont lisibles par les machines. Les moteurs IA préfèrent nettement les données structurées.
Une annonce publiée il y a 6 mois sans champ datePosted ou dateModified semble abandonnée. Les moteurs IA déprioritisent le contenu qui paraît obsolète. Incluez toujours des dates et mettez-les à jour lorsque l'annonce change.
Un prix enfoui dans le texte (« prix demandé : EUR 395 000 ») est plus difficile à analyser qu'un Offer avec price: 395000 et priceCurrency: "EUR". Le prix est l'un des filtres les plus courants dans les requêtes immobilières, donc l'absence de tarification structurée signifie manquer ces requêtes entièrement.
Le type RealEstateListing de Schema.org est le schéma correct pour les annonces immobilières. Il encapsule un bien (Residence, Apartment, House) dans un contexte d'annonce avec prix, date et disponibilité.
Un RealEstateListing comporte trois parties clés :
about) : adresse, géo, superficie, pièces, équipementsUtilisez le @type le plus spécifique pour le bien dans about :
Apartment pour les appartements, condominiums, studiosHouse ou SingleFamilyResidence pour les maisons individuelles ou mitoyennesResidence comme solution de repli généraleCes champs sont le minimum pour la visibilité IA :
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "Descriptive title with key features and location",
"description": "150-300 word description with specific details",
"datePosted": "2026-03-15",
"about": {
"@type": "Apartment",
"address": {
"@type": "PostalAddress",
"streetAddress": "Herengracht 100",
"addressLocality": "Amsterdam",
"addressRegion": "North Holland",
"postalCode": "1015 BS",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3728,
"longitude": 4.8882
},
"floorSize": {
"@type": "QuantitativeValue",
"value": 120,
"unitCode": "MTK"
},
"numberOfRooms": 5,
"numberOfBedrooms": 3,
"numberOfBathroomsTotal": 2
},
"offers": {
"@type": "Offer",
"price": 650000,
"priceCurrency": "EUR"
}
}
Ces champs augmentent le nombre de requêtes auxquelles votre annonce peut correspondre :
yearBuilt : année de construction (important pour les requêtes de rénovation)petsAllowed : true/false (filtre les recherches d'animaux acceptés)amenityFeature : tableau de caractéristiques comme « Balcon », « Parking », « Jardin », « Ascenseur », « Cave »numberOfFullBathrooms / numberOfPartialBathrooms : plus précis que le totalfloorLevel : étage du bienpermittedUsage : « Résidentiel », « Usage mixte », « Commercial »Les coordonnées seules indiquent à l'IA où se trouve un bien. L'enrichissement géo indique à l'IA ce qui l'entoure. C'est la différence entre correspondre à 5 types de requêtes et 50.
Pour un bien au Ruysdaelkade 21 à Amsterdam, l'enrichissement géo fournit :
Utilisez le champ additionalProperty sur le bien pour ajouter le contexte de proximité :
{
"@type": "Apartment",
"address": {
"@type": "PostalAddress",
"streetAddress": "Ruysdaelkade 21",
"addressLocality": "Amsterdam",
"postalCode": "1072 AK",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3534,
"longitude": 4.8965
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Nearest School",
"value": "De Pijp Primary School, 350m"
},
{
"@type": "PropertyValue",
"name": "Nearest Supermarket",
"value": "Albert Heijn, 150m"
},
{
"@type": "PropertyValue",
"name": "Nearest Tram Stop",
"value": "Tram 3 (Ruysdaelkade), 80m"
},
{
"@type": "PropertyValue",
"name": "Nearest Park",
"value": "Sarphatipark, 400m"
},
{
"@type": "PropertyValue",
"name": "Nearest Hospital",
"value": "OLVG Hospital, 800m"
},
{
"@type": "PropertyValue",
"name": "Restaurants within 500m",
"value": "23"
}
]
}
Sans ces données, l'IA ne peut répondre à aucune de ces requêtes sur votre annonce :
L'API GeoEnrich de MapAtlas génère tout cela à partir d'une seule adresse ou d'une paire de coordonnées. Un appel API retourne écoles, transit, commerces, parcs, santé et restaurants avec noms et distances, prêts à être intégrés comme valeurs additionalProperty.
Au-delà des POI individuels, les acheteurs et les locataires veulent comprendre le quartier lui-même. Les moteurs IA recherchent des signaux décrivant le caractère et la qualité de vie d'un secteur.
Les scores au niveau du quartier aident l'IA à répondre aux requêtes de style de vie :
{
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Walk Score",
"value": "92/100"
},
{
"@type": "PropertyValue",
"name": "Transit Score",
"value": "88/100"
},
{
"@type": "PropertyValue",
"name": "Bike Score",
"value": "95/100"
}
]
}
Ces scores répondent directement à des requêtes comme « quartiers très praticables à Amsterdam pour une vie sans voiture » ou « meilleures zones pour les cyclistes pendulaires à Amsterdam ».
Le temps de trajet est l'un des principaux facteurs de décision pour les acheteurs immobiliers. Incluez-le comme donnée structurée :
{
"@type": "PropertyValue",
"name": "Commute to Amsterdam Centraal",
"value": "12 minutes by tram, 18 minutes by bike"
}
Votre description d'annonce doit inclure le contexte du quartier. Au lieu de « super quartier », écrivez :
« De Pijp est l'un des quartiers les plus prisés d'Amsterdam, connu pour le marché de rue Albert Cuyp, une scène de restaurants variée et des canaux bordés d'arbres. Le secteur bénéficie d'excellents transports en commun avec les lignes de tramway 3, 12 et 24, ainsi que la nouvelle ligne de métro 52 (ligne Nord-Sud). Le Sarphatipark offre un espace vert à 400 mètres. »
Ce seul paragraphe correspond à des dizaines de requêtes IA car il contient des faits spécifiques et vérifiables que l'IA peut extraire et citer.
Les totaux agrégés donnent à l'IA une idée de la densité et du confort :
Ces totaux permettent des requêtes de comparaison : « Quel quartier d'Amsterdam a le plus de restaurants à proximité ? » ou « Zones avec la meilleure couverture scolaire ».
Les annonces locatives et de vente utilisent le même wrapper RealEstateListing, mais la structure de l'offre et certains champs diffèrent.
{
"offers": {
"@type": "Offer",
"price": 395000,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"validFrom": "2026-03-15"
}
}
Pour les locations, le prix représente le loyer mensuel. Utilisez priceSpecification pour préciser la période de facturation :
{
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": 1850,
"priceCurrency": "EUR",
"unitText": "MONTH"
},
"availability": "https://schema.org/InStock"
}
}
Les annonces locatives bénéficient de champs supplémentaires que les annonces de vente n'ont pas besoin :
leaseLength : durée minimale du bail (ex. 12 mois)petsAllowed : crucial pour les recherches locatives (« locations acceptant les animaux à Amsterdam »)amenityFeature : meublé/non meublé, charges comprises, parkingvalidFrom sur l'Offer)Les locations de vacances à court terme (style Airbnb) ne doivent pas utiliser RealEstateListing. Elles utilisent LodgingBusiness avec une tarification à la nuit et des horaires d'arrivée/départ. Voir la section location de vacances ci-dessous pour plus de détails.
Les recherches d'immobilier commercial suivent des schémas différents de celles du résidentiel. Les entreprises cherchant des bureaux, des locaux commerciaux ou des entrepôts posent des questions nécessitant des données structurées spécifiques.
Utilisez des types spécifiques autant que possible :
OfficeBuilding pour les bureauxShoppingCenter ou Store pour le commerce de détailWarehouse pour l'industrie/logistiqueLocalBusiness comme solution de repli générale avec additionalTypeLes annonces commerciales ont besoin de champs que les annonces résidentielles n'ont pas :
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "350m2 Office Space in Amsterdam Zuidas",
"about": {
"@type": "OfficeBuilding",
"address": {
"@type": "PostalAddress",
"streetAddress": "Barbara Strozzilaan 201",
"addressLocality": "Amsterdam",
"postalCode": "1083 HN",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3361,
"longitude": 4.8756
},
"floorSize": {
"@type": "QuantitativeValue",
"value": 350,
"unitCode": "MTK"
},
"amenityFeature": [
{"@type": "LocationFeatureSpecification", "name": "Fiber Internet"},
{"@type": "LocationFeatureSpecification", "name": "24/7 Access"},
{"@type": "LocationFeatureSpecification", "name": "Meeting Rooms"},
{"@type": "LocationFeatureSpecification", "name": "Parking Garage"},
{"@type": "LocationFeatureSpecification", "name": "Reception Desk"}
],
"additionalProperty": [
{"@type": "PropertyValue", "name": "Floor Level", "value": "8th floor"},
{"@type": "PropertyValue", "name": "Nearest Metro", "value": "Amsterdam Zuid, 200m"},
{"@type": "PropertyValue", "name": "Parking Spaces", "value": "12 included"}
]
},
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": 45,
"priceCurrency": "EUR",
"unitText": "SQM/YEAR"
}
}
}
Les locataires commerciaux se soucient d'un contexte de proximité différent de celui des résidents :
L'API GeoEnrich retourne toutes ces catégories de POI, vous permettant d'enrichir automatiquement les annonces commerciales avec le contexte que les locataires professionnels recherchent.
Les locations de vacances (courts séjours style Airbnb) nécessitent une approche de schéma totalement différente. Ce sont des établissements d'hébergement, pas des ventes immobilières ou des locations longue durée.
Le type de schéma correct pour les locations de vacances est LodgingBusiness (ou le plus spécifique VacationRental si pris en charge). Cela indique aux moteurs IA que le bien accepte des hôtes à court terme avec une tarification à la nuit, des horaires d'arrivée/départ et des équipements hôteliers.
Les recherches de location de vacances sont très spécifiques :
{
"@context": "https://schema.org",
"@type": "LodgingBusiness",
"name": "Canal View Apartment in Amsterdam Jordaan",
"description": "Charming 1-bedroom canal house apartment in the heart of Jordaan. Sleeps 2 guests. Original wooden beams, modern kitchen, rain shower. 5-minute walk to Anne Frank House and Westerkerk. Free WiFi, Smart TV, Nespresso machine.",
"address": {
"@type": "PostalAddress",
"streetAddress": "Prinsengracht 263",
"addressLocality": "Amsterdam",
"postalCode": "1016 GV",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3752,
"longitude": 4.8839
},
"checkinTime": "15:00",
"checkoutTime": "11:00",
"numberOfRooms": 1,
"petsAllowed": false,
"amenityFeature": [
{"@type": "LocationFeatureSpecification", "name": "Free WiFi"},
{"@type": "LocationFeatureSpecification", "name": "Kitchen"},
{"@type": "LocationFeatureSpecification", "name": "Washing Machine"},
{"@type": "LocationFeatureSpecification", "name": "Smart TV"},
{"@type": "LocationFeatureSpecification", "name": "Air Conditioning"},
{"@type": "LocationFeatureSpecification", "name": "Canal View"}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.8,
"reviewCount": 127,
"bestRating": 5
},
"offers": {
"@type": "Offer",
"price": 135,
"priceCurrency": "EUR",
"unitText": "NIGHT"
}
}
Les vacanciers se soucient de POI à proximité différents des résidents longue durée :
Utilisez l'API GeoEnrich pour générer automatiquement des données POI pertinentes pour les touristes pour chaque location de vacances.
Suivez ce processus pour implémenter le balisage schéma sur vos annonces immobilières.
Placez la balise <script type="application/ld+json"> dans le <head> de chaque page d'annonce. Pour les portails immobiliers avec des milliers d'annonces, générez le schéma côté serveur à partir de votre base de données d'annonces.
Testez chaque schéma avec ces outils :
Après le déploiement, interrogez les moteurs IA sur vos annonces :
Si l'IA ne peut pas répondre avec des détails précis, votre schéma est incomplet ou n'est pas exploré. Vérifiez que votre page est indexable (pas de balise noindex), que le JSON-LD est dans le HTML rendu (pas seulement en JS côté client) et que votre sitemap inclut les pages d'annonce.
L'onglet checklist de cette page couvre chaque champ et signal nécessaire pour un GEO immobilier complet. Travaillez chaque section systématiquement. Visez 100 % pour le schéma de base et les sections d'adresse, puis ajoutez le contexte de proximité et les signaux de quartier pour une couverture maximale.
Ajouter manuellement les POI à proximité, les données de transport et le contexte de quartier à chaque annonce n'est pas réalisable à grande échelle. Si vous gérez 100+ biens, vous avez besoin d'automatisation.
L'API GeoEnrich de MapAtlas prend une adresse ou une paire de coordonnées et retourne le contexte de proximité structuré :
Le flux de travail typique pour les portails immobiliers :
additionalPropertyCe processus s'exécute automatiquement pour chaque nouvelle annonce et peut être traité en lot pour l'inventaire existant.
Sans GeoEnrich, une annonce correspond aux requêtes sur son adresse et ses caractéristiques de base (chambres, prix). Avec GeoEnrich, la même annonce correspond aux requêtes sur les écoles, le transit, la praticabilité, les restaurants à proximité, les parcs, les hôpitaux et les temps de trajet. C'est la différence entre 5 et 50+ types de requêtes correspondants.
Pour les détails d'implémentation et la documentation API, consultez la page de l'API GeoEnrich.
Automatiser à grande échelle
L'API MapAtlas GeoEnrich ajoute automatiquement des coordonnées, des POIs à proximité, l'accès aux transports, le contexte de quartier et des données géo prêtes pour le schéma à chaque annonce, un appel API par annonce, à n'importe quelle échelle.