Structured Data & Schema.org: The Complete SEO + AI Guide (2026)

Saar Twito10 min read
Saar Twito
Saar TwitoFounder & SEO Engineer

Hi, I'm Saar - a software engineer, SEO specialist, and lecturer who loves building tools and teaching tech.

View author profile →

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 typeRich result?AI valueNotes
Product / OfferYesHighPrice, availability, ratings
RecipeYesHighIngredients, time, ratings
Review / AggregateRatingYes (limited)HighTied to specific types only
LocalBusinessYesHighPairs with Google Business Profile
EventYesHighDate, location, ticket info
Article / NewsArticleYes (Top Stories)HighAuthor, datePublished, image
VideoObjectYesHighThumbnails, key moments
BreadcrumbListYesMediumReplaces URL in SERP
FAQPageLimited (2023+)HighNo SERP enhancement for most sites
HowToRemoved (2023)MediumNo SERP enhancement, still AI-readable
OrganizationNo (Knowledge Panel)HighLogo, sameAs links to social
PersonNo (Knowledge Panel)HighAuthor E-E-A-T signal
WebSite + SearchActionSitelinks SearchboxLowBrand searches only
SoftwareApplicationYesHighApp ratings, price
CourseYesMediumEducation sites only
JobPostingYes (Google for Jobs)HighStrict 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.price or Article.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 sameAs links 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

  1. Google Rich Results Test — paste a URL or code snippet. Tells you which rich result types the page qualifies for and flags errors.
  2. Schema Markup Validator — checks Schema.org spec compliance regardless of whether Google supports it as a rich result.
  3. Search Console → Enhancements— once deployed, monitor for "valid with warnings" and "invalid" pages. Errors here mean rich results are not being shown.
  4. 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.