What this is actually checking
When your product appears in Google with a price, a stock status and a row of stars, that comes from a block of structured data in your page — not from the visible text. If that block is missing a required field or formats one wrongly, Google quietly declines to use any of it. The page looks perfect. The listing loses the three things that make people click.
Nothing warns you. There is no error, no email, no entry in Search Console telling you a price was rejected. That is what makes this failure expensive: it can run for months.
The mistake almost everyone makes
Google requires price to be a plain number. Not
$29.99, not 29,99, not From 29.99 —
just 29.99, with the currency in a separate
priceCurrency field. Templates that reuse the human-readable
price string get this wrong constantly, and it invalidates the entire offer.
The second most common: an aggregateRating with a
ratingValue but no reviewCount. A rating with
nothing saying how many people gave it is invalid, and the stars vanish.
What it cannot tell you
Whether Google will actually show a rich result. That decision is Google's and takes in things no external tool can see. What this checks is eligibility — whether the markup is valid and complete. Valid markup is necessary but not sufficient, and any tool claiming otherwise is guessing.
It also reads JSON-LD only. If your shop uses microdata, this will report no structured data when you have plenty.