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.

TypeUse forRich result enabled
Article / NewsArticle / BlogPostingEditorial content.Article carousel, Top Stories.
ProductE-commerce product page.Product snippet, Merchant listings.
LocalBusinessStorefront with an address.Knowledge panel, Maps placement.
OrganizationCompany-level entity.Sitelinks, knowledge panel.
PersonIndividual contributor or public figure.Knowledge panel.
RecipeCooking recipe.Recipe rich result.
EventConcert, conference, meetup.Event listing.
FAQPagePage of question-and-answer pairs.Once shown as expandable; now mostly retired by Google.
HowToStep-by-step tutorial.HowTo rich result (mostly retired in 2023 except for some queries).
VideoObjectHosted video.Video carousel, key moments.
BreadcrumbListSite hierarchy for the page.Breadcrumbs in search snippet.
WebSiteSite-level metadata.Sitelinks search box.
JobPostingOpen role.Google Jobs.
CourseEducational offering.Course list.
SoftwareApplicationApp or game listing.App rich result.
Review / AggregateRatingStandalone 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.

FieldRequiredNotes
@typeyesArticle, NewsArticle, or BlogPosting.
headlineyesMaximum 110 characters.
imageyesAt least one; high-res preferred (1200x675 16:9).
datePublishedyesISO 8601.
dateModifiedrecommendedISO 8601; powers freshness signals.
authorrequiredPerson or Organization; include url.
publisherrecommendedOrganization with name and logo.url.
mainEntityOfPagerecommendedCanonical 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.

FieldRequiredNotes
@typeyesProduct.
nameyesProduct name.
imageyesAt least one URL.
descriptionrecommendedOne paragraph.
sku / gtin / mpnstrongly recommendedOne unique identifier; required for Merchant listings.
brandrecommendedBrand or Organization.
offersrequired for snippetOffer with price, priceCurrency, availability, url.
aggregateRatingoptionalDrives stars in SERP.
reviewoptionalIndividual 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.

FieldRequiredNotes
@typeyesLocalBusiness or a subtype.
nameyesBusiness name.
addressyesPostalAddress with all fields.
telephonerecommendedE.164 format preferred.
georecommendedGeoCoordinates with latitude, longitude.
openingHoursSpecificationrecommendedArray of OpeningHoursSpecification.
priceRangerecommended$, $$, etc.
imagerequired for some panelsStorefront or logo.
urlyesCanonical 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.

FieldRequiredNotes
@typeyesOrganization or Corporation.
nameyesLegal or operating name.
urlyesCanonical home URL.
logorecommendedSquare or near-square; minimum 112x112.
sameAsrecommendedArray of social profile URLs (LinkedIn, X, Wikipedia).
contactPointrecommendedContactPoint 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.

FieldRequiredNotes
@typeyesVideoObject.
nameyesTitle.
descriptionyesMaximum 5000 characters.
thumbnailUrlyesAt least one; multiple aspect ratios help.
uploadDateyesISO 8601.
contentUrlrecommendedDirect file URL.
embedUrlrecommendedEmbeddable player URL.
durationrecommendedISO 8601 duration: PT2M30S.
hasPartoptionalClip items for key moments.

hasPart with timed Clip entries unlocks “key moments” navigation in the SERP.

Cheap to add; usually shows up in the SERP.

FieldRequiredNotes
@typeyesBreadcrumbList.
itemListElementyesArray of ListItem.
ListItem.positionyes1-based.
ListItem.nameyesDisplay label.
ListItem.itemyesCanonical 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 Product block lists a price the page does not show, Google flags it as misleading.
  • Review and AggregateRating need 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.
  • FAQPage and HowTo mostly stopped earning rich results in 2023. They still help LLM summarizers parse the page.
  • Use full schema URLs for enumerated values: https://schema.org/InStock, not InStock.
  • Place @id on the Organization block and reference it from publisher and author.worksFor to avoid duplicating entity data.
  • Use JSON-LD over Microdata. It is easier to maintain, easier to template, and the preferred format.