A merchant offer has a malformed active price

In the reportOffer price value is malformed

structured_data_invalid_price_format · Issue

Short answer

A purchase price in a captured merchant offer fails the numeric price check.

Severity: Medium. Correct the active offer price and its markup.

Why it matters

Merchant listings require an eligible product offer with a suitable active price.

What to do

  1. Use the finding’s raw value, parse reason, declared seller and purchase URL to identify the offer.
  2. Set the current active price as a positive plain dot-decimal value. Put the currency in priceCurrency.
  3. Use a single Offer in merchant-listing context; keep sale, list and member prices in their appropriate fields.

When to leave it as it is: Do not treat a product snippet, a foreign seller’s offer or a shipping charge as the site’s active merchant purchase price. Keep valid list or member prices alongside a valid active offer price.

What we read

We read the page’s captured HTML and its JSON-LD, Microdata and RDFa declarations without executing JavaScript or fetching remote contexts. The finding preserves the property, validated value, original declaration and source byte positions.

Incomplete capture, an unresolved reference, contradictory values or a form outside the supported parser means not checked. It never demonstrates a correction.

We require captured same-site seller identity and an owned purchase URL before applying merchant-price requirements. An omitted offer URL uses the captured page; Product plus Offer alone cannot establish merchant context. This is a conservative evidence policy, not an extra Google-required field.

Offer.price takes precedence over priceSpecification. Without it, only an unmarked active purchase specification is checked; marked list/member prices and compound components are not substituted.

A captured Microdata content attribute supplies the machine price; the original standard property value remains visible in evidence.

Example & evidence

Illustrative correction; this is not a live audit.

"price": "19,99", "priceCurrency": "EUR"
"price": "19.99", "priceCurrency": "EUR"

Confirm & check again

Check for yourself: Compare the reported property with the HTML served at this URL. Validate the corrected markup with the appropriate structured-data test.

Check again: Full audit — Run another full site audit. A correction is confirmed only for the same page with sufficient captured coverage and no remaining violation. Missing coverage does not close the finding.

Limits & sources

Merchant context that cannot be proven remains not checked. This rule does not evaluate every price on a page or diagnose all merchant-listing requirements.

Zero-price product snippets are not automatically merchant-listing errors. Currency-code validation and required-field checks have separate owners.

Confidence: High The finding records an exact offline validation reason. It does not establish Google indexing, ranking or rich-result display.

Sources

Editorial review: 2 November 2026