← Knowledge Notes
Global Growth / Knowledge note · English

Complete Overview of Structured Data (Framework + Quick Reference for 34 Rich Result Types + JSON-LD/Microdata/RDFa Selection Guide)

Structured Data framework + overview of all 34 Google-supported rich result types. Format selection for the 3 syntaxes (JSON-LD recommended / Microdata / RDFa; data-vocabulary.org is deprecated). **6 quality guidelines** (content / relevance / completeness / location / specificity / images) + 2 patterns for multiple items on the same page (nesting / individual items linked via @id). Complete categorized type table (Ecommerce/Organizations/Sports/Jobs/Entertainment/News/Food/Education) + required fields / key gotchas for each type. **Latest deprecation**: FAQ rich results will no longer be displayed starting 2026-05-07 (tools removed in 2026-06 / API removed in 2026-08). JavaScript-generated SD (Google Tag Manager / custom JS) + note that Product SD via GTM may face reduced crawl frequency. Image license metadata schema.org/CreativeWork (creator + creditText + copyrightNotice + license + acquireLicensePage). Speakable is only for news + en-US/-CA/-AU/-IE/-NZ/-UK + a few sentences totaling ≤ 30 seconds. Paywalled content SD must be distinguished from cloaking by marking isAccessibleForFree=false + cssSelector. Carousel (only available for Recipe/Course/Restaurant/Movie) + 4 categories of ItemList @id linking.

Source collection:Google Search and SEO · Published here:2026-09-26

Overseas GrowthSEO

In one sentence: Structured Data (SD) = adding schema.org tags to a page to explicitly tell Google what the content is(e.g. recipe ingredients / Article author / Product price, etc.) → unlock rich results.Google supports 34 types; this wiki serves as an entry point + covers key gotchas for each type. For detailed field tables, see search-gallery.

TL;DR — 7 Core Decisions

Decision Answer
Which format to use? JSON-LD(Recommended) Place <script type="application/ld+json"> in either <head> or <body> is fine
Are Microdata / RDFa acceptable? Yes, but they are error-prone; JSON-LD is the easiest to maintain
data-vocabulary.org Is data-vocabulary.org still usable? No, it was deprecated in 2020
Will marking up SD guarantee a rich result appears? No; markup enables eligibility, Google's algorithm decides whether to show it
Are more fields always better? No,fewer but accurate fields > beat more but incorrect fields. Complete + accurate > fully listed but broken
What to use for testing? Rich Results Test(Google specific)/ Schema Markup Validator(generic)
Can I mark up content that is not visible in SD? ❌ No — it must match the visible content, otherwise it is treated as spam

Part 1 — Framework: How to Use SD

1.1 Why use it

Case study data:

  • Rotten Tomatoes: Adding SD to 100K pages → CTR +25%
  • Food Network: SD on 80% of pages → visits +35%
  • Rakuten: User dwell time on SD pages 1.5x, AMP+SD vs AMP only 3.6x engagement
  • Nestlé: CTR of rich result pages is higher than regular +82%

1.2 Selection among the 3 formats

Format Pros Cons When to use
JSON-LD ⭐ <script> Standalone block, not mixed with visible HTML / supports dynamic JS injection / easy to write for deep nesting Decoupled from visible HTML,prone to mismatch First choice
Microdata Tightly coupled with visible HTML Engineering-heavy / high error rate Legacy site maintenance
RDFa HTML5 extension / linked data Complex For learned users

1.3 5 quality guideline ⭐⭐⭐

A. Content

  • Follow spam policies
  • up-to-date(Google will not display outdated information)
  • Original content(yours or user-generated)
  • ❌ Do not mark up invisible content(If JSON-LD states there is a performer, the HTML body must include that performer)
  • ❌ Do not mark up irrelevant / misleading content(fake reviews / unrelated to page topic)
  • ❌ Do not impersonate / mislead about identity / affiliation / primary purpose

B. Relevance

SD must truthfully represent the page:

  • ❌ A live sports site marking up a broadcast as a local event
  • ❌ A woodworking site marking up a tutorial as a recipe

C. Completeness

  • required fields are mandatory to be eligible
  • The more recommended fields → the higher the quality → rich result ranking boost(job seekers prefer jobs with listed salaries; recipes with real user reviews get a boost)

D. Location

  • SD Place SD on the page it describes on it
  • For duplicate pages (http vs https / www vs non-www)mark up both versions with the same SD

E. Specificity

  • Use the most specific schema.org type / property(NewsArticle not CreativeWork)
  • Check additional guidelines in the documentation for each specific feature

F. Images

  • Images must be relevant to the page(NewsArticle.image matching news content)
  • Image URLs must be crawlable and indexable

