Skip to content

EVAL-003Compare

Price transparency

Checks that every sampled product page carries a price an AI agent can read, in a currency it can identify.

What we check

On each sampled product page we look for a price in the Product JSON-LD offer, as an amount with a currency in the page text, or as a number inside a price element. We check the currency is explicit, that the page does not say "contact for price", that the only price is not a "from" lower bound, and that differently priced variants can be told apart. Whether the structured price matches what shoppers see is a separate check (DISC-005).

Why it matters

Price is the first thing an agent compares. A price drawn as an image, hidden behind "price on request", or shown with $ or kr, which several currencies share, leaves the agent unable to quote or compare your product accurately.

How we check

We read up to 3 product pages. FAIL: any sampled page has no readable price, because it defers ("contact for price", "Preis auf Anfrage" and similar phrases in several languages), shows the price only as an image or canvas, or has none. Otherwise WARN, in order: a deferral phrase sits beside a structured price; variants are priced differently and no offer url matches the page; the currency is not explicit; or every price is a "from" lower bound. A currency is explicit when an ISO 4217 code appears in the text, when priceCurrency or og:price:currency names one, or when the amount carries a single-currency symbol (€, £, zł, Kč, Ft and others). $, ¥, kr, kr., ₩, R$ and ₫ count as ambiguous. Image alt text counts. PASS otherwise. SKIPPED when no product pages were captured.

How to fix it

  1. Show the price as text on every product page, not as an image or canvas.
  2. Set offers.priceCurrency to an ISO 4217 code (EUR, SEK, USD), especially if your storefront shows $ or kr.
  3. Replace "contact for price" with a numeric price.
  4. Where variants cost different amounts, give each Offer its own url.
  5. If your platform's theme outputs Product JSON-LD, check a theme change or plugin has not removed the price or currency.

What good looks like

<p class="price">€49.00</p>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Linen shirt",
  "offers": {
    "@type": "Offer",
    "url": "https://shop.example/products/linen-shirt",
    "price": "49.00",
    "priceCurrency": "EUR"
  }
}
</script>

Sources