Local Business Schema Generator
Generate LocalBusiness JSON-LD to improve visibility in local search and Google Maps
Configure Schema
Article: Blog posts, news articles, guides
Generated Schema
// Fill in the form to generate schema markup
Other Schema Generators
About Local Business Schema Generator
LocalBusiness schema markup is the most important structured data type for businesses with physical locations or those serving customers in specific geographic areas. It communicates your business's name, address, phone number, opening hours, price range, and service area directly to search engines — information that powers local search results, Google Maps listings, and local Knowledge Panels.
Local search is one of the highest-intent search categories — users searching for "near me" or location-specific queries are typically ready to visit or contact a business. LocalBusiness schema ensures your business information is accurate and complete in Google's understanding of your business, improving your chances of appearing in the Local Pack (the map with three business listings shown for local queries) and local organic results.
LocalBusiness schema is also the foundation for advanced local SEO features including business type-specific rich results. Google has over 100 LocalBusiness subtypes — Restaurant, MedicalClinic, LegalService, AutoRepair, Hotel — each with additional schema properties specific to that business type. Choosing the right subtype and including type-specific properties can unlock additional rich result features beyond basic local listings.
LocalBusiness Schema and Local Search Ecosystem
LocalBusiness schema works within a broader local search ecosystem that includes Google Business Profile, Google Maps, and local citation sources. Schema markup provides structured data directly from your website, which Google treats as an authoritative source of your business information. When your schema data matches your Google Business Profile data, you create strong consistency signals that improve local search confidence.
The geo property in LocalBusiness schema — containing latitude and longitude coordinates — is particularly important for location accuracy. It removes any ambiguity about your business's exact location, especially important for businesses in areas with similar addresses or in buildings that might be hard to geocode accurately.
OpeningHoursSpecification is one of the most practically valuable properties in LocalBusiness schema. When correctly implemented, your opening hours can appear directly in search results and Google Maps, reducing the friction for customers trying to find out if you're open. This real-time information display requires keeping hours synchronized between your schema, Google Business Profile, and your website's visible hours content.
Key Considerations
NAP Consistency
Name, Address, and Phone number (NAP) in your LocalBusiness schema must be identical to your Google Business Profile and all local citation sources. Even minor inconsistencies — abbreviating Street to St, different phone number formats — can reduce local search ranking signals. Use the exact same format everywhere.
Opening Hours Accuracy
OpeningHoursSpecification must reflect your actual current hours including holiday hours and seasonal variations. Inaccurate hours in schema that contradict your Google Business Profile or physical signage harm customer trust and local ranking signals. Update hours immediately when they change.
Choose the Right Subtype
LocalBusiness has over 100 subtypes — Restaurant, MedicalClinic, LegalService, Hotel, AutoRepair. Using the most specific applicable subtype unlocks additional type-specific properties and may improve relevance for category-specific searches. Check schema.org/LocalBusiness for the full subtype list.
AggregateRating for Local Trust
Including AggregateRating in LocalBusiness schema can surface star ratings in local search results. These ratings must reflect genuine customer reviews — fabricated ratings violate Google's policies. Ratings from your Google Business Profile reviews can be surfaced, but the schema data must be accurate and up-to-date.
Common LocalBusiness Issues
NAP Inconsistency
- •Business name in schema different from Google Business Profile name
- •Address format inconsistent across schema, GBP, and citations
- •Phone number format different between schema and other local listings
- •Multiple address formats used across different pages of the site
Hours and Availability
- •Opening hours not updated after schedule changes
- •Holiday hours not reflected in schema
- •Missing closes property for businesses that close at specific times
- •validFrom and validThrough dates not set for special hours
Schema Implementation
- •LocalBusiness schema on every page instead of location-specific pages
- •Missing geo coordinates — ambiguous location data
- •Wrong LocalBusiness subtype used for the business category
- •Schema not matching visible contact information on the page
Implementation Guide
Complete LocalBusiness JSON-LD Schema
Full LocalBusiness schema with all recommended local SEO properties:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://www.example.com/#localbusiness",
"name": "Example Agency",
"description": "Full-service digital marketing agency specialising in SEO and web development.",
"url": "https://www.example.com",
"telephone": "+1-555-123-4567",
"email": "hello@example.com",
"priceRange": "$$",
"image": "https://www.example.com/images/storefront.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94105",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.7749,
"longitude": -122.4194
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "14:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "124",
"bestRating": "5"
},
"sameAs": [
"https://www.google.com/maps?cid=YOUR_GOOGLE_MAPS_CID",
"https://www.facebook.com/example",
"https://www.linkedin.com/company/example"
]
}
</script>Restaurant Subtype Schema
LocalBusiness subtype example for restaurants with additional type-specific properties:
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "The Example Kitchen",
"servesCuisine": ["Italian", "Mediterranean"],
"hasMenu": "https://www.example.com/menu",
"acceptsReservations": "True",
"priceRange": "$$$",
"address": { ... },
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Tuesday", "Wednesday", "Thursday"],
"opens": "17:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday", "Saturday"],
"opens": "12:00",
"closes": "23:00"
}
],
"menu": {
"@type": "Menu",
"hasMenuSection": [
{
"@type": "MenuSection",
"name": "Pasta",
"hasMenuItem": [
{
"@type": "MenuItem",
"name": "Spaghetti Carbonara",
"offers": { "@type": "Offer", "price": "18", "priceCurrency": "USD" }
}
]
}
]
}
}Multi-Location Business Schema
Handle multiple business locations with separate LocalBusiness schemas:
// For businesses with multiple locations,
// create separate LocalBusiness schema on each location page
// app/locations/san-francisco/page.tsx
const sfLocationSchema = {
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://www.example.com/locations/san-francisco#location",
"name": "Example Agency – San Francisco",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Market Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94105",
},
// ... SF-specific hours, phone, etc.
"parentOrganization": {
"@type": "Organization",
"@id": "https://www.example.com/#organization"
// References your main Organization schema
}
};
// app/locations/new-york/page.tsx
const nyLocationSchema = {
"@type": "LocalBusiness",
"@id": "https://www.example.com/locations/new-york#location",
"name": "Example Agency – New York",
// ... NY-specific data
};Common Use Cases
- Restaurants, cafes, and food service businesses targeting local search
- Medical and healthcare practices improving local patient discovery
- Law firms and professional services targeting city-specific searches
- Retail stores and boutiques wanting local pack visibility
- Service businesses (plumbers, electricians) targeting near-me searches
Pro Tip
Keep your LocalBusiness schema synchronized with your Google Business Profile by auditing both simultaneously whenever you make changes. Set a quarterly calendar reminder to verify that NAP data, opening hours, and service area information match across your schema, GBP, and all major citation sources (Yelp, Yellow Pages, industry directories). Consistency across all these sources is one of the most important local ranking factors.