1.4 2 patterns for multiple items on the same page

Nesting(Nesting child items under the main item) — suitable for tightly related content:

{
  "@type": "Recipe",
  "name": "Banana Bread",
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.7, "ratingCount": 123 },
  "video": { "@type": "VideoObject", "name": "How To...", "contentUrl": "..." }
}

Link individual items using @id Link — suitable for multiple independent items:

[
  { "@type": "Recipe", "@id": "https://example.com/banana-bread", "name": "..." },
  { "@type": "BreadcrumbList", "itemListElement": [...] }
]

⚠️ If you do not use @id to link them, Google may not know that the video is about the recipe.

1.5 Use a main type + auxiliary types to unlock multiple rich results

Example: a recipe page:

  • Main: Recipe
  • Auxiliary: Video + Review + BreadcrumbList

→ eligible for recipe rich result / video search / review snippet simultaneously.

1.6 5 steps for testing + deployment

1. 加 required properties
2. 遵 guidelines
3. Rich Results Test 验 syntax
4. 部署 + URL Inspection tool 看 Google 渲染的版本
5. 提交 sitemap;Search Console Rich Results status report 跟进

1.7 Monitoring

Search Console → Rich result status reports(one report per type). After fixing an issue → request review.

1.8 SD spam manual action

An issue → loss of rich result eligibility,but does not affect web search ranking. Search Console Manual Actions report Check.


Part 2 — Complete Overview of the 34 Types ⭐⭐⭐

Each entry marks required fields(most core) + gotcha(common pitfalls) + search appearance. For complete field tables → click the type name to link to Google's official documentation.

2.1 News / Article Category

Article / NewsArticle / BlogPosting

  • Required: headline + image(three aspect ratios: 1x1/4x3/16x9) + datePublished + dateModified + author(Person or Organization,must include url not just name)
  • gotcha: author.name must match the visible byline; author as an organization is also acceptable
  • Appearance: title link / large image / byline date / Top stories candidate

Speakable(news read-aloud)

  • Required: cssSelector or xPath pointing to the speakable passage on the page
  • Applicable: only for news + en-US/en-CA/en-AU/en-IE/en-NZ/en-UK 6 locale
  • gotcha: short passages ≤ 30 seconds, only mark up the headline and lede

Subscription / Paywalled Content

  • Required: add NewsArticle on isAccessibleForFree: false + hasPart: { @type: "WebPageElement", isAccessibleForFree: false, cssSelector: "#paywall" }
  • gotcha: Must be marked up with SD, otherwise Googlebot sees the full content but users cannot = cloaking spam

FactCheck

  • Required: ClaimReview containing claimReviewed + reviewRating
  • gotcha: The site must clearly be a professional fact-check site (independent third party)

2.2 Ecommerce Category

Product + ProductGroup

  • 2 major categories:
    • Product snippet — review pages (cannot purchase directly)
    • Merchant listing — purchasable product pages (supports size / shipping / return)
  • Overlap: Required product info for Merchant listings is usually automatically eligible for Product snippets
  • Variants → use ProductGroup + child Product

Product Snippet(review/comparison pages)

  • Emphasize pros + cons
  • information-rich reviews

Merchant Listing(purchasable)

  • size / shipping / return / availability, etc.

Product Variants

  • ProductGroup parent + multiple Product children (each variant has an independent URL)
  • Helps Google understand which items are the same product in different sizes/colors

Review Snippet

  • Applicable subject: Book / Recipe / Movie / Product / SoftwareApp / LocalBusiness
  • Required: reviewRating + author + itemReviewed
  • ⚠️ Ratings must come from real users,fake 5-star ratings → manual action

Return Policy(Organization policy)

  • nested in Organization
  • Unlocks result enhancement to display return policy

Shipping Policy(Organization policy)

  • nested in Organization
  • Displays shipping cost / free shipping / delivery time

Loyalty Program(Organization policy)

  • nested in Organization
  • Displays points/membership programs

2.3 Organizations Category

Organization

  • Required: name + url + logo(image)
  • Optional: contactPoint / sameAs / legalName / taxID / iso6523Code / address
  • Appearance: Knowledge Panel

LocalBusiness

  • Subtypes: Restaurant / Hotel / Store etc.
  • Required: name + image + address(PostalAddress)+ priceRange + usually openingHoursSpecification
  • Appearance: Knowledge panel includes opening hours / ratings / directions / book/order action

2.4 Jobs Category

JobPosting

  • Required: title + description(full HTML) + datePosted + hiringOrganization + jobLocation or applicantLocationRequirements
  • Strongly recommended: baseSalary(jobs with listed salaries get a ranking boost)
  • gotcha: validThrough must be set; after expiration, the listing is automatically removed from job search; expired listings not removed trigger a manual action; the site must host real, applicable jobs, no spam allowed

