Overview
schema.org has hundreds of types; Google supports about thirty for rich results. This card lists the ones worth shipping, the fields each one needs, and the rich result it can earn. Ship JSON-LD in a <script type="application/ld+json"> block; Google prefers it over Microdata or RDFa. For the broader rules, see structured-data.
Top-level types
The types most pages need.
| Type | Use for | Rich result enabled |
|---|---|---|
Article / NewsArticle / BlogPosting | Editorial content. | Article carousel, Top Stories. |
Product | E-commerce product page. | Product snippet, Merchant listings. |
LocalBusiness | Storefront with an address. | Knowledge panel, Maps placement. |
Organization | Company-level entity. | Sitelinks, knowledge panel. |
Person | Individual contributor or public figure. | Knowledge panel. |
Recipe | Cooking recipe. | Recipe rich result. |
Event | Concert, conference, meetup. | Event listing. |
FAQPage | Page of question-and-answer pairs. | Deprecated by Google in May 2026; the markup still validates but no longer earns a rich result. |
HowTo | Step-by-step tutorial. | HowTo rich result (mostly retired in 2023 except for some queries). |
VideoObject | Hosted video. | Video carousel, key moments. |
BreadcrumbList | Site hierarchy for the page. | Breadcrumbs in search snippet. |
WebSite | Site-level metadata. | Sitelinks search box. |
JobPosting | Open role. | Google Jobs. |
Course | Educational offering. | Course list. |
SoftwareApplication | App or game listing. | App rich result. |
Review / AggregateRating | Standalone review or ratings summary. | Star ratings (limited; must be on a host type). |
FAQPage and HowTo still validate but have lost most of their rich-result impact. Ship them only if they help structure the content for AI summarizers.
Article
For editorial pages: blog post, news story, magazine feature.
| Field | Required | Notes |
|---|---|---|
@type | yes | Article, NewsArticle, or BlogPosting. |
headline | yes | Maximum 110 characters. |
image | yes | At least one; high-res preferred (1200x675 16:9). |
datePublished | yes | ISO 8601. |
dateModified | recommended | ISO 8601; powers freshness signals. |
author | required | Person or Organization; include url. |
publisher | recommended | Organization with name and logo.url. |
mainEntityOfPage | recommended | Canonical URL of the page. |
author as a string still validates; Google prefers a full Person with url and sameAs.
Product
For commerce. Pair Product with one of Offer, AggregateOffer, or a review subgraph.
| Field | Required | Notes |
|---|---|---|
@type | yes | Product. |
name | yes | Product name. |
image | yes | At least one URL. |
description | recommended | One paragraph. |
sku / gtin / mpn | strongly recommended | One unique identifier; required for Merchant listings. |
brand | recommended | Brand or Organization. |
offers | required for snippet | Offer with price, priceCurrency, availability, url. |
aggregateRating | optional | Drives stars in SERP. |
review | optional | Individual Review items. |
Offer.availability uses https://schema.org/InStock, OutOfStock, PreOrder, or Discontinued. The full URL is required, not the short token.
LocalBusiness
For brick-and-mortar businesses. Use a more specific subtype when one fits: Restaurant, Dentist, AutoRepair, etc.
| Field | Required | Notes |
|---|---|---|
@type | yes | LocalBusiness or a subtype. |
name | yes | Business name. |
address | yes | PostalAddress with all fields. |
telephone | recommended | E.164 format preferred. |
geo | recommended | GeoCoordinates with latitude, longitude. |
openingHoursSpecification | recommended | Array of OpeningHoursSpecification. |
priceRange | recommended | $, $$, etc. |
image | required for some panels | Storefront or logo. |
url | yes | Canonical URL. |
A LocalBusiness block on every location page is the strongest signal for local pack placement.
Organization
Site-wide entity. Place once on the home page; reference it elsewhere by @id.
| Field | Required | Notes |
|---|---|---|
@type | yes | Organization or Corporation. |
name | yes | Legal or operating name. |
url | yes | Canonical home URL. |
logo | recommended | Square or near-square; minimum 112x112. |
sameAs | recommended | Array of social profile URLs (LinkedIn, X, Wikipedia). |
contactPoint | recommended | ContactPoint with telephone and contactType. |
sameAs populates the knowledge panel; ship every official profile.
VideoObject
For hosted video. Most rich results require a thumbnail and upload date.
| Field | Required | Notes |
|---|---|---|
@type | yes | VideoObject. |
name | yes | Title. |
description | yes | Maximum 5000 characters. |
thumbnailUrl | yes | At least one; multiple aspect ratios help. |
uploadDate | yes | ISO 8601. |
contentUrl | recommended | Direct file URL. |
embedUrl | recommended | Embeddable player URL. |
duration | recommended | ISO 8601 duration: PT2M30S. |
hasPart | optional | Clip items for key moments. |
hasPart with timed Clip entries unlocks “key moments” navigation in the SERP.
BreadcrumbList
Cheap to add; usually shows up in the SERP.
| Field | Required | Notes |
|---|---|---|
@type | yes | BreadcrumbList. |
itemListElement | yes | Array of ListItem. |
ListItem.position | yes | 1-based. |
ListItem.name | yes | Display label. |
ListItem.item | yes | Canonical URL of the level. |
Position numbers must be contiguous starting at 1; gaps invalidate the markup.
Common gotchas
- Pages must show what the markup claims. If a
Productblock lists a price the page does not show, Google flags it as misleading. ReviewandAggregateRatingneed a host type (Product,LocalBusiness, etc.); free-floating reviews do not earn stars.- Use Google’s Rich Results Test, not just the schema.org validator. The latter accepts more than the former rewards.
FAQPageandHowTomostly stopped earning rich results in 2023; Google formally deprecatedFAQPagerich results in May 2026 (Search Console reporting for it follows in June 2026). Both still help LLM summarizers parse the page.- Google tightened its Review Snippet guidance in July 2026 with stricter review-authenticity and disclosure requirements. Re-verify
Review/AggregateRatingmarkup against the current guidelines before relying on star ratings in the SERP. - Use full schema URLs for enumerated values:
https://schema.org/InStock, notInStock. - Place
@idon theOrganizationblock and reference it frompublisherandauthor.worksForto avoid duplicating entity data. - Use
JSON-LDover Microdata. It is easier to maintain, easier to template, and the preferred format.