LocalBusiness schema is a type of structured data markup from Schema.org that encodes your business's name, address, phone number, operating hours, and geo-coordinates into a format search engines read directly. It is implemented as a JSON-LD block in the HTML head and is the primary signal that confirms your business as a recognised entity to Google, AI Overviews, and local map ranking systems.
Most local businesses have a Google Business Profile. Fewer bother with LocalBusiness schema on their website. That gap is an opportunity — because schema is how you close the loop between your site and your GBP listing in Google's entity graph.
What is LocalBusiness schema?
LocalBusiness schema is a specific subtype within the Schema.org vocabulary, which is a shared standard maintained by Google, Microsoft, Yahoo, and Yandex. The markup sits inside a <script type="application/ld+json"> block in your page's <head> and does not change what visitors see — it communicates directly to crawlers.
The core fields it encodes include:
- @type — the specific business category (e.g.,
Dentist,Plumber,Restaurant) - name — exact business name as it appears on GBP
- address — structured as
PostalAddresswith street, city, state, postal code, country - telephone — primary phone number
- openingHoursSpecification — days and hours for each period
- geo — latitude and longitude coordinates
- url — canonical website URL
Google's structured data documentation confirms that LocalBusiness markup is used to power knowledge panels and local rich results. Consistency between schema data and your Google Business Profile reduces entity ambiguity — a known factor in map pack ranking.
Why LocalBusiness schema matters for local SEO
Schema markup is not a direct ranking factor, but it drives three outcomes that compound into ranking improvements:
- Entity confirmation. Google's local algorithm matches your website, GBP listing, and third-party citations to a single entity. Schema markup makes your site the authoritative source for that entity's data, reducing ambiguity that can suppress map pack visibility.
- Rich results eligibility. With valid schema in place, your business becomes eligible for enhanced SERP displays — star ratings, opening hours, price ranges — shown directly in search results. These expand your visual footprint and improve click-through rates without changing rank position.
- AI Overview and LLM visibility. ChatGPT, Gemini, and Perplexity increasingly answer "best dentist near me" type queries by extracting structured data. Businesses with clean, complete schema are more likely to be cited in these AI-generated answers.
- NAP consistency enforcement. Schema locks in one canonical version of your business name, address, and phone. Any directory or citation that conflicts with your schema creates entity confusion Google must resolve — often by de-weighting your listing.
How LocalBusiness schema works
Implementation is a three-step process: write the JSON-LD, validate it, then place it in your site's HTML.
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "City Pro Plumbing",
"telephone": "+1-555-0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "42 Oak Street",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"geo": { "@type": "GeoCoordinates", "latitude": 30.2672, "longitude": -97.7431 },
"url": "https://cityproplumbing.com/",
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "08:00", "closes": "18:00" }
]
}
After writing the block, validate it using Google's Rich Results Test or the Schema.org Validator. Errors in the JSON (mismatched brackets, missing required fields) prevent Google from parsing the markup at all.
Types of LocalBusiness schema subtypes
The LocalBusiness type is the parent — but you should always use the most specific subtype available. Google's algorithms prefer specificity.
| @type value | Business category | Key additional fields |
|---|---|---|
LocalBusiness | Generic fallback | Use only if no specific subtype applies |
Restaurant | Food & dining | servesCuisine, hasMenu, acceptsReservations |
Dentist | Healthcare | medicalSpecialty, availableService |
Plumber | Home services | areaServed, hasOfferCatalog |
Attorney | Legal | legalName, knowsAbout |
AutoRepair | Automotive | availableService, paymentAccepted |
Real LocalBusiness schema examples
1. Plumbing company — homepage implementation
A plumbing company in Austin added LocalBusiness schema to its homepage with exact NAP match to GBP and geo-coordinates. Within 90 days, CTR from local search increased 25% as the business became eligible for star rating rich results in the SERP. No ranking position change was made — the lift came entirely from visual enhancement.
2. Multi-location restaurant chain
A restaurant group with 5 locations created individual location pages, each with its own Restaurant schema block. Each block used the specific branch address, phone, and hours rather than a central corporate block. Result: each location began appearing in map pack results for city-specific queries where the chain had previously been absent.
3. Service-area business without a storefront
For businesses that operate from a home address or have no public-facing location, the recommended approach is to omit the address field and instead use areaServed with city or region names. This prevents Google from indexing a personal home address while still signalling the service territory.
LocalBusiness schema vs Organization schema — which to use
Both types mark up a business entity. The choice depends on whether the business has a physical or defined local presence.
Use LocalBusiness when
- You have a physical storefront or office
- You serve a defined geographic area
- You want map pack and local rich results
- You have specific hours of operation
- You need to match a GBP listing
Use Organization when
- You are a purely online or national brand
- No geographic service area applies
- You want a knowledge panel without local signals
- You're marking up a parent company above local branches
- No GBP listing exists or is relevant
6 best practices for LocalBusiness schema
- Match NAP exactly to GBP. Every character of your business name, address, and phone must be identical between your schema markup and your Google Business Profile. Any discrepancy creates entity conflict.
- Use the most specific @type available.
DentistoutperformsLocalBusiness.EmergencyServiceoutperformsOrganization. Specificity tells Google exactly what category your business occupies. - Include geo-coordinates. The
geofield with latitude and longitude is often skipped, but it directly assists map pack placement by confirming the precise physical location. - Add openingHoursSpecification. Not just
openingHoursas a string, but the fullOpeningHoursSpecificationobject with separate entries for each day range. This enables the "hours" rich result in SERPs. - Place it on every location page. For multi-location businesses, each location page needs its own schema block — do not copy-paste the same block across pages. Google will flag the duplicates as errors.
- Validate before publishing. Run every new schema block through Google's Rich Results Test. Structured data errors are silent — they do not cause visible errors on the page, so validation is the only way to catch them.
The most common LocalBusiness schema error is using a slightly different business name or address format in the markup compared to GBP. "City Pro Plumbing LLC" in schema and "City Pro Plumbing" on GBP are treated as different entities by Google's knowledge graph. Always copy-paste from GBP, never retype.
Common LocalBusiness schema mistakes to avoid
- Using the generic @type="LocalBusiness" when a more specific subtype exists — misses category-specific rich result eligibility.
- Omitting geo-coordinates — the single most commonly skipped field, and one of the most useful for map pack signals.
- Copy-pasting one schema block across all location pages — Google sees this as duplicate structured data and may suppress all instances.
- Using Microdata instead of JSON-LD — Google still supports Microdata but recommends JSON-LD; Microdata is harder to maintain and easier to break.
- Not updating schema when business details change — outdated hours or address in schema creates entity conflict that can suppress local rankings.
- Marking up information not visible on the page — Google's guidelines prohibit including data in structured markup that does not appear somewhere on the page.
Frequently asked questions
Not directly. LocalBusiness schema does not change your position algorithmically, but it supports rankings indirectly by confirming entity identity to Google, making you eligible for rich results, and helping AI Overviews extract accurate business data.
Place the JSON-LD block in the head section of your homepage and each location page. For multi-location businesses, each location page should carry its own LocalBusiness block with that branch's specific NAP, hours, and coordinates.
Yes. You can include multiple JSON-LD blocks on a single page. A common pattern is to pair LocalBusiness schema with FAQPage or BreadcrumbList schema without conflict.
No. You can hand-write the JSON-LD block and paste it into your HTML head. Plugins like Rank Math or Yoast automate generation, but manual implementation gives you more control over every field.
LocalBusiness schema is a subtype of Organization specifically designed for businesses with a physical presence or defined service area. It adds location-specific properties like address, geo-coordinates, and opening hours that the base Organization type does not support.
