Lokale schema markup: LocalBusiness, Service en geo-data voor lokale rankings
Google weet dat jouw bedrijf bestaat. Maar begrijpt Google ook wat je doet, waar je zit en wanneer je open bent? Zonder gestructureerde data moet de zoekmachine dat zelf afleiden uit losse tekst op je website. Dat gaat regelmatig mis.
LocalBusiness schema markup lost dat probleem op. Je vertelt Google in een gestandaardiseerd formaat precies welk type bedrijf je hebt, op welk adres, met welke openingstijden en diensten. Het resultaat: je komt in aanmerking voor verrijkte zoekresultaten met sterren, adres en openingstijden. En AI search tools als Gemini en ChatGPT kunnen je bedrijfsgegevens betrouwbaar overnemen in hun antwoorden.
In dit artikel lees je stap voor stap hoe je LocalBusiness schema implementeert. Met copy-paste JSON-LD code die je direct in je website kunt plakken.
Inhoudsopgave
- Waarom LocalBusiness en niet Organization
- Het juiste subtype kiezen
- Verplichte properties
- Belangrijke aanvullende properties
- Service schema: beschrijf wat je verkoopt
- AggregateRating en Review koppelen
- Multi-location: een entity per vestiging
- Volledig JSON-LD voorbeeld
- Validatie: controleer je markup
- Vaak gemaakte fouten
- Actieplan: morgen live
- Bronnen
Waarom LocalBusiness en niet Organization
LocalBusiness en Organization zijn twee verschillende schema-types, en de keuze ertussen bepaalt wat Google met je gegevens doet. Organization beschrijft een entiteit zonder fysieke locatie: een holding, een merk, een stichting. LocalBusiness beschrijft een bedrijf waar klanten langskomen of dat een bepaald servicegebied bedient.
Het verschil is concreet. Organization ondersteunt geen openingstijden, geen geo-coordinaten en geen priceRange. LocalBusiness wel. Als jij een fysiek bedrijf runt met een adres en openingstijden, is Organization het verkeerde type. Je laat dan informatie op tafel liggen die Google nodig heeft om je in het Local Pack te tonen.
Technisch gezien is LocalBusiness een subtype van zowel Organization als Place. Het erft properties van beide: bedrijfsinformatie (logo, contactgegevens) plus locatie-informatie (adres, coordinaten, kaart). Die combinatie is precies wat Google nodig heeft voor lokale zoekresultaten.
| Eigenschap | Organization | LocalBusiness |
|---|---|---|
| name, logo, url | Ja | Ja |
| address (PostalAddress) | Ja | Ja |
| openingHoursSpecification | Nee | Ja |
| geo (lat/long) | Nee | Ja |
| priceRange | Nee | Ja |
| hasMap | Nee | Ja |
| paymentAccepted | Nee | Ja |
| areaServed | Ja | Ja |
| Geschikt voor Local Pack | Nee | Ja |
Gebruik Organization alleen als je geen fysieke vestiging hebt en geen servicegebied bedient. In alle andere gevallen kies je LocalBusiness, of nog beter: een specifiek subtype.
Het juiste subtype kiezen
Schema.org definieert meer dan 100 subtypes onder LocalBusiness. Een subtype is specifieker dan LocalBusiness en geeft Google meer context. Een tandartspraktijk die het type "Dentist" gebruikt, vertelt Google niet alleen "dit is een lokaal bedrijf" maar ook "dit is een tandarts". Dat helpt bij relevantie voor zoekopdrachten als "tandarts houten" of "tandarts in de buurt".
Kies altijd het meest specifieke subtype dat past bij je bedrijf. Hier zijn de meest gebruikte subtypes voor het Nederlandse MKB:
Zorg en welzijn
Dentist(tandarts)Physician(huisarts, specialist)Pharmacy(apotheek)Optician(opticien)Physiotherapist(fysiotherapeut, niet officieel schema.org, gebruikMedicalBusinessofHealthAndBeautyBusiness)
Horeca
Restaurant,CafeOrCoffeeShop,BarOrPub,Bakery,FastFoodRestaurant
Dienstverlening
Plumber(loodgieter),Electrician(elektricien),RoofingContractor(dakdekker)HVACBusiness(installateur),LocksmithService(slotenmaker),AutoRepair(garage)
Verzorging en lifestyle
HairSalon(kapsalon),BeautySalon(schoonheidssalon),DaySpa,TattooParlor
Retail en overig
Store(winkel),HardwareStore(bouwmarkt),PetStore(dierenwinkel)RealEstateAgent(makelaar),LegalService(advocaat/notaris),AccountingService(accountant)FinancialService(financieel adviseur),InsuranceAgency(verzekeraar)
Kun je geen passend subtype vinden? Gebruik dan LocalBusiness als fallback. Dat is beter dan een subtype dat niet klopt. De volledige lijst staat op schema.org/LocalBusiness onder "More specific Types".
Verplichte properties
Google vereist minimaal drie properties voor LocalBusiness: name, address en telephone of url. Zonder deze drie neemt Google je markup niet serieus. Voeg daar openingHoursSpecification en geo aan toe, want die zijn sterk aanbevolen en maken het verschil voor het Local Pack.
name
De naam van je bedrijf, exact zoals die op je Google Business Profile staat en op je gevel. Geen toevoegingen als "Beste tandarts van Houten" of "Tandartspraktijk Voorbeeld, nummer 1 in mondzorg". Gewoon de bedrijfsnaam.
address (PostalAddress)
Je adres als genest object met streetAddress, addressLocality, postalCode en addressCountry. Gebruik dezelfde schrijfwijze als op je Google Business Profile. Consistentie is cruciaal voor NAP-signalen.
telephone
Je telefoonnummer in internationaal formaat: +31 30 123 4567. Niet "030-1234567" of "tel: 030 123 4567". Het internationale formaat is eenduidig en voorkomt parsingfouten.
openingHoursSpecification
Een array met per dag de openingstijden. Gebruik het 24-uurs formaat. Dagen waarop je gesloten bent, laat je weg of geef je expliciet aan.
geo (GeoCoordinates)
De latitude en longitude van je vestiging. Dit is het sterkste locatiesignaal dat je kunt meegeven. Google gebruikt het om te bepalen hoe dicht je bij de zoeker zit. Je vindt de coordinaten door je adres op te zoeken in Google Maps en de getallen uit de URL te kopieren.
Hier is een minimaal voorbeeld met alle verplichte en sterk aanbevolen properties:
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://www.tandartspraktijkvoorbeeld.nl/#dentist",
"name": "Tandartspraktijk Voorbeeld",
"url": "https://www.tandartspraktijkvoorbeeld.nl",
"telephone": "+31 30 123 4567",
"address": {
"@type": "PostalAddress",
"streetAddress": "Dorpsstraat 42",
"addressLocality": "Houten",
"postalCode": "3991 AA",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.0284,
"longitude": 5.1686
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "08:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "08:00",
"closes": "13:00"
}
]
}
Dit blok plak je in een <script type="application/ld+json"> tag in de <head> van je website. De meeste CMS'en (WordPress, Shopify, Wix) hebben hier een invoerveld voor, of je kunt een plugin gebruiken.
Belangrijke aanvullende properties
De verplichte properties zijn het fundament. De aanvullende properties maken je markup compleet en verhogen de kans op verrijkte zoekresultaten.
image en logo
image is een foto van je bedrijf (gevel, interieur). logo is je bedrijfslogo. Gebruik volledige URL's, geen relatieve paden. Minimaal 112x112 pixels voor het logo, bij voorkeur vierkant.
priceRange
Een indicatie van je prijsniveau, uitgedrukt in euro-tekens: "€" (goedkoop), "€€" (gemiddeld), "€€€" (duur) of "€€€€" (zeer duur). Google gebruikt dit niet voor ranking, maar het kan verschijnen in zoekresultaten en helpt gebruikers bij hun keuze.
paymentAccepted
Welke betaalmethoden je accepteert: "Cash, Credit Card, iDEAL, PIN". Relevant voor klanten die willen weten of ze met pin kunnen betalen.
hasMap
Een link naar je locatie op Google Maps. Gebruik het volledige Google Maps URL-formaat. Dit versterkt de koppeling tussen je website en je Maps-vermelding.
areaServed
Het gebied dat je bedient. Bijzonder nuttig voor dienstverleners die op locatie werken (loodgieters, elektriciens, schoonmakers). Je kunt een stad, provincie of meerdere plaatsen opgeven.
{
"areaServed": [
{
"@type": "City",
"name": "Houten"
},
{
"@type": "City",
"name": "Utrecht"
},
{
"@type": "City",
"name": "Nieuwegein"
}
]
}
sameAs
Links naar je profielen op andere platforms: Facebook, Instagram, LinkedIn, KvK-pagina. Dit helpt Google om al je online aanwezigheid aan een entiteit te koppelen.
{
"sameAs": [
"https://www.facebook.com/tandartspraktijkvoorbeeld",
"https://www.instagram.com/tandartspraktijkvoorbeeld",
"https://www.linkedin.com/company/tandartspraktijkvoorbeeld"
]
}
Service schema: beschrijf wat je verkoopt
LocalBusiness vertelt Google wie je bent en waar je zit. Service schema vertelt Google wat je aanbiedt. Door hasOfferCatalog of makesOffer te gebruiken, koppel je concrete diensten aan je bedrijf.
Dit is relevant omdat Google steeds vaker diensten toont in zoekresultaten. Als iemand zoekt op "implantaat tandarts houten", wil Google weten welke tandartsen in Houten implantologie als dienst aanbieden. Zonder Service schema moet Google dat raden uit je paginatekst.
{
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Tandheelkundige behandelingen",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Periodieke controle",
"description": "Halfjaarlijkse controle inclusief gebitsreiniging"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Implantologie",
"description": "Plaatsing van tandimplantaten ter vervanging van ontbrekende tanden"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Orthodontie",
"description": "Correctie van tandstand met beugels en aligners"
}
}
]
}
}
Zorg dat de dienstnamen overeenkomen met de diensten op je website en in je Google Business Profile. Consistentie tussen deze drie bronnen (schema, website, GBP) is een sterk signaal voor Google.
AggregateRating en Review koppelen
Reviews zijn een van de sterkste lokale ranking signalen. Door een aggregateRating aan je LocalBusiness schema te koppelen, maak je je gemiddelde beoordeling machine-leesbaar. Google kan dit gebruiken om sterren te tonen in zoekresultaten.
{
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
}
}
Hier gelden strenge regels. De ratingValue en reviewCount moeten exact overeenkomen met de werkelijke reviews die zichtbaar zijn op je website. Google vergelijkt je schema met je zichtbare content. Als je schema zegt "4.8 sterren op basis van 127 reviews" maar er staan geen reviews op je pagina, beschouwt Google dat als misleidende markup. In het ergste geval krijg je een manual action en verlies je al je rich results.
Gebruik deze markup alleen als je daadwerkelijk reviews op je website toont. Reviews van Google embedden op je site en die reviewdata in je schema opnemen is een gangbare aanpak.
Je kunt ook individuele reviews markeren met het Review type:
{
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Maria de Vries"
},
"datePublished": "2026-03-15",
"reviewBody": "Heel tevreden over de implantaatbehandeling. Goede uitleg vooraf en pijnloos verloop.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
}
}
]
}
Multi-location: een entity per vestiging
Heb je meerdere vestigingen? Dan krijgt elke vestiging een eigen LocalBusiness entity met een unieke @id. Maak niet een LocalBusiness met meerdere adressen. Dat is technisch niet correct en Google kan het niet goed verwerken.
Elke vestiging heeft eigen openingstijden, eigen geo-coordinaten, een eigen telefoonnummer en bij voorkeur een eigen pagina op je website. De @id moet uniek zijn per locatie.
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://www.tandartspraktijkvoorbeeld.nl/houten/#dentist",
"name": "Tandartspraktijk Voorbeeld - Houten",
"url": "https://www.tandartspraktijkvoorbeeld.nl/houten/",
"telephone": "+31 30 123 4567",
"address": {
"@type": "PostalAddress",
"streetAddress": "Dorpsstraat 42",
"addressLocality": "Houten",
"postalCode": "3991 AA",
"addressCountry": "NL"
}
}
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://www.tandartspraktijkvoorbeeld.nl/utrecht/#dentist",
"name": "Tandartspraktijk Voorbeeld - Utrecht",
"url": "https://www.tandartspraktijkvoorbeeld.nl/utrecht/",
"telephone": "+31 30 765 4321",
"address": {
"@type": "PostalAddress",
"streetAddress": "Oudegracht 115",
"addressLocality": "Utrecht",
"postalCode": "3511 AE",
"addressCountry": "NL"
}
}
Je kunt de vestigingen koppelen aan een overkoepelende Organization via de parentOrganization property. Dat maakt de hiërarchie duidelijk: een moederbedrijf met meerdere lokale vestigingen.
{
"parentOrganization": {
"@type": "Organization",
"@id": "https://www.tandartspraktijkvoorbeeld.nl/#organization",
"name": "Tandartspraktijk Voorbeeld"
}
}
Volledig JSON-LD voorbeeld
Hieronder staat een compleet, copy-paste-baar voorbeeld voor een fictieve tandartspraktijk. Dit voorbeeld combineert alle properties uit de vorige secties in een enkel JSON-LD blok.
Plak dit in een <script type="application/ld+json"> tag in de <head> van je homepage. Pas de waarden aan naar je eigen bedrijfsgegevens.
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://www.tandartspraktijkvoorbeeld.nl/#dentist",
"name": "Tandartspraktijk Voorbeeld",
"url": "https://www.tandartspraktijkvoorbeeld.nl",
"telephone": "+31 30 123 4567",
"email": "info@tandartspraktijkvoorbeeld.nl",
"image": "https://www.tandartspraktijkvoorbeeld.nl/images/praktijk-buiten.jpg",
"logo": "https://www.tandartspraktijkvoorbeeld.nl/images/logo.png",
"priceRange": "€€",
"paymentAccepted": "Cash, PIN, Credit Card",
"currenciesAccepted": "EUR",
"address": {
"@type": "PostalAddress",
"streetAddress": "Dorpsstraat 42",
"addressLocality": "Houten",
"postalCode": "3991 AA",
"addressRegion": "Utrecht",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.0284,
"longitude": 5.1686
},
"hasMap": "https://www.google.com/maps?cid=1234567890",
"areaServed": [
{
"@type": "City",
"name": "Houten"
},
{
"@type": "City",
"name": "Utrecht"
},
{
"@type": "City",
"name": "Nieuwegein"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "08:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "08:00",
"closes": "13:00"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Tandheelkundige behandelingen",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Periodieke controle",
"description": "Halfjaarlijkse controle inclusief gebitsreiniging"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Implantologie",
"description": "Plaatsing van tandimplantaten ter vervanging van ontbrekende tanden"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Orthodontie",
"description": "Correctie van tandstand met beugels en aligners"
}
}
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
},
"sameAs": [
"https://www.facebook.com/tandartspraktijkvoorbeeld",
"https://www.instagram.com/tandartspraktijkvoorbeeld"
]
}
Je vult dit een keer in en past het alleen aan als er iets verandert aan je bedrijf.
Validatie: controleer je markup
Markup die syntaxfouten bevat, wordt door Google genegeerd. Valideer je JSON-LD daarom altijd voor je het live zet. Gebruik twee tools naast elkaar.
Schema Markup Validator (validator.schema.org) controleert of je markup voldoet aan de schema.org specificatie: correcte nesting, juiste types, missende verplichte velden.
Google Rich Results Test (search.google.com/test/rich-results) controleert of je markup in aanmerking komt voor verrijkte zoekresultaten in Google. Het toont welke rich result types Google herkent en of er waarschuwingen zijn.
Gebruik beide. Valideer zowel met een code-snippet als met je live URL nadat je de markup hebt geplaatst.
| Tool | Wat het controleert | URL |
|---|---|---|
| Schema Markup Validator | Technische correctheid volgens schema.org | validator.schema.org |
| Google Rich Results Test | Geschiktheid voor Google rich results | search.google.com/test/rich-results |
Na validatie duurt het doorgaans enkele dagen tot weken voordat Google je markup oppikt en verwerkt. Je kunt het proces versnellen door je pagina opnieuw te laten indexeren via Google Search Console.
Vaak gemaakte fouten
Fouten in schema markup kunnen je meer schaden dan geen markup hebben. Dit zijn de meest voorkomende fouten.
Fictieve ratings in schema. Je voegt een aggregateRating van 4.9 sterren toe, maar er staan geen reviews op je website. Google detecteert dit en kan een manual action opleggen. Gebruik aggregateRating alleen als de reviews daadwerkelijk zichtbaar zijn op de pagina.
Schema wijkt af van zichtbare content. Je openingstijden in schema zeggen maandag-vrijdag 9-17, maar op je website staat maandag-zaterdag 8-18. Inconsistentie tussen schema en zichtbare content ondermijnt het vertrouwen dat Google in je markup heeft. Houd schema en zichtbare content altijd gesynchroniseerd.
Verkeerd type gekozen. Een accountantskantoor dat FinancialService gebruikt in plaats van AccountingService. Kies het meest specifieke subtype. Raadpleeg de schema.org documentatie als je twijfelt.
Meerdere adressen in een entity. Je hebt drie vestigingen en stopt alle drie de adressen in een enkel LocalBusiness object. Google kan dan niet bepalen welk adres bij welke locatie hoort. Maak een aparte entity per vestiging.
Ontbrekende geo-coordinaten. Adres zonder latitude en longitude is een gemiste kans. De geo property is het directe signaal voor nabijheidsbepaling. Zonder coordinaten leunt Google volledig op adres-geocoding, wat minder precies is.
JSON-syntax fouten. Een vergeten komma, een extra accolade, ontbrekende aanhalingstekens. Het hele blok wordt dan niet geparsed. Valideer altijd voor je live gaat.
Schema op de verkeerde pagina. LocalBusiness schema hoort op je homepage of vestigingspagina. Niet op blogposts of je privacy policy.
Actieplan: morgen live
Lokale schema markup hoeft je geen dagen te kosten. Met het volgende plan heb je werkende markup binnen een uur.
-
Bepaal je subtype. Zoek in de lijst hierboven of op schema.org welk type het best bij je bedrijf past. Twijfel je? Kies
LocalBusiness. -
Kopieer het volledige voorbeeld. Pak het JSON-LD voorbeeld uit dit artikel en pas alle waarden aan naar je eigen bedrijfsgegevens.
-
Vind je geo-coordinaten. Zoek je adres op Google Maps. De latitude en longitude staan in de URL na het @-teken. Kopieer ze naar je
geoproperty. -
Voeg je diensten toe. Lijst je drie tot vijf belangrijkste diensten op in
hasOfferCatalog. Gebruik dezelfde benamingen als op je website en in je Google Business Profile. -
Plak de code in je website. In WordPress: gebruik een plugin als Rank Math of Yoast die JSON-LD velden biedt. In een custom site: plak het
<script type="application/ld+json">blok in de<head>van je homepage. -
Valideer. Test je code in de Schema Markup Validator en de Google Rich Results Test. Los eventuele fouten op.
-
Dien je URL opnieuw in. Ga naar Google Search Console, voer je homepage-URL in en klik op "Indexering aanvragen". Dit versnelt het oppikken van je nieuwe markup.
-
Controleer na twee weken. Bekijk in Google Search Console onder "Verbeteringen" of Google je markup heeft verwerkt en of er waarschuwingen zijn.
Wil je meer leren over schema markup voor andere toepassingen? Of eerst je Google Business Profile optimaliseren? Voor de meeste MKB-bedrijven is de grootste winst de combinatie van een compleet GBP-profiel, actief reviews verzamelen en correcte LocalBusiness markup.
Bronnen
Hoe scoort jouw bedrijf?
Vraag een gratis AI Visibility Snapshot aan: 1 pagina, geen verplichtingen.
Vraag een Snapshot aan →