Structured data is code that describes your page in a format search engines understand: this is a product, this is its price, these are its reviews. In return, Google can show richer search results with stars, prices, images and other details that earn more clicks. But Google has retired several rich result types in recent years, so it pays to focus on the ones that still work.
What still produces rich results
- Product: prices, availability, ratings and shipping details in regular results and shopping surfaces. One of the most valuable types for stores.
- Review snippets: star ratings for products, recipes, software, books and similar items.
- Breadcrumb: shows your site hierarchy in place of the raw URL. Since January 2025, Google shows breadcrumbs on desktop only; mobile results show just the domain.
- Organization: helps Google show the right logo and details for brand searches.
- Article, Video, Event, Recipe and LocalBusiness: still supported for matching content.
What changed or was retired
- FAQ: since August 2023, FAQ rich results are only shown for well-known, authoritative government and health websites.
- HowTo: rich results were removed in 2023.
- In 2025, Google phased out several more types to simplify results, including Book Actions, Course Info, Claim Review, Estimated Salary, Learning Video, Special Announcement and Vehicle Listing.
- Self-serving reviews: star ratings that a business collects about itself on its own site are not eligible for LocalBusiness and Organization rich results.
Should you remove retired markup?
Product markup example
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trail Runner 2",
"image": ["https://www.example.com/images/trail-runner-2.webp"],
"description": "Lightweight trail running shoe with a grippy outsole.",
"sku": "TR2-BLUE-42",
"brand": { "@type": "Brand", "name": "Example Running" },
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
},
"offers": {
"@type": "Offer",
"url": "https://www.example.com/products/trail-runner-2",
"priceCurrency": "USD",
"price": "129.00",
"availability": "https://schema.org/InStock"
}
}Breadcrumb markup example
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Shoes", "item": "https://www.example.com/shoes" },
{ "@type": "ListItem", "position": 2, "name": "Trail", "item": "https://www.example.com/shoes/trail" },
{ "@type": "ListItem", "position": 3, "name": "Trail Runner 2" }
]
}Rules that keep you eligible
- Mark up only what visitors can see on the page. Hidden prices or invented ratings violate Google's guidelines.
- Use JSON-LD in a script tag. It is Google's recommended format and keeps markup separate from your HTML.
- Keep data current. A price in the markup that differs from the price on the page can get the rich result removed.
- Include all required properties for the type, and as many recommended ones as apply.
How to test
- Rich Results Test: shows which rich results a page is eligible for and flags errors.
- Schema Markup Validator: checks general schema.org validity, including types Google does not use.
- Search Console enhancement reports: show valid and invalid items across your whole site once Google has crawled them.
Eligible is not guaranteed
Rich results earn the click, and a fast page keeps it. Pair accurate structured data with good Core Web Vitals and both halves of the search journey work in your favor.