Local Schema Markup

Learn how to implement local schema markup to enhance your local search visibility. Covers LocalBusiness, GeoCoordinates, OpeningHours, and review schema.

Intermediate8 min readUpdated 04 Mar 2026Bukhosi Moyo

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.

Quick Answer
  • 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?