All guides · SEO

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 Article markup 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 offers when a product has variants or no price. Check the variant settings.
  • Hand-written breadcrumbs that skip position or name on some items.
  • Dates in the wrong place. datePublished must be on the article object itself, in ISO 8601 format (2026-10-28 or 2026-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.

Last updated October 28, 2026