LocalBusiness Schema for AI Search
Structured data is a way to label the facts on your page so software can read them without guessing. For a local business the vocabulary is LocalBusiness from schema.org, written as JSON-LD. It is not a magic switch for AI answers, but it removes ambiguity about who you are and where you operate.
What it is, and what it is not
Schema.org defines shared vocabulary for describing things on the web, including LocalBusiness and its many subtypes (schema.org/LocalBusiness). Google documents how it uses local business markup (Google: Local business structured data). Google's guidance on AI features says no special markup is required to appear in them, and that structured data should match the visible content of the page (AI features and your website).
So treat markup as housekeeping: it makes your facts machine-readable and consistent. It does not promise a mention in any AI engine.
Pick the most specific type
LocalBusiness has subtypes such as Plumber, RoofingContractor, Dentist, Restaurant, LegalService, RealEstateAgent, and many more. Use the most specific one that fits. If none fits, use LocalBusiness.
A template
Put this inside a <script type="application/ld+json"> tag in the page head or body. Replace every value with your real, visible information.
{
"@context": "https://schema.org",
"@type": "RoofingContractor",
"name": "Example Roofing Co.",
"url": "https://example.com/",
"telephone": "+1-407-555-0100",
"email": "info@example.com",
"image": "https://example.com/images/storefront.jpg",
"description": "Licensed residential roofing contractor serving Winter Park, Maitland, and Orlando, Florida.",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Example St",
"addressLocality": "Winter Park",
"addressRegion": "FL",
"postalCode": "32789",
"addressCountry": "US"
},
"areaServed": [
{"@type": "City", "name": "Winter Park"},
{"@type": "City", "name": "Maitland"},
{"@type": "City", "name": "Orlando"}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"sameAs": [
"https://www.facebook.com/your-page",
"https://www.yelp.com/biz/your-listing"
]
}
The phone number, address, and URLs above are placeholders. Do not publish them as they are.
Field notes
- name: your business name exactly as customers see it and as it appears on your Google Business Profile.
- telephone: use international format. It should match the number on the page and in your listings.
- address: a full postal address if customers visit you. If you travel to customers and do not want to publish an address, leave it out and rely on
areaServed. Do not invent an address. - areaServed: the places you really serve.
- openingHoursSpecification: current hours. Update when they change, and note holiday closures elsewhere.
- sameAs: official profiles that are really yours. This helps connect your site to your listings.
- priceRange: optional, a rough indicator such as "$$". Only use it if it is accurate.
Mistakes to avoid
- Fake reviews and ratings. Do not add
aggregateRatingunless it reflects genuine reviews shown on that page and meets the platform's rules. Google's guidelines restrict self-serving review markup for local businesses. Making up ratings can lead to a manual action and it is misleading. - Markup that does not match the page. If the JSON-LD says you open at 8 and the page says 9, you created a conflict.
- Multiple conflicting blocks. Some themes and plugins each add their own. Check your page source for duplicates.
- Markup for services you do not offer.
- Syntax errors. One missing comma invalidates the block.
Where to put it
Put the main LocalBusiness block on your home page or contact page. If you have multiple locations, give each location its own page and block, with its own address and phone. You can also add FAQPage markup, but only for questions and answers that are visible on the page.
How to test it
- Paste the block into the Schema Markup Validator at validator.schema.org to check syntax and vocabulary.
- Use Google's Rich Results Test (search.google.com/test/rich-results) to see what Google reads from the live page.
- Compare every value with what is visible on the page and in your Google Business Profile.
Why it can matter for AI search
Assistants that search the web have to decide whether two mentions are the same business, where it operates, and how to reach it. Clear markup, identical details across your site and listings, and plain-text facts reduce that guesswork. That is the extent of the claim. We do not know how much weight any AI engine puts on markup, and we do not claim a specific effect.
Check what you have
SearchSignal's full report looks at your site for Organization or LocalBusiness markup, whether name, address, phone, and profiles are present, and whether they agree across pages. It then lists the fixes in priority order, with a snippet filled in from your own site's data. Start with the free check, and see the methodology for the scoring.
Common questions
Does schema markup improve rankings?
Google does not say that structured data is a ranking factor for LocalBusiness. It helps systems read your facts. Do not expect a jump from it alone.
Can I generate the JSON-LD with a plugin?
Yes, many SEO plugins do. Review the output against your page and delete anything that is not true or not visible.
What if I have no street address?
Leave the address out and use areaServed. Do not publish a fake address.
Where do reviews go?
Only mark up reviews if you meet the platform's guidelines, and never invent them. Google's documentation covers when review markup is eligible.
Published 2026-10-30. We cite vendor documentation where we state facts about it; vendors change products often, so check the linked pages for current details. This guide describes what you can influence and does not promise any result.