Schema Markup for AI: The Technical Guide to Getting Cited
Schema markup is the single highest-leverage technical change you can make to increase your AI visibility. Sites with properly implemented structured data are 3.7x more likely to be cited by ChatGPT, Gemini, and Perplexity (Javadex, 2026). Yet most implementations are incomplete, outdated, or target the wrong schema types. This guide gives you the exact JSON-LD code for each schema type that moves the needle, ranked by citation impact.
Why does schema markup matter more for AI than it ever did for Google?
Schema markup is now the primary way AI engines identify what your business does, who runs it, and whether your content is trustworthy enough to cite.
Google used schema mainly for rich snippets -- star ratings, recipe cards, event listings. Useful, but optional. You could rank without it. AI engines are different. They do not render your page visually. They parse your HTML, and structured data is the clearest signal in that parse.
When ChatGPT's browsing mode or Perplexity's search crawler hits your page, the JSON-LD block is processed before the body text. It provides a machine-readable summary that the retrieval system uses to decide whether your page is relevant to a query and authoritative enough to cite.
According to WPRiders, pages with complete schema markup are 3x more likely to appear in AI Overviews. And Stackmatix found that 82.5% of citations in AI Overviews come from pages with structured data.
The implication is clear: without schema, you are asking AI engines to guess. And when they guess, they pick the competitor whose data is explicit.
If you are new to GEO (Generative Engine Optimization), our complete guide to GEO covers the full framework. This article focuses specifically on the technical implementation of schema markup.
Which schema types have the highest impact on AI citations?
FAQPage, LocalBusiness, Article with author markup, Product, and HowTo are the five schema types that directly increase AI citation rates, in that order of impact.
Not all schema types are created equal. Some exist for legacy SEO purposes and have minimal effect on AI visibility. Others directly match the query patterns that AI engines handle most frequently. Here is the ranking based on available research:
| Schema Type | AI Citation Impact | Best For | Implementation Difficulty |
|---|---|---|---|
| FAQPage | Very high (3.2x) | Service businesses, knowledge bases | Low |
| LocalBusiness | High (3.7x with full profile) | Any business with a physical location | Low |
| Article + Person | High (3.2x with expert author) | Content publishers, blogs, guides | Medium |
| Product | High | E-commerce, SaaS, product comparisons | Medium |
| HowTo | High | Tutorials, process guides | Medium |
| AggregateRating | Medium-high | Businesses with reviews | Low |
| Organization | Medium | Any business | Low |
| BreadcrumbList | Medium | Sites with deep navigation | Low |
The rest of this guide provides copy-paste JSON-LD for each of these types, annotated with the specific properties that AI engines actually use.
How do you implement FAQPage schema for maximum AI extractability?
FAQPage schema mirrors the exact question-answer pattern that LLMs use internally, making it the single most impactful schema type for AI citations. Every question-answer pair becomes an independently citable unit.
Here is the complete implementation:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does a kitchen remodel cost in 2026?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A mid-range kitchen remodel in the US costs between $15,000 and $45,000 in 2026, depending on materials and scope. Budget remodels (cabinet refacing, new countertops) average $12,000-$18,000, while full gut renovations with custom cabinetry range from $40,000 to $75,000."
}
},
{
"@type": "Question",
"name": "How long does a kitchen remodel take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A typical kitchen remodel takes 6-12 weeks from demolition to completion. Minor cosmetic updates can be done in 2-3 weeks, while full renovations involving plumbing or electrical work take 10-16 weeks."
}
}
]
}
What makes a good FAQ answer for AI extraction?
Three rules that separate FAQ schema that gets cited from FAQ schema that gets ignored:
- Lead with the number or direct answer. "A mid-range kitchen remodel costs $15,000-$45,000" -- not "There are many factors that influence the cost."
- Include ranges and qualifiers. AI engines prefer answers that acknowledge nuance. A single number looks unreliable; a range with context looks authoritative.
- Keep each answer between 40 and 120 words. Too short and there is nothing to cite. Too long and the model truncates or skips it.
According to Frase.io, even though Google removed FAQ rich snippets in August 2023, AI platforms have adopted FAQPage schema as a primary extraction source. The format survived because it maps perfectly to how LLMs retrieve information.
How should you structure LocalBusiness schema for AI discovery?
LocalBusiness schema must include your complete NAP (Name, Address, Phone), service area, business hours, and aggregate rating to give AI engines everything they need to recommend you for local queries.
Most LocalBusiness implementations are missing critical fields. Here is the complete version:
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Rivera Plumbing & Heating",
"description": "Licensed plumbing and HVAC contractor serving Portland metro since 2008. Emergency repairs, water heater installation, and bathroom remodels.",
"url": "https://riveraplumbing.com",
"telephone": "+1-503-555-0147",
"email": "service@riveraplumbing.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "2847 NE Sandy Blvd",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97232",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 45.5298,
"longitude": -122.6381
},
"areaServed": [
{
"@type": "City",
"name": "Portland"
},
{
"@type": "City",
"name": "Beaverton"
},
{
"@type": "City",
"name": "Lake Oswego"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "08:00",
"closes": "14:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "312",
"bestRating": "5"
},
"priceRange": "$$",
"foundingDate": "2008",
"numberOfEmployees": {
"@type": "QuantitativeValue",
"value": 14
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Plumbing Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Emergency Plumbing Repair",
"description": "24/7 emergency plumbing service for burst pipes, leaks, and sewer backups"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Water Heater Installation",
"description": "Tankless and traditional water heater installation and replacement"
}
}
]
}
}
What fields do most businesses miss?
The fields that differentiate a cited business from an invisible one:
@typespecificity. Use the most specific subtype available.Plumberinstead ofLocalBusiness.Dentistinstead ofMedicalBusiness. AI engines match specific types to specific queries.areaServed. Without this, AI engines do not know your service radius. A user asking "best plumber in Beaverton" will not get a Portland-only listing.hasOfferCatalog. Your services, listed as structured offers. This is what connects your business to "how much does X cost" queries.aggregateRating. Businesses without structured review data are significantly less likely to be recommended. If you have reviews, expose them.description. A concise, keyword-rich description that reads like a one-sentence pitch. This is often what AI engines extract verbatim.
How do you implement Article schema with author markup that AI trusts?
Article schema combined with Person schema for the author creates a trust chain that AI engines use to evaluate whether your content deserves citation. Pages with identified expert authors get 3.2x more AI citations (Averi.ai).
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How Much Does a Bathroom Remodel Cost in Portland in 2026?",
"description": "Portland bathroom remodel costs range from $8,000 to $35,000. Detailed cost breakdown by scope, materials, and contractor rates based on 200+ local projects.",
"datePublished": "2026-03-15",
"dateModified": "2026-04-01",
"author": {
"@type": "Person",
"name": "James Rivera",
"jobTitle": "Licensed General Contractor",
"knowsAbout": ["bathroom remodeling", "plumbing", "home renovation", "Portland construction"],
"url": "https://riveraplumbing.com/about/james-rivera",
"sameAs": [
"https://www.linkedin.com/in/jamesrivera",
"https://www.houzz.com/pro/riveraplumbing"
]
},
"publisher": {
"@type": "Organization",
"name": "Rivera Plumbing & Heating",
"url": "https://riveraplumbing.com",
"logo": {
"@type": "ImageObject",
"url": "https://riveraplumbing.com/logo.png"
}
},
"image": "https://riveraplumbing.com/images/bathroom-remodel-portland.jpg",
"mainEntityOfPage": "https://riveraplumbing.com/blog/bathroom-remodel-cost-portland"
}
Why does sameAs matter for AI trust?
The sameAs property links your author to their profiles on LinkedIn, industry platforms, and social media. AI engines use these cross-references to verify that the author is a real person with verifiable credentials. An author who exists only on your site carries less weight than one who appears across multiple authoritative platforms.
This connects directly to E-E-A-T principles in AI search -- expertise signals that can be verified across sources are weighted significantly higher than claims that exist in isolation.
What about dateModified?
Always include dateModified and keep it accurate. According to Microsoft's advertising research, AI-preferred sources are on average 26% fresher than what traditional search surfaces. Updating your content and reflecting that update in the schema signals recency to AI crawlers.
How do you implement Product and HowTo schema for AI?
Product schema captures pricing, availability, and comparison data that AI engines cite in purchase-intent queries. HowTo schema maps to "how do I" queries, which represent a large share of AI interactions.
Product schema
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Whole-House Tankless Water Heater Installation",
"description": "Professional installation of Rinnai or Navien tankless water heaters. Includes removal of old unit, new gas line if needed, and 5-year warranty on labor.",
"brand": {
"@type": "Brand",
"name": "Rivera Plumbing & Heating"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "2800",
"highPrice": "4500",
"priceCurrency": "USD",
"offerCount": "3"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "47"
}
}
HowTo schema
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Unclog a Kitchen Drain Without Chemicals",
"description": "Step-by-step guide to clearing a kitchen drain clog using a plunger and drain snake. No harsh chemicals needed.",
"totalTime": "PT20M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "15"
},
"step": [
{
"@type": "HowToStep",
"name": "Remove standing water",
"text": "Use a cup or small bucket to remove standing water from the sink. This gives you clear access to the drain opening."
},
{
"@type": "HowToStep",
"name": "Plunge the drain",
"text": "Place a flat-bottom plunger over the drain, ensuring a tight seal. Pump vigorously 15-20 times, then pull up sharply to break the clog."
},
{
"@type": "HowToStep",
"name": "Use a drain snake if needed",
"text": "If plunging does not clear the clog, insert a 25-foot drain snake into the opening. Rotate the handle clockwise as you feed it in until you feel resistance, then pull back to extract the blockage."
}
]
}
HowTo schema with totalTime and estimatedCost performs particularly well because AI engines can cite specific data points from these fields when answering queries like "how long does it take to unclog a drain" or "how much does drain cleaning cost."
What is the correct way to deploy JSON-LD on your site?
Place JSON-LD in a <script type="application/ld+json"> tag in the <head> section of each page. Use page-specific schema, not a single site-wide block.
Deployment rules
- One schema block per entity. Do not nest FAQPage inside LocalBusiness. Use separate
<script>tags for each schema type on the page. - Page-specific, not site-wide. Your homepage gets Organization and LocalBusiness. Your blog posts get Article and Person. Your FAQ page gets FAQPage. Do not dump everything on every page.
- Validate before deploying. Use Google's Rich Results Test and the Schema.org Validator to check for errors. A schema with syntax errors is worse than no schema.
- Test with AI. After deploying, ask ChatGPT or Perplexity a question your schema answers. Check whether the response includes information from your structured data. This is the real validation.
Common mistakes that break AI extraction
| Mistake | Why It Hurts | Fix |
|---|---|---|
Using LocalBusiness instead of a specific subtype | AI cannot match your business to specific queries | Use Dentist, Plumber, Restaurant, etc. |
Missing areaServed | AI does not know your service area | Add City or GeoCircle for each area you cover |
dateModified that never changes | Signals stale content | Update it every time you edit the page |
Empty or generic description | AI has nothing useful to extract | Write a specific, data-rich description |
Missing aggregateRating when reviews exist | Loses a major trust signal | Expose your real review data |
| Nesting multiple types in one block | Confuses parsers | Use separate <script> tags |
How do you audit your existing schema markup?
Run your pages through three layers of validation: syntax, completeness, and AI response testing.
Step 1: Syntax validation. Paste your page URL into Google's Rich Results Test. Fix any errors or warnings.
Step 2: Completeness audit. Compare your schema against the full examples in this guide. Most sites have schema but are missing high-impact fields like areaServed, knowsAbout, hasOfferCatalog, or dateModified. For a broader approach to structuring your content alongside schema, see our guide on creating content that AI engines actually cite.
Step 3: AI response testing. This is the step most guides skip. Ask ChatGPT, Gemini, or Perplexity questions that your schema should answer. For example:
- "What are the best plumbers in [your city]?"
- "How much does [your service] cost in [your area]?"
- "Who is [author name] and what do they specialize in?"
If your business does not appear, compare the cited competitors' schema with yours. You can automate this monitoring with our free AI visibility test, which checks your presence across all four major AI engines.
Step 4: Ongoing monitoring. Schema is not set-and-forget. AI engines re-crawl pages and update their indexes. Monitor your AI citations monthly and update schema whenever your business information changes -- new services, new locations, new review counts.
For more on building the overall visibility strategy around your schema foundation, see our guide on how to appear in ChatGPT and the differences between SEO and GEO.