When someone searches for “coffee shop near me,” Google needs to decide which businesses to show. LocalBusiness schema doesn’t guarantee visibility, but it removes ambiguity about what you are, where you’re located, and when you’re open. For Nashville businesses competing in local search, that clarity translates to better local pack performance and richer search appearances.
This guide covers LocalBusiness schema from basic setup through multi-location strategies, with practical implementation examples for different business types.
Why LocalBusiness Schema Matters for Local SEO
Google Business Profile handles the heavy lifting for local search visibility. But your website’s LocalBusiness schema serves complementary purposes that GBP can’t fully address.
Your website provides context GBP doesn’t capture. Service descriptions, staff bios, detailed offerings, and content depth live on your site. LocalBusiness schema helps Google connect that rich content to your local business entity.
Schema enables website-specific rich results. While GBP powers local pack features, your website can earn enhanced display in regular organic results. Opening hours, rating stars (where applicable), and business type information can appear directly under your organic listing.
Cross-validation strengthens signals. When your LocalBusiness schema matches your GBP information exactly, Google has increased confidence in your data accuracy. Discrepancies create uncertainty that can suppress visibility.
| Signal Source | Primary Function | Schema's Role |
|---|---|---|
| Google Business Profile | Local pack rankings, Maps | Validates and extends GBP data |
| Website Content | Organic rankings, authority | Structures business information |
| Citations | Consistency signals | Provides canonical reference |
| LocalBusiness Schema | Entity clarity | Connects all sources definitively |
Choosing the Right Business Type
LocalBusiness is the parent category, but using a more specific subtype improves Google’s understanding. Schema.org defines dozens of LocalBusiness subtypes organized hierarchically.
Restaurant (and subtypes like FastFoodRestaurant, CafeOrCoffeeShop, BarOrPub) unlock food-related features including menu markup and reservation integration.
Store (with subtypes like ClothingStore, HardwareStore, GroceryStore) signals retail operations with products to sell.
MedicalBusiness (covering Dentist, Physician, Hospital, Pharmacy) enables healthcare-specific properties and connects to medical search features.
LegalService (Attorney, Notary) applies to legal practices.
FinancialService (Bank, InsuranceAgency, AccountingService) covers financial businesses.
HomeAndConstructionBusiness (Electrician, Plumber, HVACBusiness, RoofingContractor) fits service providers.
AutomotiveBusiness (AutoRepair, AutoDealer, GasStation) serves vehicle-related businesses.
For a Nashville-based HVAC company, using HVACBusiness rather than generic LocalBusiness tells Google exactly what services to associate with the entity. This specificity influences which queries trigger visibility.
If no specific subtype fits, use LocalBusiness. Using the wrong specific type creates more problems than staying general.
Required Properties for LocalBusiness
Three properties form the foundation of any LocalBusiness schema implementation.
name must exactly match your official business name. This means matching your GBP name, which should match your legal business name as commonly recognized. Adding location modifiers or keywords violates guidelines.
Correct: "name": "Riverside Dental Care"
Incorrect: "name": "Riverside Dental Care - Best Nashville Dentist"
address uses PostalAddress schema:
"address": {
"@type": "PostalAddress",
"streetAddress": "1234 Main Street, Suite 100",
"addressLocality": "Nashville",
"addressRegion": "TN",
"postalCode": "37203",
"addressCountry": "US"
}
Every component should match your GBP listing exactly. Character-for-character consistency matters. If GBP shows “Suite 100” and your schema shows “Ste. 100,” you’ve created a discrepancy.
telephone follows international format with country code:
"telephone": "+1-615-555-0123"
Use your primary local number, typically matching your GBP phone number.
Essential Recommended Properties
Beyond the required minimum, several properties significantly enhance LocalBusiness schema effectiveness.
openingHoursSpecification tells Google and users when you’re open:
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "13:00"
}
]
For businesses closed certain days, simply omit those days from the specification. For 24-hour operation, use "opens": "00:00", "closes": "23:59".
geo provides latitude and longitude coordinates:
"geo": {
"@type": "GeoCoordinates",
"latitude": "36.1627",
"longitude": "-86.7816"
}
Get coordinates from Google Maps or your GBP listing. Accurate geo data helps Google connect your business to location-specific queries.
url points to your website:
"url": "https://www.riversidedental.example.com"
image shows your business visually. Use a high-quality exterior or interior photo that represents your location:
"image": "https://www.example.com/images/storefront.jpg"
priceRange indicates pricing level using dollar signs ($, $$, $$$, $$$$) or descriptive terms:
"priceRange": "$$"
Service Area Business Markup
Not all local businesses serve customers at a physical location. Plumbers, HVAC technicians, landscapers, and other service providers travel to customer locations. These service area businesses (SABs) require modified schema.
For SABs, you can hide the street address (if you don’t serve customers there) while specifying your service area:
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Nashville Pro Plumbing",
"telephone": "+1-615-555-0456",
"areaServed": [
{
"@type": "City",
"name": "Nashville",
"sameAs": "https://en.wikipedia.org/wiki/Nashville,_Tennessee"
},
{
"@type": "City",
"name": "Franklin",
"sameAs": "https://en.wikipedia.org/wiki/Franklin,_Tennessee"
},
{
"@type": "City",
"name": "Brentwood",
"sameAs": "https://en.wikipedia.org/wiki/Brentwood,_Tennessee"
}
],
"url": "https://www.nashvilleproplumbing.example.com"
}
The areaServed property accepts City, State, Country, or more specific GeoShape definitions. For businesses serving specific zip codes or defined service radiuses, GeoCircle can express that:
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": "36.1627",
"longitude": "-86.7816"
},
"geoRadius": "30000"
}
This indicates a 30-kilometer radius around the specified point.
Multi-Location Implementation
Businesses with multiple locations need separate schema for each, and the strategy depends on your site structure.
Separate location pages. If each location has its own URL (example.com/locations/nashville, example.com/locations/franklin), place LocalBusiness schema on each location page with that specific location’s information.
Store locator approach. For businesses with many locations using a store locator, implement LocalBusiness schema dynamically on individual location detail pages rather than trying to list all locations on one page.
Connecting locations to parent organization. Use the parentOrganization property to link locations to your corporate entity:
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Burger Palace - Green Hills",
"parentOrganization": {
"@type": "Organization",
"name": "Burger Palace Inc.",
"url": "https://www.burgerpalace.example.com"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "2000 Green Hills Mall",
"addressLocality": "Nashville",
"addressRegion": "TN",
"postalCode": "37215",
"addressCountry": "US"
}
}
Each location should have unique properties where applicable: different phone numbers, addresses, opening hours, and geo coordinates. Name consistency matters, but location identifiers (neighborhood names, street identifiers) help users distinguish locations.
Special Hours and Temporary Closures
Regular hours represent your standard schedule, but special circumstances need explicit marking.
Holiday hours use OpeningHoursSpecification with specific dates:
"specialOpeningHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"validFrom": "2025-12-24",
"validThrough": "2025-12-24",
"opens": "09:00",
"closes": "15:00"
},
{
"@type": "OpeningHoursSpecification",
"validFrom": "2025-12-25",
"validThrough": "2025-12-25",
"opens": "00:00",
"closes": "00:00"
}
]
The Christmas Day entry with matching opens/closes at “00:00” indicates closed.
Temporary closures for renovations or other reasons should be reflected in both your GBP and schema. Keep these synchronized and remove temporary closure markup once you reopen.
Complete LocalBusiness Example
A full implementation for a Nashville restaurant:
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Southern Table Kitchen",
"image": "https://www.southerntable.example.com/images/restaurant-exterior.jpg",
"url": "https://www.southerntable.example.com",
"telephone": "+1-615-555-0789",
"priceRange": "$$",
"servesCuisine": "Southern American",
"address": {
"@type": "PostalAddress",
"streetAddress": "456 Broadway",
"addressLocality": "Nashville",
"addressRegion": "TN",
"postalCode": "37201",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "36.1622",
"longitude": "-86.7743"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "11:00",
"closes": "21:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday", "Saturday"],
"opens": "11:00",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Sunday",
"opens": "10:00",
"closes": "20:00"
}
],
"menu": "https://www.southerntable.example.com/menu",
"acceptsReservations": "True",
"hasMenu": {
"@type": "Menu",
"hasMenuSection": [
{
"@type": "MenuSection",
"name": "Appetizers"
},
{
"@type": "MenuSection",
"name": "Main Courses"
}
]
},
"sameAs": [
"https://www.facebook.com/southerntablekitchen",
"https://www.instagram.com/southerntablekitchen"
]
}
Validation and GBP Consistency
LocalBusiness schema only works when it aligns with your broader local presence. Before and after implementation:
Audit GBP information. Your Google Business Profile serves as the reference point. Every schema property should match GBP exactly.
Check NAP consistency. Name, Address, Phone across schema, GBP, website content, and major citations must align. Even minor variations (St. vs Street, LLC vs omitted) create issues.
Test with Google’s tools. Rich Results Test validates your schema syntax and structure. But it won’t check consistency with GBP.
Monitor Search Console. After implementation, watch the Local Business enhancement report for errors or warnings.
Common consistency issues to check:
| Property | Schema | GBP Must Match |
|---|---|---|
| Business name | Exact text | Yes |
| Street address | Character-by-character | Yes |
| Phone number | Primary number | Yes |
| Opening hours | Current schedule | Yes |
| Service areas | Claimed areas | Yes |
| Categories | Specific type | Should align with primary category |
Update schema whenever you update GBP. Hours changes for holidays, address changes from relocations, phone number changes: all need simultaneous updates across both platforms.
Sources
- Google Search Central: Local Business Structured Data
https://developers.google.com/search/docs/appearance/structured-data/local-business
- Schema.org: LocalBusiness Type
https://schema.org/LocalBusiness
- Google Business Profile Help Center
https://support.google.com/business
- Schema.org: OpeningHoursSpecification
https://schema.org/OpeningHoursSpecification
Local search features and schema requirements change periodically. Verify current Google documentation for any new properties or altered requirements, particularly for industry-specific LocalBusiness subtypes.