LocalBusiness Schema
Session 2.6 · ~5 min read
If your business has a physical location that customers visit, or if you serve a specific geographic area, LocalBusiness is more accurate than Organization. It inherits everything from Organization and adds location-specific properties that are critical for local search: geo coordinates, opening hours, price range, and area served.
Google treats LocalBusiness as a strong signal for local pack results, map listings, and location-based Knowledge Panels. For businesses that depend on local visibility, this is not optional.
LocalBusiness vs. Organization
The decision between Organization and LocalBusiness is straightforward:
| Criteria | Use Organization | Use LocalBusiness |
|---|---|---|
| Physical location? | No storefront or office | Yes, customers can visit |
| Service area? | Nationwide or global, no local focus | Specific city, region, or district |
| Operating hours? | Not applicable | Yes, defined business hours |
| Google Maps listing? | No | Yes, via Google Business Profile |
| Local pack eligibility? | No | Yes |
Many businesses fall into a gray area. A consulting firm that operates from an office but primarily serves clients remotely might use either. The test: does your Google Business Profile exist and is it actively managed? If yes, use LocalBusiness (or a more specific subtype).
LocalBusiness Subtypes
LocalBusiness has many children in the Schema.org hierarchy. Use the most specific one that fits:
Location-Specific Properties
geo (GeoCoordinates)
Latitude and longitude of your business location. This is what ties your structured data to a point on the map. Get these from Google Maps: right-click your location, copy the coordinates.
openingHoursSpecification
Do not use the simple openingHours text property. Use openingHoursSpecification with an array of OpeningHoursSpecification objects. This is more precise and allows you to specify different hours for different days.
priceRange
A simple string like "$", "$$", "$$$", or "$$$$". Google uses this for display in local results. It is a rough indicator, not a precise price list.
Complete Example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"@id": "https://www.example.com/#localbusiness",
"name": "Example Industries",
"url": "https://www.example.com",
"logo": "https://www.example.com/images/logo.png",
"image": "https://www.example.com/images/storefront.jpg",
"telephone": "+62-21-555-0100",
"priceRange": "$$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "Jl. Sudirman No. 45",
"addressLocality": "Jakarta",
"addressRegion": "DKI Jakarta",
"postalCode": "10220",
"addressCountry": "ID"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": -6.2088,
"longitude": 106.8456
},
"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"
}
],
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": -6.2088,
"longitude": 106.8456
},
"geoRadius": "50000"
},
"sameAs": [
"https://www.linkedin.com/company/example-industries",
"https://www.facebook.com/exampleindustries",
"https://g.co/kgs/abc123"
]
}
</script>
Multi-Location Businesses
If your business has multiple locations, each location gets its own LocalBusiness schema block on its respective location page. The parent organization uses Organization schema on the main site. Each location references the parent:
"parentOrganization": {
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "Example Industries"
}
This creates a hierarchy: one Organization entity with multiple LocalBusiness children. Google can then associate reviews, content, and signals from each location back to the parent brand.
Key concept: LocalBusiness schema is where your digital identity meets physical geography. The geo coordinates, address, and opening hours create a verifiable, mappable entity that Google can cross-reference with its Maps data, your GBP listing, and third-party citations. This cross-referencing is how entity confidence is built.
Alignment With Google Business Profile
Every data point in your LocalBusiness schema must match your Google Business Profile exactly. Name, address, phone, hours, categories. If your GBP says you close at 17:00 and your schema says 18:00, you have created a conflict. Google resolves conflicts by trusting the source it considers more authoritative, and that might not be your structured data.
Further Reading
- Schema.org: LocalBusiness Type Reference
- Google: Local Business Structured Data
- Schema.org: OpeningHoursSpecification
- Schema.org: GeoCoordinates Type
Assignment
If your entity has a physical location:
- Create a LocalBusiness (or appropriate subtype) schema block with all location-specific properties.
- Look up your exact geo coordinates from Google Maps.
- Define opening hours using
openingHoursSpecificationwith day-specific entries. - Compare every field against your Google Business Profile listing. Document any discrepancies.
- If your entity has no physical location, explain in writing why Organization is the correct type for your use case.