Local SEO Schema is a set of Schema.org structured data dedicated to local businesses. Proper implementation helps Google better understand your business and can improve visibility in local results, Google Maps, and Knowledge Panel.
Why is Local SEO Schema Important?
Structured data for local businesses:
- Helps Google verify business information
- Supports display in Local Pack (3-pack)
- Can improve Knowledge Panel
- Facilitates synchronization with Google Business Profile
- Increases chances of rich results
Basic Types for Local Businesses
LocalBusiness and Subtypes
LocalBusiness is the general type for local businesses. Schema.org defines dozens of subtypes for specific industries:
| Subtype | Industry |
|---|---|
Restaurant | Restaurants |
Store | Retail stores |
MedicalBusiness | Medical services |
LegalService | Legal services |
FinancialService | Financial services |
RealEstateAgent | Real estate agencies |
AutoRepair | Auto repair shops |
BeautySalon | Beauty salons |
Dentist | Dentists |
Plumber | Plumbers |
Always use the most specific type that matches your business.
Basic LocalBusiness Implementation
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "ACME Digital Marketing",
"description": "Professional digital marketing agency offering SEO, web design, and content marketing services.",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"image": "https://example.com/office.jpg",
"telephone": "+1-555-123-4567",
"email": "[email protected]",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street, Suite 100",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10001",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.7128,
"longitude": -74.0060
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:00"
}
],
"priceRange": "$$",
"sameAs": [
"https://www.facebook.com/acmedigital",
"https://www.linkedin.com/company/acmedigital",
"https://twitter.com/acmedigital"
]
}
Address (PostalAddress)
Full Address Specification
{
"@type": "PostalAddress",
"streetAddress": "123 Main Street, Suite 100",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10001",
"addressCountry": "US"
}
Address Fields
| Field | Description | Example |
|---|---|---|
streetAddress | Street and number | ”123 Main Street, Suite 100” |
addressLocality | City | ”New York” |
addressRegion | State/Province | ”NY” |
postalCode | Postal code | ”10001” |
addressCountry | Country (ISO 3166-1) | “US” |
Opening Hours (OpeningHoursSpecification)
Standard Hours (Mon-Fri)
{
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:00"
}
]
}
Different Hours for Different Days
{
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "09:00",
"closes": "16:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "14:00"
}
]
}
Business Open 24/7
{
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"
],
"opens": "00:00",
"closes": "23:59"
}
}
Special Days (Holidays)
{
"specialOpeningHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"validFrom": "2026-12-24",
"validThrough": "2026-12-24",
"opens": "09:00",
"closes": "13:00"
},
{
"@type": "OpeningHoursSpecification",
"validFrom": "2026-12-25",
"validThrough": "2026-12-26",
"opens": "00:00",
"closes": "00:00"
}
]
}
Geolocation (GeoCoordinates)
Basic Geolocation
{
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.7128,
"longitude": -74.0060
}
}
How to Get Coordinates?
-
Google Maps:
- Find the location
- Right-click
- Select coordinates (copies to clipboard)
-
Google My Business:
- Check in GMB panel
Service Area (areaServed)
For businesses providing services in a specific area:
Serving Multiple Cities
{
"@type": "LocalBusiness",
"name": "NYC Plumbing Services",
"areaServed": [
{
"@type": "City",
"name": "New York"
},
{
"@type": "City",
"name": "Brooklyn"
},
{
"@type": "City",
"name": "Queens"
}
]
}
Serving a State
{
"areaServed": {
"@type": "State",
"name": "New York"
}
}
Full Implementation for Restaurant
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "The Italian Kitchen",
"description": "Authentic Italian cuisine in a modern setting.",
"url": "https://italiankitchen.com",
"image": "https://italiankitchen.com/images/exterior.jpg",
"telephone": "+1-555-987-6543",
"address": {
"@type": "PostalAddress",
"streetAddress": "456 Broadway",
"addressLocality": "New York",
"postalCode": "10012",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.7235,
"longitude": -73.9982
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "12:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday", "Saturday"],
"opens": "12:00",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Sunday",
"opens": "12:00",
"closes": "20:00"
}
],
"priceRange": "$$",
"servesCuisine": ["Italian", "Mediterranean"],
"menu": "https://italiankitchen.com/menu",
"acceptsReservations": "True",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "328",
"bestRating": "5"
}
}
Implementation for Store
{
"@context": "https://schema.org",
"@type": "Store",
"name": "TechWorld Electronics",
"description": "Electronics store. Phones, laptops, accessories.",
"url": "https://techworld.com",
"telephone": "+1-555-666-7788",
"address": {
"@type": "PostalAddress",
"streetAddress": "789 Tech Avenue",
"addressLocality": "San Francisco",
"postalCode": "94102",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.7749,
"longitude": -122.4194
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "10:00",
"closes": "20:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "18:00"
}
],
"priceRange": "$$",
"paymentAccepted": ["Cash", "Credit Card", "Apple Pay", "Google Pay"],
"currenciesAccepted": "USD"
}
Multiple Locations
If you have multiple branches, create separate Schema for each:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "TechWorld",
"url": "https://example.com",
"logo": "https://example.com/logo.png"
},
{
"@type": "Store",
"name": "TechWorld New York",
"parentOrganization": { "@id": "https://example.com/#organization" },
"address": {
"@type": "PostalAddress",
"addressLocality": "New York"
}
},
{
"@type": "Store",
"name": "TechWorld Los Angeles",
"parentOrganization": { "@id": "https://example.com/#organization" },
"address": {
"@type": "PostalAddress",
"addressLocality": "Los Angeles"
}
}
]
}
Synchronization with Google Business Profile
Make sure Schema data is identical to Google Business Profile data:
- Business name - exactly the same
- Address - same format
- Phone - same number
- Opening hours - synchronized
- Categories - matching Schema types
Discrepancies can reduce Google’s trust in your data.
Testing Local Schema
Rich Results Test
https://search.google.com/test/rich-results
Schema Markup Validator
Summary
Local SEO Schema is an important element of local SEO strategy:
- Choose the right type - most specific for your industry
- NAP data - consistent with Google Business Profile
- Geolocation - accurate coordinates
- Opening hours - current and complete
- areaServed - for service area businesses
Proper implementation supports visibility in Local Pack, Google Maps, and Knowledge Panel.
Frequently Asked Questions
What structured data should a local business have?
At minimum, use LocalBusiness (or a more specific type like Restaurant, Dentist) with fields: name, address, telephone, openingHoursSpecification, geo (coordinates), url, and image. Add aggregateRating if you have reviews.
How do I implement LocalBusiness Schema in JSON-LD?
Add a <script type="application/ld+json"> tag in your page head with a @type: LocalBusiness object. Fill in all required fields (name, address, phone, opening hours). Validate with the Rich Results Test.
Does Local SEO Schema help with Google Maps visibility?
LocalBusiness Schema does not directly affect Google Maps — you need a Google Business Profile for that. However, correct structured data on your site helps Google connect your website to your Maps profile and can boost visibility in local organic results.
Do I need separate Schema for each business location?
Yes, if you have multiple locations, each should have a dedicated page with its own LocalBusiness Schema containing unique data (address, phone, opening hours). Do not put multiple locations in a single schema.
Sources
-
Schema.org - LocalBusiness https://schema.org/LocalBusiness
-
Google Search Central - Local business structured data https://developers.google.com/search/docs/appearance/structured-data/local-business
-
Schema.org - OpeningHoursSpecification https://schema.org/OpeningHoursSpecification
-
Schema.org - GeoCoordinates https://schema.org/GeoCoordinates
-
Google Business Profile Help https://support.google.com/business



