Local Schema Markup
Learn how to implement local schema markup to enhance your local search visibility. Covers LocalBusiness, GeoCoordinates, OpeningHours, and review schema.
Local schema markup is structured data specifically designed for businesses with physical locations or defined service areas. It tells Google exactly where you are, what you do, when you are open, and how customers can reach you. Proper local schema strengthens your local search presence and can trigger enhanced search result features.
- Local schema markup uses structured data to communicate business location, services, hours, and contact information to Google.
- The primary schema type is LocalBusiness (or a more specific subtype like ProfessionalService, Restaurant, etc.).
- Local schema supports Map Pack rankings, Knowledge Panels, and rich results with business details.
- Implement using JSON-LD format in the
<head>or<body>of your pages. - Every location page should have unique local schema with location-specific information.
If you want the full breakdown, continue below.
Essential Local Schema Types
LocalBusiness Schema
The foundation of local structured data:
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "Symaxx",
"description": "Digital agency specialising in web design, SEO, and digital marketing for South African businesses.",
"url": "https://symaxx.co.za",
"telephone": "+27-12-345-6789",
"email": "hello@symaxx.co.za",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Road",
"addressLocality": "Pretoria",
"addressRegion": "Gauteng",
"postalCode": "0001",
"addressCountry": "ZA"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "-25.7479",
"longitude": "28.2293"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"priceRange": "$$",
"image": "https://symaxx.co.za/images/office.jpg",
"sameAs": [
"https://www.facebook.com/symaxx",
"https://www.linkedin.com/company/symaxx"
]
}
Choosing the Right Business Type
Use the most specific subtype available:
| Business Type | Schema Type |
|---|---|
| General service business | ProfessionalService |
| Web/digital agency | ProfessionalService |
| Law firm | LegalService |
| Medical practice | MedicalBusiness |
| Restaurant | Restaurant |
| Auto repair | AutoRepair |
| Real estate | RealEstateAgent |
| Accounting | AccountingService |
| Hair salon | HairSalon |
A more specific type provides clearer signals to Google than the generic LocalBusiness type.
Service Schema
List specific services within your LocalBusiness schema:
{
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Digital Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Web Design",
"description": "Custom website design and development for South African businesses."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "SEO",
"description": "Search engine optimisation to improve organic rankings and traffic."
}
}
]
}
}
AggregateRating Schema
If you have reviews, include aggregate rating data:
{
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "47",
"bestRating": "5",
"worstRating": "1"
}
}
Note: Only include this if you have genuine reviews to back it up. Fake or inflated ratings violate Google's guidelines.
AreaServed Schema
For service-area businesses that travel to customers:
{
"areaServed": [
{
"@type": "City",
"name": "Pretoria"
},
{
"@type": "City",
"name": "Johannesburg"
},
{
"@type": "State",
"name": "Gauteng"
}
]
}
Where to Place Local Schema
Homepage
Full LocalBusiness schema with complete business information, services, and social links.
Location Pages
Location-specific schema with the address, phone, and hours for that specific location:
/web-design/pretoria→ Schema with Pretoria address/web-design/cape-town→ Schema with Cape Town address
Service Pages
Service-specific schema nested within LocalBusiness, highlighting the particular service.
Contact Page
LocalBusiness schema with contact details and a ContactPoint element.
Validation and Testing
Google Rich Results Test
Test your local schema at: search.google.com/test/rich-results
- Paste your URL
- Verify all local schema elements are detected
- Fix any errors or warnings
Schema Markup Validator
Test at: validator.schema.org
- More comprehensive validation
- Catches structural issues the Rich Results Test may miss
Google Search Console
Monitor your structured data in Search Console → Enhancements:
- View valid, warning, and error counts
- Track rich result eligibility
- Identify pages with broken schema
Common Local Schema Mistakes
Wrong business type. Using generic LocalBusiness when a more specific type exists.
Inconsistent NAP. Schema NAP must match your GBP and all citations exactly.
Missing coordinates. GeoCoordinates help Google confirm your exact location — do not omit them.
Fake aggregate ratings. Only include ratings if backed by genuine, verifiable reviews.
Same schema on every page. Location pages need location-specific schema. Do not copy the homepage schema to every page.
Outdated hours. If your hours change, update both your GBP and your schema markup.
Key Takeaways
- Local schema markup communicates business location, services, and contact information to Google in a machine-readable format.
- Use the most specific LocalBusiness subtype for your industry.
- Include address, coordinates, hours, services, area served, and social profiles.
- Each location page needs unique, location-specific schema.
- Validate with Google's Rich Results Test and monitor in Search Console.
Quick Local Schema Checklist
- LocalBusiness schema on homepage with full business details
- Most specific business type selected (not generic LocalBusiness)
- Complete PostalAddress with street, city, region, postal code, country
- GeoCoordinates with accurate latitude and longitude
- OpeningHoursSpecification for all operating days
- Telephone and email included
- Services listed with descriptions
- Social profiles linked via sameAs
- AggregateRating included only if backed by genuine reviews
- Location-specific schema on each location page
- Schema validated with Rich Results Test
- Schema monitored in Search Console Enhancements
Tools & Resources (Coming Soon)
- Schema Markup Generator (Coming soon)
- Local Schema Validator (Coming soon)
- Structured Data Template (Coming soon)
Related SEO Documentation
Was this helpful?