Schema Markup for AI Search: What Still Matters
Structured data is one of the most oversold topics in AI SEO, and one of the most undersold in ordinary SEO. Both things are true, which makes it easy to get wrong in either direction. Let's separate what the platforms have actually said from what vendors want you to believe.
What schema markup is
Schema markup is a vocabulary from schema.org that lets you label the things on your page in a form machines read directly: this is an organization, this is its phone number, this is an article, this is its author. It's most often added as a block of JSON-LD in the page's <head>.
The value is disambiguation. Your page says "Apex" and a human knows you mean the roofing company from context. Structured data says it explicitly, with a name, a URL, an address, and links to the profiles that confirm it.
What the platforms have said
- Google: "Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add," per its AI optimization guide. It also says pages need to be indexed and snippet-eligible to appear in AI features, which is a crawling matter, not a markup matter.
- Microsoft: At SMX Munich in 2025, Bing's Fabrice Canel said schema markup helps Microsoft's LLMs understand content, as Search Engine Land reported.
- OpenAI, Anthropic, Perplexity: As far as we've seen, none has published guidance saying structured data affects citations.
So the fair summary: schema is not a switch that makes AI cite you, and nobody has proven it is. It is a low-cost, well-supported way to make your site unambiguous, and it still powers the rich results in traditional search. Do it correctly, then move on.
The types worth adding
Skip the temptation to mark up everything. A small number of types cover most businesses.
| Type | Use it for | Why it's worth it |
|---|---|---|
Organization or LocalBusiness (and subtypes like ProfessionalService, Attorney) | Your homepage or About page | Names the entity, its contact details, and its official profiles via sameAs |
Person | Author and team pages | Connects content to a real, credentialed human |
Article / BlogPosting | Posts and guides | Declares author, publish date, and modified date |
BreadcrumbList | Any page with breadcrumbs | Clarifies site structure and hierarchy |
Product, Offer, Review | Ecommerce | Price, availability, and ratings; pairs with Merchant Center |
Service | Service pages | Describes what you offer and where |
VideoObject | Pages with video | Video rich results and clearer video context |
Types that no longer earn what they used to
Two are worth calling out because plenty of advice is out of date. Google limited FAQPage rich results to a small set of well-known government and health sites in 2023, and it retired HowTo rich results the same year. You can still mark them up when they match visible content, but don't expect a visual payoff, and don't add them to every page for the sake of it.
A JSON-LD example you can adapt
This is a stripped-down version of what a local service business might place on its homepage:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"@id": "https://www.example.com/#organization",
"name": "Example Plumbing Co.",
"url": "https://www.example.com/",
"logo": "https://www.example.com/logo.png",
"telephone": "+1-555-555-0100",
"email": "hello@example.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Main St",
"addressLocality": "Springfield",
"addressRegion": "IL",
"postalCode": "62701",
"addressCountry": "US"
},
"areaServed": "Springfield, IL",
"sameAs": [
"https://www.facebook.com/exampleplumbing",
"https://www.linkedin.com/company/exampleplumbing",
"https://www.yelp.com/biz/example-plumbing-springfield"
]
}
</script>
Notice the @id. Giving your organization a stable identifier lets every other page's markup refer back to it (for example, an article's publisher), so the whole site describes one consistent entity instead of scattered fragments.
The rules that keep you out of trouble
- Mark up only what's visible. Structured data must describe content actually on the page. Marking up reviews or claims that aren't there violates Google's guidelines and can cost you rich results.
- Keep it accurate and current. Old phone numbers and moved addresses in your markup are worse than none.
- Put it in the initial HTML. Schema injected by JavaScript can work for Google, which renders pages. Crawlers that don't run JavaScript won't see it. See the crawler guide for why. Server-rendered markup is the safe choice.
- Use real profiles in
sameAs. Point at pages you actually control or that genuinely represent you. Don't pad the list. - Don't fake ratings. Self-serving review markup for your own business is a known way to get a manual action.
How to test your markup
- Google's Rich Results Test tells you which rich results your page is eligible for and flags errors.
- The Schema Markup Validator at validator.schema.org checks the syntax against the full schema.org vocabulary, not just Google's supported types.
- Search Console's enhancement reports show errors across your whole site over time.
- View source. Confirm the JSON-LD appears in the raw HTML response, not just in the browser's rendered DOM.
Where schema fits in the bigger picture
Structured data works best as one signal that agrees with several others: the same name, address, and description on your site, your Google Business Profile, and the directories that list you. When they all match, machines can be confident about who you are. When they conflict, markup won't save you. That's the subject of Entity SEO: How to Become a Brand AI Systems Recognize, and if you run a local business, Local SEO in the Age of AI Search covers the listings side. For the whole framework, see the AI Search Visibility guide.
Want this done for your site?
Crawled SEO runs a Visibility Audit that checks the things in this guide against your actual site: crawler access, structure, entity signals, content, and how you show up in AI answers today.
Request your free audit