La maggior parte degli annunci immobiliari è invisibile ai motori di ricerca IA. Questa guida spiega perché e come rimediare, che tu gestisca 1 immobile o 10.000.
Markup JSON-LD, dati strutturati e arricchimento della posizione per rendere gli annunci immobiliari visibili in ChatGPT, Perplexity e Google AI Overviews.
Senza dati geo
Cosa vede l'IA: nulla di utilizzabile. Zero query di quartiere o prossimità soddisfatte.
Con GeoEnrich
Cosa vede l'IA: utilizzabile per 50+ tipi di query, tra cui "appartamento 2 camere vicino al tram a De Pijp", "appartamento con parcheggio sotto 400k", "via tranquilla vicino a scuole".
GeoEnrich genera automaticamente la colonna destra da un indirizzo. Una sola chiamata API.
Aggiungi questo JSON-LD alla pagina del tuo annuncio immobiliare in modo che i motori di ricerca IA possano immediatamente analizzarlo e raccomandarlo:
{
"@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"
}
}
Questo copre le basi. Le sezioni seguenti spiegano come aggiungere contesto di quartiere, POI vicini, dati sui trasporti e altro per far corrispondere il tuo annuncio a decine di tipi di query aggiuntivi. Consulta la scheda degli esempi di schema per file completi pronti per la produzione.
Le ricerche immobiliari tramite IA sono fondamentalmente diverse dalle ricerche sui portali. Invece di menu a tendina, le persone descrivono ciò che vogliono in linguaggio naturale. Comprendere questi schemi di intento è la base del GEO immobiliare.
Queste sono le query immobiliari più comuni e le più difficili da soddisfare per gli annunci tradizionali:
Ciascuna di queste query richiede dati di posizione strutturati, coordinate e contesto POI nelle vicinanze. Senza di essi, il tuo annuncio è invisibile.
Acquirenti e inquilini si preoccupano di ciò che è nelle vicinanze. I motori IA necessitano di dati sulle distanze per rispondere a:
Queste combinano gli attributi dell'immobile con la posizione:
Gli investitori fanno domande diverse:
Per apparire in questi risultati, il tuo annuncio ha bisogno di dati strutturati che i motori IA possano elaborare: coordinate esatte, POI vicini con distanze, specifiche dell'immobile come campi strutturati e segnali di contesto del quartiere.
La stragrande maggioranza degli annunci immobiliari è invisibile ai motori di ricerca IA. Ecco perché e cosa correggere.
"Situato in un quartiere ambito" non dice nulla all'IA. "Ruysdaelkade 21, Amsterdam De Pijp, 200 metri dal mercato Albert Cuyp" dice tutto all'IA. Le descrizioni vaghe sono il motivo principale per cui gli annunci falliscono. L'IA non può dedurre che "ottima zona" significa De Pijp, o che "vicino ai negozi" significa 200 metri da un mercato.
Senza latitudine e longitudine, l'IA non può calcolare le distanze. Ogni query di prossimità ("vicino al parco", "vicino alla metro", "scuole a piedi") richiede coordinate sia dell'annuncio che del POI. Le coordinate devono essere precise a 4+ decimali. "52,35, 4,90" indica un raggio di 100 metri; "52,3534, 4,8965" indica un edificio specifico.
Qui fallisce la maggior parte degli annunci anche se hanno un indirizzo. Un annuncio con coordinate ma senza dati POI nelle vicinanze non può rispondere ad "appartamenti vicino alle scuole" perché l'IA non ha dati scolastici con cui fare la corrispondenza. Devi indicare esplicitamente cosa c'è nelle vicinanze, con nomi e distanze.
I dettagli dell'immobile sepolti nel testo dei paragrafi sono difficili da estrarre per l'IA. "Questo bellissimo appartamento di 85m² ha 2 camere da letto, 1 bagno e un balcone esposto a sud" è leggibile dagli umani. Ma i campi di schema strutturati come floorSize: 85, numberOfBedrooms: 2 e amenityFeature: "South-facing balcony" sono leggibili dalle macchine. I motori IA preferiscono nettamente i dati strutturati.
Un annuncio pubblicato 6 mesi fa senza campo datePosted o dateModified sembra abbandonato. I motori IA deprioritizzano i contenuti che sembrano obsoleti. Includi sempre le date e aggiornale quando l'annuncio cambia.
Un prezzo sepolto nel testo ("prezzo richiesto: EUR 395.000") è più difficile da elaborare rispetto a un Offer con price: 395000 e priceCurrency: "EUR". Il prezzo è uno dei filtri più comuni nelle query immobiliari, quindi la mancanza di prezzi strutturati significa perdere completamente quelle query.
Il tipo RealEstateListing di Schema.org è lo schema corretto per gli annunci immobiliari. Racchiude un immobile (Residence, Apartment, House) in un contesto di annuncio con prezzo, data e disponibilità.
Un RealEstateListing ha tre parti chiave:
about): indirizzo, geo, superficie, stanze, serviziUsa il @type più specifico per l'immobile all'interno di about:
Apartment per appartamenti, condomini, monolocaliHouse o SingleFamilyResidence per case singole o a schieraResidence come fallback genericoQuesti campi sono il minimo per 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"
}
}
Questi campi aumentano il numero di query con cui il tuo annuncio può corrispondere:
yearBuilt: anno di costruzione (importante per le query di ristrutturazione)petsAllowed: true/false (filtra le ricerche di animali ammessi)amenityFeature: array di caratteristiche come "Balcone", "Parcheggio", "Giardino", "Ascensore", "Cantina"numberOfFullBathrooms / numberOfPartialBathrooms: più specifico del totalefloorLevel: piano dell'immobilepermittedUsage: "Residenziale", "Uso misto", "Commerciale"Le sole coordinate dicono all'IA dove si trova un immobile. L'arricchimento geo dice all'IA cosa c'è intorno. Questa è la differenza tra corrispondere a 5 tipi di query e a 50.
Per un immobile a Ruysdaelkade 21 ad Amsterdam, l'arricchimento geo fornisce:
Usa il campo additionalProperty sull'immobile per aggiungere contesto di prossimità:
{
"@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" }
]
}
Senza questi dati, l'IA non può rispondere a nessuna di queste query sul tuo annuncio:
L'API GeoEnrich di MapAtlas genera tutto questo da un singolo indirizzo o coppia di coordinate. Una sola chiamata API restituisce scuole, trasporti, negozi, parchi, salute e ristoranti con nomi e distanze, pronti per essere incorporati come valori additionalProperty.
Oltre ai singoli POI, acquirenti e inquilini vogliono capire il quartiere stesso. I motori IA cercano segnali che descrivano il carattere e la vivibilità di un'area.
I punteggi a livello di quartiere aiutano l'IA a rispondere alle query sullo stile di vita:
{
"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" }
]
}
Questi punteggi rispondono direttamente a query come "quartieri molto pedonali ad Amsterdam per vivere senza auto" o "migliori zone per pendolari in bicicletta ad Amsterdam".
Il tempo di pendolarismo è uno dei principali fattori decisionali per gli acquirenti di immobili. Includilo come dato strutturato:
{
"@type": "PropertyValue",
"name": "Commute to Amsterdam Centraal",
"value": "12 minutes by tram, 18 minutes by bike"
}
La descrizione del tuo annuncio deve includere il contesto del quartiere. Invece di "ottimo quartiere", scrivi:
"De Pijp è uno dei quartieri più ambiti di Amsterdam, noto per il mercato di strada Albert Cuyp, una scena di ristoranti variegata e canali fiancheggiati da alberi. La zona ha un eccellente trasporto pubblico con le linee tram 3, 12 e 24, più la recentemente inaugurata Metro 52 (linea Nord-Sud). Il Sarphatipark offre spazio verde a 400 metri."
Questo solo paragrafo corrisponde a decine di query IA perché contiene fatti specifici e verificabili che l'IA può estrarre e citare.
I totali aggregati danno all'IA un'idea della densità e della comodità:
Questi conteggi consentono query comparative: "Quale quartiere di Amsterdam ha più ristoranti nelle vicinanze?" o "Zone con la migliore copertura scolastica".
Gli annunci in affitto e in vendita usano lo stesso wrapper RealEstateListing, ma la struttura dell'offerta e alcuni campi differiscono.
{
"offers": {
"@type": "Offer",
"price": 395000,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"validFrom": "2026-03-15"
}
}
Per gli affitti, il prezzo rappresenta l'affitto mensile. Usa priceSpecification per chiarire il periodo di fatturazione:
{
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": 1850,
"priceCurrency": "EUR",
"unitText": "MONTH"
},
"availability": "https://schema.org/InStock"
}
}
Gli annunci in affitto beneficiano di campi aggiuntivi che quelli di vendita non necessitano:
leaseLength: durata minima del contratto (es. 12 mesi)petsAllowed: fondamentale per le ricerche di affitto ("affitti pet-friendly ad Amsterdam")amenityFeature: arredato/non arredato, utenze incluse, parcheggiovalidFrom sull'Offer)Gli affitti vacanza a breve termine (stile Airbnb) non devono usare RealEstateListing. Usano LodgingBusiness con prezzi a notte e orari di check-in/out. Vedi la sezione affitti vacanza di seguito per i dettagli.
Le ricerche di immobili commerciali seguono schemi diversi rispetto a quelle residenziali. Le aziende che cercano uffici, spazi retail o industriali fanno domande che richiedono dati strutturati specifici.
Usa tipi specifici dove possibile:
OfficeBuilding per ufficiShoppingCenter o Store per retailWarehouse per industria/logisticaLocalBusiness come fallback generico con additionalTypeGli annunci commerciali necessitano di campi che quelli residenziali non hanno:
{
"@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"
}
}
}
Gli inquilini commerciali si preoccupano di un contesto di prossimità diverso da quello dei residenti:
L'API GeoEnrich restituisce tutte queste categorie di POI, consentendoti di arricchire automaticamente gli annunci commerciali con il contesto che cercano gli inquilini aziendali.
Gli affitti vacanza (soggiorni brevi stile Airbnb) richiedono un approccio schema completamente diverso. Sono attività di ospitalità, non vendite immobiliari o affitti a lungo termine.
Il tipo di schema corretto per gli affitti vacanza è LodgingBusiness (o il più specifico VacationRental se supportato). Questo dice ai motori IA che la proprietà accetta ospiti a breve termine con prezzi a notte, orari di check-in/out e servizi di ospitalità.
Le ricerche di affitti vacanza sono molto specifiche:
{
"@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"
}
}
Gli ospiti in vacanza si preoccupano di POI vicini diversi dai residenti a lungo termine:
Usa l'API GeoEnrich per generare automaticamente dati POI rilevanti per i turisti per ogni affitto vacanza.
Segui questo processo per implementare il markup schema sugli annunci immobiliari.
Inserisci il tag <script type="application/ld+json"> nel <head> di ogni pagina di annuncio. Per i portali immobiliari con migliaia di annunci, genera lo schema lato server dal tuo database di annunci.
Testa ogni schema con questi strumenti:
Dopo il deployment, chiedi ai motori IA dei tuoi annunci:
Se l'IA non riesce a rispondere con dati specifici, il tuo schema è incompleto o non viene scansionato. Verifica che la tua pagina sia indicizzabile (nessun tag noindex), che il JSON-LD sia nell'HTML renderizzato (non solo in JS lato client) e che la tua sitemap includa le pagine degli annunci.
La scheda checklist in questa pagina copre ogni campo e segnale necessario per un GEO immobiliare completo. Lavora su ogni sezione sistematicamente. Punta al 100% per lo schema di base e le sezioni degli indirizzi, poi aggiungi contesto di prossimità e segnali di quartiere per la massima copertura.
Aggiungere manualmente POI vicini, dati sui trasporti e contesto del quartiere a ogni annuncio non è fattibile su larga scala. Se gestisci 100+ proprietà, hai bisogno di automazione.
L'API GeoEnrich di MapAtlas prende un indirizzo o una coppia di coordinate e restituisce contesto di prossimità strutturato:
Il flusso di lavoro tipico per i portali immobiliari:
additionalPropertyQuesto processo viene eseguito automaticamente per ogni nuovo annuncio e può essere elaborato in batch per l'inventario esistente.
Senza GeoEnrich, un annuncio corrisponde alle query sul suo indirizzo e sulle specifiche di base (camere da letto, prezzo). Con GeoEnrich, lo stesso annuncio corrisponde alle query su scuole, trasporti, percorribilità, ristoranti vicini, parchi, ospedali e tempi di pendolarismo. Questa è la differenza tra corrispondere a 5 e a oltre 50 tipi di query.
Per i dettagli di implementazione e la documentazione API, consulta la pagina dell'API GeoEnrich.
Automatizza su larga scala
L'API GeoEnrich di MapAtlas aggiunge automaticamente coordinate, POI vicini, accesso ai trasporti, contesto di quartiere e dati geo pronti per lo schema a ogni annuncio, una chiamata API per annuncio, a qualsiasi scala.