De meeste vastgoedaanbiedingen zijn onzichtbaar voor AI-zoekmachines. Deze gids laat zien waarom en hoe u dat oplost, of u nu 1 woning of 10.000 woningen beheert.
JSON-LD-schema-markup, gestructureerde data en locatieverrijking om vastgoedaanbiedingen zichtbaar te maken in ChatGPT, Perplexity en Google AI Overviews.
Zonder geo-data
Wat AI ziet: niets bruikbaars. Geen buurt- of nabijheidsvragen beantwoord.
Met GeoEnrich
Wat AI ziet: bruikbaar voor 50+ vraagtypes, waaronder "2-slaapkamerappartement bij tram in De Pijp", "appartement met parkeerplaats onder 400k", "rustige straat dicht bij scholen".
GeoEnrich genereert de rechterkolom automatisch vanuit een adres. Één API-aanroep.
Voeg deze JSON-LD toe aan uw vastgoedaanbiedingspagina zodat AI-zoekmachines het direct kunnen verwerken en aanbevelen:
{
"@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"
}
}
Dit dekt de basis. De onderstaande secties leggen uit hoe u buurtcontext, nabijgelegen POI's, transitgegevens en meer toevoegt om uw aanbiedingen te laten matchen met tientallen extra vraagtypes. Zie het tabblad schema-voorbeelden voor complete, productieklare bestanden.
Vastgoedzoekopdrachten via AI zijn fundamenteel anders dan portaalzoekopdrachten. In plaats van dropdown-filters beschrijven mensen in natuurlijke taal wat ze zoeken. Deze zoekpatronen begrijpen is de basis van vastgoed-GEO.
Dit zijn de meest voorkomende vastgoedvragen en het moeilijkst te beantwoorden voor traditionele aanbiedingen:
Elke vraag vereist gestructureerde locatiedata, coördinaten en nabijgelegen POI-context. Zonder deze data is uw aanbieding onzichtbaar.
Kopers en huurders geven om wat er in de buurt is. AI-engines hebben afstandsdata nodig om te beantwoorden:
Deze combineren woningeigenschappen met locatie:
Investeerders stellen andere vragen:
Om in deze resultaten te verschijnen heeft uw aanbieding gestructureerde data nodig die AI-engines kunnen verwerken: exacte coördinaten, nabijgelegen POI's met afstanden, woningspecificaties als gestructureerde velden en buurtcontextsignalen.
De overgrote meerderheid van vastgoedaanbiedingen is onzichtbaar voor AI-zoekmachines. Dit is de reden en wat u moet oplossen.
"Gelegen in een gewilde buurt" vertelt AI niets. "Ruysdaelkade 21, Amsterdam De Pijp, 200 meter van de Albert Cuypmarkt" vertelt AI alles. Vage omschrijvingen zijn de grootste reden waarom aanbiedingen falen. AI kan niet afleiden dat "geweldige buurt" De Pijp betekent, of dat "dicht bij winkels" 200 meter van een markt is.
Zonder breedte- en lengtegraad kan AI geen afstanden berekenen. Elke nabijheidsvraag ("bij het park", "metro dichtbij", "scholen op loopafstand") vereist coördinaten van zowel de aanbieding als de POI. Coördinaten moeten nauwkeurig zijn tot 4+ decimalen. "52,35, 4,90" wijst naar een straal van 100 meter; "52,3534, 4,8965" wijst naar een specifiek gebouw.
Hier falen de meeste aanbiedingen zelfs als ze een adres hebben. Een aanbieding met coördinaten maar zonder nabijgelegen POI-data kan "appartementen bij scholen" niet beantwoorden omdat AI geen schooldata heeft om mee te matchen. U moet expliciet vermelden wat er in de buurt is, met namen en afstanden.
Woningdetails verstopt in alineatekst zijn moeilijk voor AI te extraheren. "Dit prachtige appartement van 85m2 heeft 2 slaapkamers, 1 badkamer en een op het zuiden gelegen balkon" is leesbaar voor mensen. Maar gestructureerde schema-velden zoals floorSize: 85, numberOfBedrooms: 2 en amenityFeature: "South-facing balcony" zijn leesbaar voor machines. AI-engines hebben een sterke voorkeur voor gestructureerde data.
Een aanbieding van 6 maanden oud zonder datePosted- of dateModified-veld ziet er verlaten uit. AI-engines deprioriteren content die verouderd lijkt. Voeg altijd datums toe en update ze wanneer de aanbieding wijzigt.
Prijs verstopt in tekst ("vraagprijs: EUR 395.000") is moeilijker te verwerken dan een Offer met price: 395000 en priceCurrency: "EUR". Prijs is een van de meest gebruikte filters bij vastgoedvragen, dus een ontbrekende gestructureerde prijs betekent dat u die vragen volledig mist.
Het RealEstateListing-type van Schema.org is het juiste schema voor vastgoedaanbiedingen. Het verpakt een woning (Residence, Apartment, House) in een aanbiedingscontext met prijs, datum en beschikbaarheid.
Een RealEstateListing heeft drie hoofdonderdelen:
about): adres, geo, woonoppervlak, kamers, voorzieningenGebruik het meest specifieke @type voor de woning binnen about:
Apartment voor flats, condominiums, studio-appartementenHouse of SingleFamilyResidence voor vrijstaande of halfvrijstaande woningenResidence als algemene fallbackDeze velden zijn het minimum voor AI-vindbaarheid:
{
"@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"
}
}
Deze velden verhogen het aantal vragen waarop uw aanbieding kan matchen:
yearBuilt: bouwjaar (belangrijk voor renovatievragen)petsAllowed: true/false (filtert huisdiersvriendelijke zoekopdrachten)amenityFeature: array van kenmerken zoals "Balkon", "Parkeerplaats", "Tuin", "Lift", "Berging"numberOfFullBathrooms / numberOfPartialBathrooms: specifieker dan het totaalfloorLevel: op welke verdieping het pand zich bevindtpermittedUsage: "Woongebruik", "Gemengd gebruik", "Commercieel"Coördinaten alleen vertellen AI waar een woning zich bevindt. Geo-verrijking vertelt AI wat er omheen zit. Dit is het verschil tussen 5 en 50 matchende vraagtypes.
Voor een woning op Ruysdaelkade 21 in Amsterdam biedt geo-verrijking:
Gebruik het veld additionalProperty op de woning om nabijgelegen context toe te voegen:
{
"@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"
}
]
}
Zonder deze data kan AI geen van deze vragen over uw aanbieding beantwoorden:
De MapAtlas GeoEnrich API genereert dit alles vanuit één adres of coördinatenpaar. Één API-aanroep geeft scholen, transit, winkels, parken, zorg en restaurants met namen en afstanden, klaar om in te voegen als additionalProperty-waarden.
Naast individuele POI's willen kopers en huurders de buurt zelf begrijpen. AI-engines zoeken naar signalen die het karakter en de leefbaarheid van een gebied beschrijven.
Buurtscores helpen AI lifestyle-vragen te beantwoorden:
{
"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"
}
]
}
Deze scores beantwoorden direct vragen als "loopvriendelijke buurten in Amsterdam voor autovrij leven" of "beste gebieden voor fietsende forensen in Amsterdam".
Reistijd is een van de belangrijkste beslissingsfactoren voor woningkopers. Voeg het toe als gestructureerde data:
{
"@type": "PropertyValue",
"name": "Commute to Amsterdam Centraal",
"value": "12 minutes by tram, 18 minutes by bike"
}
Uw aanbiedingsbeschrijving moet buurtcontext bevatten. In plaats van "geweldige buurt", schrijft u:
"De Pijp is een van de meest gewilde buurten van Amsterdam, bekend om de Albert Cuypstraat, een divers restaurantaanbod en door bomen omzoomde grachten. Het gebied heeft uitstekend OV met tramlijnen 3, 12 en 24, plus de onlangs geopende Metro 52 (Noord-Zuidlijn). Sarphatipark biedt groen binnen 400 meter."
Deze alinea alleen al matcht tientallen AI-vragen omdat het specifieke, verifieerbare feiten bevat die AI kan extraheren en citeren.
Totaaloverzichten geven AI een gevoel voor dichtheid en gemak:
Deze tellingen maken vergelijkingsvragen mogelijk: "Welke Amsterdamse buurt heeft de meeste restaurants in de buurt?" of "Gebieden met de beste schooldekking".
Huur- en koopwoningen gebruiken dezelfde RealEstateListing-wrapper, maar de aanbodstructuur en sommige velden verschillen.
{
"offers": {
"@type": "Offer",
"price": 395000,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"validFrom": "2026-03-15"
}
}
Bij huurwoningen vertegenwoordigt de prijs de maandhuur. Gebruik priceSpecification om de factureringsperiode te verduidelijken:
{
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": 1850,
"priceCurrency": "EUR",
"unitText": "MONTH"
},
"availability": "https://schema.org/InStock"
}
}
Huurwoningen profiteren van extra velden die koopwoningen niet nodig hebben:
leaseLength: minimale huurtermijn (bijv. 12 maanden)petsAllowed: cruciaal voor huurzoekopdrachten ("huisdiersvriendelijke huurwoningen in Amsterdam")amenityFeature: gemeubileerd/ongemeubileerd, inbegrepen nutsvoorzieningen, parkeerplaatsvalidFrom op het Offer)Kortetermijn vakantieverhuur (Airbnb-stijl) mag geen RealEstateListing gebruiken. Ze gebruiken LodgingBusiness met nachtprijzen en in/uitchecktijden. Zie de sectie vakantieverhuur hieronder voor details.
Commercieel vastgoed-zoekopdrachten volgen andere patronen dan woningzoekopdrachten. Bedrijven die op zoek zijn naar kantoor-, winkel- of bedrijfsruimte stellen vragen die specifieke gestructureerde data vereisen.
Gebruik waar mogelijk specifieke types:
OfficeBuilding voor kantoorruimteShoppingCenter of Store voor retailWarehouse voor industrie/logistiekLocalBusiness als algemene fallback met additionalTypeCommerciële aanbiedingen hebben velden nodig die woningaanbiedingen niet hebben:
{
"@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"
}
}
}
Commerciële huurders geven om andere nabijgelegen context dan bewoners:
De GeoEnrich API retourneert al deze POI-categorieën, zodat u commerciële aanbiedingen automatisch kunt verrijken met de context die zakelijke huurders zoeken.
Vakantieverhuur (Airbnb-stijl korte verblijven) vereist een geheel andere schema-aanpak. Dit zijn horecabedrijven, geen vastgoedverkopen of langetermijnhuur.
Het juiste schema-type voor vakantieverhuur is LodgingBusiness (of het specifiekere VacationRental indien ondersteund). Dit vertelt AI-engines dat het pand kortetermijngasten accepteert met nachtprijzen, in/uitchecktijden en hospitality-voorzieningen.
Vakantieverhuur-zoekopdrachten zijn zeer specifiek:
{
"@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"
}
}
Vakantiegasten geven om andere nabijgelegen POI's dan langetermijnbewoners:
Gebruik de GeoEnrich API om automatisch toeristenrelevante POI-data voor elk vakantieverhuurpand te genereren.
Volg dit proces om schema-markup in te voeren op uw vastgoedaanbiedingen.
Plaats de <script type="application/ld+json">-tag in de <head> van elke aanbiedingspagina. Bij vastgoedportalen met duizenden aanbiedingen genereert u het schema server-side vanuit uw aanbiedingsdatabase.
Test elk schema met deze tools:
Vraag na uitrol AI-engines naar uw aanbiedingen:
Als AI niet met specifieke informatie kan antwoorden, is uw schema onvolledig of wordt het niet gecrawld. Controleer of uw pagina indexeerbaar is (geen noindex-tag), de JSON-LD in de gerenderde HTML aanwezig is (niet alleen client-side JS) en uw sitemap de aanbiedingspagina's bevat.
Het checklist-tabblad op deze pagina behandelt elk veld en signaal dat nodig is voor volledige vastgoed-GEO. Werk elke sectie systematisch door. Streef naar 100% voor het basisschema en de adressecties, voeg daarna nabijgelegen context en buursignalen toe voor maximale dekking.
Nabijgelegen POI's, transitdata en buurtcontext handmatig toevoegen aan elke aanbieding is op schaal niet haalbaar. Als u 100+ panden beheert, heeft u automatisering nodig.
De MapAtlas GeoEnrich API neemt een adres of coördinatenpaar en retourneert gestructureerde nabijgelegen context:
De typische workflow voor vastgoedportalen:
additionalProperty-waardenDit proces loopt automatisch voor elke nieuwe aanbieding en kan in batch worden verwerkt voor bestaande voorraad.
Zonder GeoEnrich matcht een aanbieding vragen over het adres en basisspecificaties (slaapkamers, prijs). Met GeoEnrich matcht dezelfde aanbieding vragen over scholen, transit, loopbaarheid, nabijgelegen restaurants, parken, ziekenhuizen en reistijden. Dat is het verschil tussen 5 en 50+ matchende vraagtypes.
Zie de GeoEnrich API-pagina voor implementatiedetails en API-documentatie.
Op grote schaal automatiseren
De MapAtlas GeoEnrich API voegt automatisch coördinaten, nabijgelegen POIs, ov-toegang, buurtcontext en schemaklare geo-data toe aan elke vermelding, één API-aanroep per vermelding, op elke schaal.