What Is Local Schema Markup?
Local schema markup is structured data you add to your website's HTML that explicitly tells search engines about your business's physical presence. Instead of Google guessing your address from page text, schema provides it in a standardized format that's unambiguous.
The most common type is LocalBusiness schema (or a more specific subtype like Restaurant, Dentist, or Store), implemented as JSON-LD in your page's <head> section.
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Example Coffee Roasters",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97201"
},
"telephone": "+1-503-555-0100",
"openingHours": "Mo-Fr 07:00-18:00, Sa 08:00-16:00",
"geo": {
"@type": "GeoCoordinates",
"latitude": 45.5152,
"longitude": -122.6784
}
}
Why Local Schema Matters for SEO
Rich Results in Local Search
Businesses with proper local schema can appear in Google's local pack (the map + 3 listings), knowledge panels, and rich snippets showing hours, ratings, and price ranges. These enhanced displays significantly increase click-through rates.
Disambiguation for Multi-Location Businesses
If you have 50 locations, Google needs to know which page represents which store. Without schema, it relies on messy text parsing. With schema, each location page explicitly declares its address and service area—eliminating confusion.
Google Maps and Google Business Profile Alignment
Local schema reinforces the data in your Google Business Profile. When your website schema, GBP listing, and directory citations all agree, Google trusts your NAP consistency more and ranks you higher in local results.
Required and Recommended Properties
| Property | Required? | Description |
|---|---|---|
@type | Yes | LocalBusiness or a specific subtype |
name | Yes | Official business name (must match GBP) |
address | Yes | Full postal address with street, city, state, zip |
telephone | Recommended | Local phone number with country code |
openingHours | Recommended | Days and hours in ISO format |
geo | Recommended | Latitude/longitude coordinates |
url | Recommended | URL of the location-specific page |
image | Recommended | Photo of the storefront or business |
priceRange | Optional | Price indicator ($, $$, $$$, $$$$) |
aggregateRating | Optional | Average review score with count |
areaServed | Optional | Service area if different from address |
Implementation for Common Scenarios
Single-Location Business
Add the JSON-LD to your homepage and any dedicated "About" or "Contact" page. One location = one schema block.
Multi-Location Business
Create a dedicated page per location (/locations/portland, /locations/seattle). Each page gets its own schema block with unique address, phone, hours, and coordinates. Do not put all locations in a single schema block on one page.
Service-Area Business (No Storefront)
If you serve customers at their location (plumber, locksmith), use ServiceAreaBusiness instead and define areaServed:
{
"@type": "Plumber",
"areaServed": {
"@type": "City",
"name": "Portland"
}
}
Validation and Testing
Google Rich Results Test
Paste your URL into Google's Rich Results Test to see if your schema is valid and eligible for rich results.
Common Validation Errors
- Missing
@context: Must include"@context": "https://schema.org" - Wrong
@type: Use the most specific type available (Dentistinstead ofLocalBusiness) - Inconsistent NAP: Address on page doesn't match address in schema markup
- Invalid hours format: Use
Mo-Fr 09:00-17:00, not "Monday to Friday, 9am-5pm"
Common Mistakes
- Copying the same schema across all location pages instead of customizing per location
- Using the generic
LocalBusinesstype when a more specific subtype exists (there are 100+ subtypes) - Adding schema for a location page but not keeping it updated when hours or phone numbers change
- Including schema that contradicts what's visible on the page (Google penalizes this)
- Forgetting the
geoproperty—coordinates help Google place you accurately on Maps
FAQs
Does local schema markup directly improve rankings?
Schema isn't a direct ranking factor, but it enables rich results that dramatically improve CTR. Google has confirmed that structured data helps them understand your content, which indirectly supports better rankings. For local SEO, schema that aligns with your Google Business Profile strengthens your local pack presence.
Which schema type should I use for my business?
Use the most specific subtype from schema.org/LocalBusiness. A dentist should use Dentist, not MedicalBusiness or LocalBusiness. The more specific your type, the more context Google has.
Do I need local schema if I already have a Google Business Profile?
Yes. GBP and website schema serve different purposes. GBP manages your Maps listing. Website schema helps Google connect your web pages to your business entity. Together, they create stronger local signals than either alone.
How often should I update local schema?
Update whenever business details change: new hours, phone number, seasonal schedules, temporary closures. At minimum, audit quarterly to ensure accuracy.
Related Terms
- Local Business Schema — The broader category of structured data for local businesses
- NAP Consistency — Keeping name, address, phone identical across all listings
- Schema Markup — The general practice of adding structured data to web pages