Rich Results: Complete Structured Data for Google
Rich results are search listings with extras: star ratings and prices for products, breadcrumbs instead of a raw URL, event dates, recipe images. Google builds them from structured data on the page, usually JSON-LD. The structured data guide covers the basics; this one is about completeness.
Google only considers a page for a rich result when the markup has the properties that result type requires. Markup that is valid JSON but incomplete is simply ignored, so it is worth checking.
What we look for per type
| Type | Properties we expect |
|---|---|
Product |
name, plus at least one of offers, review or aggregateRating |
Article, NewsArticle, BlogPosting |
headline, image, datePublished |
FAQPage |
mainEntity; every question has a name and an acceptedAnswer with text |
BreadcrumbList |
itemListElement; every item has a position and a name |
Organization |
name, url |
LocalBusiness |
name, address |
Event |
name, startDate, location |
Recipe |
name, image |
For articles and organisations, Google lists these properties as recommended rather than strictly required, but without them the markup gives Google little to work with, so we treat them as expected.
Examples
A product with an offer:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trail Runner 3",
"image": "https://example.com/img/trail-runner-3.jpg",
"offers": {
"@type": "Offer",
"price": "129.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
A breadcrumb trail:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Shoes", "item": "https://example.com/shoes" },
{
"@type": "ListItem",
"position": 2,
"name": "Trail",
"item": "https://example.com/shoes/trail"
}
]
}
Place each block in a script element with type="application/ld+json", anywhere in the page.
Common reasons markup is incomplete
- Theme or plugin defaults. A WordPress SEO plugin may output
Articlemarkup without an image when the post has no featured image. Set a featured image or a default image in the plugin. - Product data not mapped. Shop plugins sometimes leave out
offerswhen a product has variants or no price. Check the variant settings. - Hand-written breadcrumbs that skip
positionornameon some items. - Dates in the wrong place.
datePublishedmust be on the article object itself, in ISO 8601 format (2026-10-28or2026-10-28T09:00:00+00:00).
What completeness does not guarantee
Complete markup makes a page eligible; it does not oblige Google to show a rich result. Google also requires the markup to match visible content and follow its guidelines, and it changes which types it shows. FAQ rich results, for example, are now shown only for a limited set of well-known, authoritative sites such as government and health sites, so FAQ markup on other sites rarely changes the listing.
Always confirm with Google’s Rich Results Test, which shows exactly which results a page qualifies for, and watch the Enhancements reports in Search Console after deploying.
How PerfoMetrix checks this
We parse the JSON-LD blocks in the HTML we already downloaded, including @graph arrays and nested
objects, and check each object of the types above for the listed properties. We send no extra
requests to your site.
| Result | When |
|---|---|
| Pass | every eligible object has its properties |
| Needs attention | at least one object is missing a property (we list which) |
| Information | the page has no markup of these types |
Microdata and RDFa are not checked, and JSON that does not parse is reported by the structured data check instead.
Further reading: Google: structured data search gallery.