Employer Aggregate Rating

  • nested under Organization expresses employer ratings
  • Data requires multiple user evaluations

2.5 Entertainment Category

Movie

  • Required: name + image + dateCreated(release date)
  • Single page / carousel
  • nested aggregateRating / director / actor
  • Required: name + startDate + location
  • Physical event: location.@type = Place + address
  • Online event: location.@type = VirtualLocation + url
  • Mixed: use an array
  • eventStatus: EventScheduled / EventRescheduled / EventCancelled / EventPostponed / EventMovedOnline
  • gotcha: Must be a leaf page (single event); listing pages are invalid

Carousel(used in combination)

  • Not an independent type,must be combined:Recipe / Course / Restaurant / Movie
  • Use ItemList + itemListElement
  • single-result carousel for multiple items on the same site

Carousels Beta(new feature)

  • Multi-site carousel (beyond a single site)
  • still in beta

Vacation Rental

  • Required: name + image + address + containsPlace + latitude/longitude + numberOfRooms etc.
  • gotcha: Onboarding has application requirements; you must first apply to join the program

2.6 Food and Drink Category

  • Required: name + image + recipeIngredient + recipeInstructions(step-by-step)
  • Strongly recommended: nutrition + aggregateRating + video + prepTime/cookTime/totalTime(ISO 8601 PT1H30M)
  • Single page / host carousel
  • enriched: users can search by calories/time

2.7 Education and Science Category

Course + Course List

  • Single course uses Course
  • Multi-course carousel uses ItemList containing Course children
  • Required: name + description + provider

Education Q&A

  • Education card format (for student learning)
  • Required: QAPage or Quiz + complete Q+A content

Math Solvers

  • Helps students find step-by-step solutions to math problems
  • Required: MathSolver containing mathExpression + subjectOf(walkthrough)

Dataset

2.8 Q&A / Forum / General Category

FAQPage ⚠️ Major change

⚠️ FAQ rich results will no longer be displayed starting 2026-05-07. Tools will be removed in 2026-06. Search Console API support will be removed in 2026-08. New sites do not need to add it, existing sites may leave it in place.

  • History: only government/medical authoritative sites were eligible for rich results (scope narrowed starting 2023)
  • Alternative: QAPage(single question with multiple user answers)

QAPage

  • 1 question with multiple user answers (forum / Stack Overflow / Quora style)
  • Required: Question + at least 1 Answer(can be acceptedAnswer or suggestedAnswer)
  • gotcha: There must be real user questions + real answers, auto-generated FAQs are not allowed

Discussion Forum

  • Short-form UGC (forum posts) + threaded or non-threaded discussions
  • Required: DiscussionForumPosting containing headline + text + author + datePublished
  • gotcha: Comments use Comment nesting

Profile Page

  • Pages about a single person / organization (associated with the site)
  • Required: ProfilePage + contains mainEntity is Person/Organization
  • gotcha: used for filters such as Perspectives

2.9 General / Cross-domain Types

  • Required: itemListElement array, each ListItem contains position + name + item(URL, the last item may omit the item)
  • Appearance: alternative URL for search results, explicit breadcrumbs
  • Multiple breadcrumb trails: the same page may have multiple BreadcrumbList(when more than one display path exists)

Video (VideoObject)

Book

  • Single book Book or series BookSeries
  • Required: name + author + workExample(each edition/format Book)
  • Suitable for book review sites / publishers

Software App

  • Required: name + applicationCategory + operatingSystem + offers or aggregateRating

Image License Metadata

  • Add image metadata to help Google Images display author / usage license / information
  • Required(attached to ImageObject ):creator + creditText + copyrightNotice + license(URL pointing to the license page) + acquireLicensePage(URL)

Only 4 types can be used for single-site carousels(ItemList included):

  1. Recipe carousel
  2. Course carousel
  3. Restaurant(LocalBusiness child) carousel
  4. Movie carousel

Format:

{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "url": "https://example.com/recipe-1" },
    { "@type": "ListItem", "position": 2, "url": "https://example.com/recipe-2" }
  ]
}

The URL of each listItem must point to an independent leaf page(with the complete SD there).


Part 3 — JavaScript-generated SD

3.1 Two approaches

A. Google Tag Manager(GTM):

  1. Install GTM
  2. Add a Custom HTML tag → paste JSON-LD
  3. Publish the container
  4. Use GTM variables to extract data from the page (to prevent SD from being out of sync with page content)
    function() { return document.title; }
    

B. Custom JS:

