Schema cheat sheet for local businesses
The four schemas every local business needs (LocalBusiness, FAQPage, Service, Article) — what they do, when to use them, and how to validate them.
Schema markup is the single highest-leverage AEO win. AI engines and search engines both use structured data to confidently identify your business and what you offer. Without it, they guess. With it, they cite.
The four schemas every local business needs
1. LocalBusiness (sitewide)
Tells engines: *who you are, where you are, when you're open, how to reach you.*
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Bright Smile Dentistry",
"image": "https://brightsmile.com/og.jpg",
"url": "https://brightsmile.com",
"telephone": "+16025551234",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Phoenix",
"addressRegion": "AZ",
"postalCode": "85013",
"addressCountry": "US"
},
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "09:00", "closes": "17:00" }
]
}Specialize the @type when you can — Dentist, MedicalClinic, Chiropractor, MedicalSpa — instead of generic LocalBusiness.
2. FAQPage (per service page)
Tells engines: *here are concrete Q/A pairs they can extract directly into AI Overviews.*
Match each question to a visible H2 on the page. Answers should be 30–280 chars — the AI Overview sweet spot.
3. Service (per offering)
Tells engines: *here are the specific services I offer, with pricing/duration where applicable.*
Critical for vertical specialization. A chiropractor with Service schema for "prenatal" and "sports" gets surfaced for those queries instead of just generic "chiropractor near me."
4. Article (per blog post)
Tells engines: *this is original content with an author and a publish date.*
Recency signals matter — AI engines weight fresh content for medical, legal, and financial queries especially heavily.
Validation
Always run new schema through Google's Rich Results Test before shipping. Invalid JSON-LD is the same as no schema.
Common mistakes
- Schema doesn't match visible content. Penalty risk. Markup what's actually on the page.
- Phone in non-E.164 format. Use
+15551234567, not(555) 123-4567. - Generic LocalBusiness when a specialized type exists. Use
DentistoverLocalBusinessevery time. - Hours invented from "we're typically open 9-5." If the site doesn't show them, leave them out.
Want this run for you?