Handbook/Ch. 6
Handbook · Chapter 6

Structured Data & Schema.org

Structured data makes a page eligible for rich results, never guaranteed. Google recommends JSON-LD. The general guidelines, supported types and their 2026 status, key JSON-LD examples, and the FAQ/HowTo deprecations you must not rely on.

Structured data (schema.org vocabulary) describes page content to search engines and makes a page eligible for rich results — never guaranteed. Google recommends JSON-LD (least error-prone) over Microdata/RDFa; JS-injected JSON-LD is fine if it renders in the DOM. data-vocabulary.org is dead.

Governance: schema.org launched 2011-06-02 (Bing/Google/Yahoo, Yandex Nov 2011); W3C Community Group stewards it since 2015; current ~v30.0 (~827 types).

General guidelines (all types — enforced; violations → manual action losing rich-result eligibility)

DO: mark up content visible to users; use the most specific type (Restaurant not LocalBusiness); prefer fewer complete accurate properties; keep markup on the page it describes; ensure images/pages are crawlable+indexable. DON'T: mark up invisible/fake/misleading content; create empty pages just for markup; impersonate; block structured-data pages via robots.txt/noindex/login.

Testing: Rich Results Test (Google eligibility + preview), Schema.org validator (generic vocabulary), URL Inspection (confirm found/rendered), Rich Result Status reports (post-deploy monitoring; allow days for recrawl).

Supported types & 2026 rich-result status

Currently earn a visual rich result: Article/NewsArticle/BlogPosting (Top Stories, no special visual), Breadcrumb, Product (snippet + merchant listing), Review snippet / AggregateRating, VideoObject, Recipe, Event, JobPosting, LocalBusiness, plus Course, Dataset (being phased out), Discussion forum, Education Q&A, Math solver, Movie, Practice problems (removed Jan 2026), Profile page, Q&A, Software app, Speakable, Subscription/paywall, Vacation rental, Image metadata, Carousel. Organization / WebSite = entity/knowledge signals.

Deprecated / retired — do NOT rely on for rich results:

Type Status Date
FAQPage Restricted to gov/health, then fully removed Restricted Aug 2023; stopped showing 2026-05-07 (report/RRT support gone by mid/late 2026, API Aug 2026)
HowTo Removed from Search entirely 2023-09-14
Practice Problem (Quiz) Support removed Jan 2026
Sitelinks searchbox (WebSite+SearchAction) Retired; markup inert 2024-11-21/29
data-vocabulary.org No feature

Google's line: leftover/unsupported markup causes no errors and no ranking harm — safe to leave (may still feed AI entity understanding), but stop investing in deprecated types for SERP gains.

Key JSON-LD examples

Article / BlogPosting (no required properties; headline ≤110 chars; images ≥1200px multiple aspect ratios; ISO-8601 dates with timezone; author.name = name only, no titles/honorifics):

{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "headline": "Title of a News Article",
  "image": ["https://example.com/1x1.jpg","https://example.com/4x3.jpg","https://example.com/16x9.jpg"],
  "datePublished": "2024-01-05T08:00:00+08:00",
  "dateModified": "2024-02-05T09:20:00+08:00",
  "author": [{ "@type": "Person", "name": "Jane Doe", "url": "https://example.com/profile/janedoe123" }]
}

Product (name, image required; offers.price + priceCurrency (ISO 4217) required for merchant listing; price without currency is ignored; only mark up actual product pages, not category/search pages):

{
  "@context": "https://schema.org/", "@type": "Product",
  "name": "Premium Running Shoe", "image": "https://example.com/shoes/model-x.jpg",
  "brand": { "@type": "Brand", "name": "SportTech" },
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.5", "ratingCount": "328" },
  "offers": { "@type": "Offer", "price": "129.99", "priceCurrency": "USD",
    "availability": "https://schema.org/InStock", "priceValidUntil": "2026-12-31" }
}

BreadcrumbList (itemListElement of ListItem with 1-based position, name, item URL; item optional on last item; ≥2 items; don't include the hostname as the first crumb; represent the user path not the URL structure):

{
  "@context": "https://schema.org", "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Books", "item": "https://example.com/books" },
    { "@type": "ListItem", "position": 2, "name": "Science Fiction", "item": "https://example.com/books/sciencefiction" },
    { "@type": "ListItem", "position": 3, "name": "Award Winners" }
  ]
}

Review snippet — critical DON'Ts: self-serving reviews (entity controls reviews about itself: Product/LocalBusiness/Organization) are ineligible; don't aggregate scraped ratings; a single review's author must be a Person; use a dot decimal (4.4); ratings must be from real users and visible on the page. Hosts: Product, Recipe, Movie, Book, Course, Event, LocalBusiness, Organization, SoftwareApplication, etc.

Organization — place on ONE page (home or About), not every page. Recommended: name, url, logo (≥112×112, crawlable, clear on white), sameAs, address, telephone, email. VideoObject — see Chapter 8. LocalBusiness / Event / Recipe — full examples in source 01.

Note: structured data is not required for AI Overviews/AI Mode (Chapter 11), but it correlates with citation (~2.3× more often — Community) and keeps you eligible for rich results. Always ship Article + BreadcrumbList + Organization + WebSite for E-E-A-T/AI grounding.

Sources

  1. Google Search Central — Intro to structured data markup
  2. Google Search Central — Breadcrumb (BreadcrumbList) structured data
  3. Google Search Central — Product structured data
  4. schema.org — Getting started
Related
Schema Markup Guide 2026: Types, JSON-LD & Testing agent.heading_skip

Audit your own site — free

156 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →