LocalBusiness Schema
Implementing LocalBusiness structured data on your website
LocalBusiness is the core schema type for businesses with a physical location. This guide shows how to implement it properly.
Complete LocalBusiness Example
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Joe's Plumbing Services",
"image": "https://www.joesplumbing.com/images/logo.png",
"url": "https://www.joesplumbing.com",
"telephone": "+1-312-555-1234",
"email": "info@joesplumbing.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street, Suite 100",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60601",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 41.8781,
"longitude": -87.6298
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "14:00"
}
],
"priceRange": "$$",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
},
"sameAs": [
"https://www.facebook.com/joesplumbing",
"https://twitter.com/joesplumbing",
"https://www.yelp.com/biz/joes-plumbing-chicago"
]
}Required Properties
@type
Must be "LocalBusiness" or a more specific subtype.
name
Your official business name, matching GBP exactly.
address
Complete postal address using PostalAddress type.
Recommended Properties
telephone
Phone number in international format: +1-555-123-4567
url
Your website homepage URL.
image
Logo or business image URL.
geo
Latitude and longitude coordinates.
openingHoursSpecification
Business hours in structured format.
priceRange
Price indicator: $, $$, $$$, or $$$$
Address Schema
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street, Suite 100",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60601",
"addressCountry": "US"
}Properties
- streetAddress: Street and suite/unit
- addressLocality: City
- addressRegion: State (use abbreviation)
- postalCode: ZIP code
- addressCountry: Country code
Opening Hours Schema
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}
]Properties
- dayOfWeek: Day(s) these hours apply
- opens: Opening time (24-hour format)
- closes: Closing time (24-hour format)
Closed Days
Don't include days you're closed, or explicitly set with no opens/closes.
Social Profiles (sameAs)
Link to your social profiles:
"sameAs": [
"https://www.facebook.com/yourbusiness",
"https://twitter.com/yourbusiness",
"https://www.linkedin.com/company/yourbusiness",
"https://www.instagram.com/yourbusiness"
]Reviews Schema
If displaying reviews on your site:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
}Note: Only use if you have actual reviews on your website. Don't pull from Google.
Implementation Methods
Manual Addition
Add JSON-LD directly to your HTML:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your Business"
...
}
</script>WordPress Plugins
Popular options:
- Rank Math
- Yoast SEO
- Schema Pro
Page Builders
Many page builders have schema modules built in.
Multi-Location Schema
For businesses with multiple locations:
- Each location page needs its own schema
- Include specific address, phone, hours for each
- Can nest under an Organization with multiple locations
Common Mistakes
Mismatched Information
Schema doesn't match GBP or website = confusion.
Missing Required Fields
Always include name and address minimum.
Fake Reviews
Don't add aggregateRating without actual reviews on your site.
Wrong @type
Use specific subtypes when available (Restaurant, not just LocalBusiness).
Key Takeaways
- Include all recommended properties
- Match GBP information exactly
- Use specific business types when available
- Include geo-coordinates
- Test after implementation