Local business schema generator
Describe a physical business, with address, phone, map pin and opening hours, using the most specific schema.org subtype.
All Google-required properties present. That makes the page eligible, not guaranteed. Google's docs
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Riverside Family Dental",
"url": "https://riversidedental.example",
"telephone": "+1-201-555-0187",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "220 River St",
"addressLocality": "Hoboken",
"addressRegion": "NJ",
"postalCode": "07030",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.7424,
"longitude": -74.0268
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday"
],
"opens": "08:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "08:00",
"closes": "14:00"
}
],
"sameAs": "https://www.facebook.com/riversidedental.example"
}
</script>When to use LocalBusiness markup
- A business with a physical location customers visit, or a service area business.
- The location page of each branch of a chain (one LocalBusiness per page).
- Pair it with a verified Google Business Profile, which is where most local panel data comes from.
Getting it right
- Google requires only name and address, but telephone, url, geo, openingHoursSpecification and priceRange make the entity far more useful.
- Use a specific subtype (Dentist, Restaurant, AutoRepair) instead of LocalBusiness when one fits.
- Enter the phone with country code, e.g. +1-201-555-0187.
- Use five decimal places or more for latitude and longitude.
- For hours use 24-hour time; to mark a day closed, leave it out rather than using 00:00–00:00.
Source: Google Search Central, Local business structured data documentation, and schema.org/LocalBusiness.
Google's property list
| Property | Google says |
|---|---|
name | required |
address | required |
aggregateRating | recommended |
department | recommended |
geo | recommended |
geo.latitude | recommended |
geo.longitude | recommended |
menu | recommended |
openingHoursSpecification | recommended |
priceRange | recommended |
review | recommended |
servesCuisine | recommended |
telephone | recommended |
url | recommended |
Example output
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Riverside Family Dental",
"url": "https://riversidedental.example",
"telephone": "+1-201-555-0187",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "220 River St",
"addressLocality": "Hoboken",
"addressRegion": "NJ",
"postalCode": "07030",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.7424,
"longitude": -74.0268
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday"
],
"opens": "08:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "08:00",
"closes": "14:00"
}
],
"sameAs": "https://www.facebook.com/riversidedental.example"
}Local Business schema questions
Will LocalBusiness markup put me in the map pack?
No. The local pack is driven by Google Business Profile, relevance, distance and prominence. Markup helps Google confirm your details from your own site.
Can I mark up reviews of my own business?
Google does not show review stars for self-serving reviews: reviews a LocalBusiness or Organization hosts about itself. Leave rating fields out on your own site.
What should a multi-location business do?
Give each location its own page with its own LocalBusiness block, and use Organization markup on the home page for the brand.