Structured Data & Schema.org: The Complete SEO + AI Guide (2026)
What Is Structured Data?
Structured data is machine-readable code (almost always JSON-LD) added to a page's <head> that explicitly labels the meaning of its content — "this is a product", "this is its price", "this is the author", "this is the rating". The vocabulary is defined by Schema.org, jointly maintained by Google, Microsoft, Yahoo, and Yandex. Correct schema markup makes pages eligible for rich results in Google and increases the rate at which AI engines (ChatGPT, Perplexity, Google AI Overviews, Claude) cite the page accurately.
Key Facts (TL;DR)
- Format to use: JSON-LD. Google's officially preferred format since 2015. Don't use Microdata or RDFa for new sites.
- AI visibility lift: Pages with proper schema markup show ~30–40% higher citation rates in generative search engines (industry data, 2025).
- Rich result eligibility: Only specific Schema.org types qualify — not everything you mark up will get a rich result. See Google's Search Gallery for the current list.
- Reduced visibility: Google rolled back FAQ rich results in August 2023 (now only shown for authoritative health/government sites) and HowTo rich results in September 2023. The schema is still useful for AI engines but no longer earns SERP enhancements for most sites.
- Validation: Always test with both Google's Rich Results Test and the Schema Markup Validator.
- Penalty risk: Schema that contradicts on-page content (fake reviews, hidden ratings) can trigger a manual action — Google has issued these since 2019.
Schema Types That Still Earn Rich Results in 2026
Not every Schema.org type produces a visual enhancement in search. Here's the current state of the most-used types:
| Schema type | Rich result? | AI value | Notes |
|---|---|---|---|
| Product / Offer | Yes | High | Price, availability, ratings |
| Recipe | Yes | High | Ingredients, time, ratings |
| Review / AggregateRating | Yes (limited) | High | Tied to specific types only |
| LocalBusiness | Yes | High | Pairs with Google Business Profile |
| Event | Yes | High | Date, location, ticket info |
| Article / NewsArticle | Yes (Top Stories) | High | Author, datePublished, image |
| VideoObject | Yes | High | Thumbnails, key moments |
| BreadcrumbList | Yes | Medium | Replaces URL in SERP |
| FAQPage | Limited (2023+) | High | No SERP enhancement for most sites |
| HowTo | Removed (2023) | Medium | No SERP enhancement, still AI-readable |
| Organization | No (Knowledge Panel) | High | Logo, sameAs links to social |
| Person | No (Knowledge Panel) | High | Author E-E-A-T signal |
| WebSite + SearchAction | Sitelinks Searchbox | Low | Brand searches only |
| SoftwareApplication | Yes | High | App ratings, price |
| Course | Yes | Medium | Education sites only |
| JobPosting | Yes (Google for Jobs) | High | Strict requirements |
Why Structured Data Matters for SEO and AI
- Rich results in Google.Stars, prices, breadcrumbs, video thumbnails, and recipe cards all come from schema. Pages with rich results consistently see double-digit CTR improvements (Google's own case studies report 30–82% increases depending on the type).
- AI citation accuracy. Generative engines parse JSON-LD directly. When Perplexity quotes a product price or ChatGPT names an author, it's almost always pulling from
Product.offers.priceorArticle.author.name. Without schema, AI engines guess from raw text and frequently get it wrong. - Knowledge Graph entry. Organization and Person schema, paired with consistent
sameAslinks to your social profiles and Wikipedia, are how Google builds its internal entity model of your brand or you as an author. - Disambiguation."Apple" the company vs. the fruit, "Java" the language vs. the island — schema removes the ambiguity that hurts rankings on competitive terms.
How to Implement Schema (JSON-LD)
JSON-LD lives in a <script type="application/ld+json"> tag inside <head>. It's separate from your visible HTML, which means you can add it without touching the markup users see.
LocalBusiness
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Joe's Pizza",
"image": "https://example.com/storefront.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "Anytown",
"addressRegion": "CA",
"postalCode": "12345",
"addressCountry": "US"
},
"telephone": "+1-555-123-4567",
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
"opens": "11:00",
"closes": "22:00"
}],
"priceRange": "$$",
"servesCuisine": "Italian",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "89"
}
}
</script>Note: Use the most specific subtype (Restaurant, Dentist, Plumber) rather than generic LocalBusiness — Google ranks specific types higher in local results.
Product
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Bluetooth Headphones",
"image": "https://example.com/headphones.jpg",
"description": "High-quality wireless headphones with active noise cancellation.",
"sku": "TS-NC-100",
"brand": { "@type": "Brand", "name": "TechSound" },
"offers": {
"@type": "Offer",
"url": "https://example.com/headphones",
"priceCurrency": "USD",
"price": "149.99",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.3",
"reviewCount": "127"
}
}
</script>2026 requirement: Google now requires shippingDetails and hasMerchantReturnPolicy for Product rich results in major markets. Without them, you'll see "merchant listing experience" warnings in Search Console.
Article
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "10 Tips for Better Website SEO",
"image": ["https://example.com/seo-tips-1x1.jpg",
"https://example.com/seo-tips-4x3.jpg",
"https://example.com/seo-tips-16x9.jpg"],
"author": {
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/authors/jane-smith"
},
"publisher": {
"@type": "Organization",
"name": "SEO Blog",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2026-01-15T08:00:00+00:00",
"dateModified": "2026-04-28T10:30:00+00:00"
}
</script>Tip: Always provide images in 1:1, 4:3, and 16:9 aspect ratios. Google chooses based on the surface (Top Stories vs. mobile carousel vs. Discover) and pages with all three are eligible for more placements.
Organization (sitewide, on the homepage)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Greadme",
"url": "https://www.greadme.com",
"logo": "https://www.greadme.com/logo.png",
"sameAs": [
"https://twitter.com/greadme",
"https://www.linkedin.com/company/greadme",
"https://github.com/greadme"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "support@greadme.com"
}
}
</script>The sameAs array is what Google uses to consolidate your entity across the web — keep it accurate and exhaustive.
The Five Mistakes That Kill Schema Markup
1. Marking up content that isn't visible to users
Adding a 4.8 aggregate rating in JSON-LD when the page shows no reviews violates Google's structured data guidelines and can trigger a manual action. The rule: schema must reflect what's on the page.
2. Wrong data types
"price": "$149.99" fails validation. The correct form is "price": "149.99" with a separate "priceCurrency": "USD". Dates must be ISO 8601 (2026-04-28 or 2026-04-28T10:30:00+00:00), not April 28, 2026.
3. Missing required properties
Each rich-result type has required and recommended properties. Product needs name + image + offers at minimum. Article needs headline + image + datePublished + author. Skip one and the rich result silently disappears.
4. Conflicting or duplicate JSON-LD blocks
Two Article blocks on the same page with different headline values confuse Google — it picks one or ignores both. If you need multiple schemas (e.g., Article + BreadcrumbList + Organization), put them in one @graph array or as separate scripts with no overlap.
5. Stale dates and prices
priceValidUntil in the past, dateModified from two years ago, availability showing InStock when the product is sold out — all silently disable the rich result. Tie schema to your CMS or build pipeline so it updates with the content.
JSON-LD vs Microdata vs RDFa
Three formats can carry Schema.org markup. Use only one:
- JSON-LD (recommended). A separate script block. Doesn't touch your HTML. Easy to generate dynamically. Google's preferred format since 2015.
- Microdata. Inline attributes (
itemscope,itemtype,itemprop) on existing HTML. Older, harder to maintain, mixes data with presentation. - RDFa. Similar to Microdata but with a more academic syntax. Rare outside government and academic sites.
Don't mix formats on the same page.If you're migrating a legacy site, remove the old format before adding JSON-LD — duplicate schema in two formats is a common cause of conflicting markup.
How to Test and Validate
- Google Rich Results Test — paste a URL or code snippet. Tells you which rich result types the page qualifies for and flags errors.
- Schema Markup Validator — checks Schema.org spec compliance regardless of whether Google supports it as a rich result.
- Search Console → Enhancements— once deployed, monitor for "valid with warnings" and "invalid" pages. Errors here mean rich results are not being shown.
- URL Inspection tool— for a single page, see Google's rendered version including the JSON-LD it actually parsed.
FAQ
Is structured data a Google ranking factor?
Not directly. Google has stated repeatedly that schema markup itself doesn't boost rankings. What it does is unlock rich results, which raise click-through rate, and help Google's entity-understanding systems — both of which indirectly improve performance.
Which schema format should I use?
JSON-LD. Google has recommended it as the preferred format since 2015. It's easier to maintain, doesn't mix with your visible HTML, and is the format AI engines parse most reliably.
Do FAQ and HowTo schemas still work?
Mostly no. In August 2023 Google restricted FAQ rich results to authoritative health and government sites, and in September 2023 it removed HowTo rich results entirely. The schemas are still valid and still useful for AI engines (ChatGPT, Perplexity), but most sites no longer get a SERP enhancement from them.
Does schema help with ChatGPT and Perplexity citations?
Yes. Generative engines parse JSON-LD directly to extract structured facts (author names, prices, dates, ratings). Industry data from 2025 shows pages with proper schema have 30–40% higher AI citation rates than pages without it.
Can I have multiple schema blocks on one page?
Yes — and you usually should. A blog post might have Article + BreadcrumbList + Organization (sitewide). Either use separate <script> tags or combine them in a single @grapharray. Don't duplicate the same type with conflicting values.
What happens if my schema doesn't match the visible page?
Google can issue a manual action for "Spammy structured data" — visible in Search Console under Manual Actions. The rich result disappears immediately and the whole site can lose enhancement eligibility until you fix the markup and submit a reconsideration request.
Do I need schema on every page?
No. Use it where it adds meaning: products, articles, recipes, events, local business pages. Add Organization sitewide on the homepage and BreadcrumbListon every page that has a breadcrumb trail. Plain marketing pages usually don't need any.
Should schema be in the head or body?
Either works — Google parses both — but <head>is the convention. Server-rendered JSON-LD is preferred over client-side injected schema; some crawlers don't execute JavaScript fully and miss late-added scripts.
Conclusion
Schema markup is the most underused, highest-leverage SEO investment most sites can make in 2026. It costs almost nothing to implement, it unlocks rich results that lift CTR, and — increasingly — it's how AI search engines decide which sites to cite and which to ignore. Pick the right type, fill in the required properties, validate, deploy, and monitor. That's the whole job.