3.2 ⚠️ Special pitfalls for Product SD + JS

Shopping crawl frequency will decrease + reliability will worsen, which is a problem for fast-changing content (inventory / price).

Fix:

  • Prioritize server-side rendering Product SD
  • The server has sufficient capacity to handle increased crawl from Google

3.3 Testing

Use the URL Inspection tool to check whether the post-render HTML actually contains SD.


Part 4 — Image License Metadata Details

4.1 Purpose

Displayed in Google Images:

  • Image author
  • license information
  • How to use(free/paid)
  • Attribution(credit)
  • Get the license page URL

4.2 5 required / recommended fields (added on ImageObject )

Field Meaning
creator Person or Organization, with name
creditText displayed credit name (may differ from creator)
copyrightNotice © Brand Name 2024 form
license URL pointing to the license page
acquireLicensePage URL pointing to purchase/obtain license page

4.3 Implementation

{
  "@context": "https://schema.org/",
  "@type": "ImageObject",
  "contentUrl": "https://example.com/image.jpg",
  "license": "https://example.com/license",
  "acquireLicensePage": "https://example.com/how-to-license",
  "creditText": "Labrador by Andy Wong",
  "creator": { "@type": "Person", "name": "Andy Wong" },
  "copyrightNotice": "© 2024 Andy Wong"
}

Part 5 — Anti-pattern Collection

# Anti-pattern Consequence
1 Marking invisible content (JSON says there is a performer / HTML does not) Spam manual action, loss of rich results
2 Marking misleading / irrelevant content (fake reviews) Same as above
3 Use data-vocabulary.org Completely invalid(deprecated in 2020)
4 Microdata / RDFa / JSON-LD Mixing the same type Google gets confused and selects the most complete one
5 Only filling required fields, leaving all recommended fields empty Lower rich result ranking
6 Filling all recommended fields but inaccurate/incomplete Worse than filling fewer fields
7 Placing SD on irrelevant pages(e.g., BreadcrumbList describing another page) Invalid
8 Duplicate content Only add SD to the canonical page, do not add it to duplicates Both versions should have the same SD added
9 Using generic CreativeWork instead of NewsArticle Loss of specificity
10 Having multiple reviews / FAQs but only marking some Misleading, triggers manual action
11 FAQ rich result eligibility (discontinued starting 2026-05-07) Wasted effort — use QAPage / switch to Article instead
12 Speakable eligibility for all languages Only 6 English locales
13 JobPosting validThrough not set Expired jobs displayed → manual action
14 Product SD generated with JS without SSR Shopping crawl frequency drops, inventory/prices inaccurate
15 Paywalled content without SD Treated as cloaking spam
16 Adding SD for Vacation Rental without going through the application process Invalid
17 Image License marked but no real license exists manual action

Part 6 — Complete Type Index (34 types)

Type Link Category
Article / NewsArticle / BlogPosting docs News, Sports
Book docs Entertainment
Breadcrumb docs Generic
Carousel docs Combined with Recipe/Course/Movie/Restaurant
Carousels Beta docs Beta
Course / Course List docs Education
Dataset docs Education
Discussion Forum docs UGC
Education Q&A docs Education
Employer Aggregate Rating docs Jobs
Event docs Entertainment
FactCheck docs News
FAQPage ⚠️ deprecated 2026-05-07 docs (deprecated)
Image License Metadata docs Generic
Job Posting docs Jobs
Local Business docs Organizations
Loyalty Program docs Ecommerce
Math Solvers docs Education
Merchant Listing docs Ecommerce
Movie docs Entertainment
Organization docs Organizations
Paywalled Content docs News
Product docs Ecommerce
Product Snippet docs Ecommerce
Product Variants docs Ecommerce
Profile Page docs Generic
Q&A Page docs UGC
Recipe docs Food and Drink
Return Policy docs Ecommerce
Review Snippet docs Ecommerce / Reviews
Shipping Policy docs Ecommerce
Software App docs Generic
Speakable docs News(EN 6 locale)
Vacation Rental docs Requires application
Video docs Generic

Part 7 — Tools

Tool Purpose
Rich Results Test Google-specific validation + preview
Schema Markup Validator Generic schema.org validation (no Google-specific warnings)
Search Console Rich result status reports Monitor type-level errors after deployment
Search Console URL Inspection Check what Google actually receives for a single URL

⚠️ Structured Data Testing Tool has migrated to Schema Markup Validator (2020-12).


Part 8 — Related Wiki

Last updated

2026-05-17 — Compiled based on Google Search Central's 40 appearance/structured-data series articles (latest from 2024-10 ~ 2026-05).Major change: FAQ rich results discontinued starting 2026-05-07.

Sources and related materials