Articles

Prices AI agents can read

Usually fixed by: Developer · Typical effort: days

"How much is it?" is one of the first things a shopper asks an AI assistant about a product. If an agent can't find your price, or finds two prices and can't tell which is real, it either guesses or moves on to a store where the answer is clear. Here's how to make your prices unmistakable.

How agents read a price

Agents find prices in two places. The first is the text of the page: the "$18.00" a shopper sees next to the add-to-cart button. The second is structured data: a block of schema.org JSON-LD in the HTML that states the price, currency and stock as plain values. Good stores have both, and they agree.

Both have to be in the HTML your server sends. Many agents, and most AI search crawlers, read that HTML without running JavaScript. If your theme loads prices from an API after the page appears, those agents see a product with no price. To a shopper asking an assistant to compare three coffee grinders, that's a product that doesn't make the list.

What AgentScore checks

Two Readability checks cover prices.

CheckWhat it looks at
Prices are in the page HTMLYour pricing page, or a product page if there's no pricing page. It reads the text of the HTML before JavaScript runs and looks for something that's clearly a price: an amount with a currency symbol ($, €, £, ¥, ₹) or a currency code such as USD, EUR, GBP, CAD or AUD. It passes if it finds one. It warns if prices only appear after JavaScript runs in a real browser, or if it can't find a price at all.
Product pages give price and stock in a form agents can readA product page's HTML, for schema.org Product or ProductGroup data with an offer that gives a price, a currency and availability. It passes with all three, warns if any are missing, if there's only microdata, or if the data is only added by JavaScript, and fails if there's none. Stores only.

AgentScore finds these pages from links on your home page, then from your sitemap, then a common address such as /pricing. If it can't find one, the checks are marked "not tested" rather than failed.

This guide focuses on the visible price and keeping everything consistent. For a full walk-through of product structured data, see Product data that AI shopping agents can read.

Put the price in the HTML

Open a product page, right-click and choose View Page Source (not Inspect, which shows the page after JavaScript). Search for the price. If it's there, agents can read it. If it isn't, the fix belongs to your developer or platform: render the price on the server, as part of the page, and let JavaScript update it afterwards if a shopper changes options.

<p class="price">
  <span>$18.00</span> <span>USD</span>
</p>

For software and services, the same applies to your pricing page: each plan's price, billing period and what it includes should be readable text, not an image or a widget that loads later. If you don't publish prices, say so in plain words, for example "Pricing is quoted per project. Contact sales for a quote." Then an agent can tell people how to get one, instead of reporting that it couldn't find any.

Make the currency unambiguous

"$18" means different things in the US, Canada and Australia. A person infers the currency from where they are. An agent may be working for someone elsewhere, fetching your page from a data center in another country.

  • Use a currency code or prefix when it could be unclear. "US$18.00", "$18.00 USD" or "CA$24.00" leaves no doubt.
  • Always set priceCurrency in structured data using the three-letter ISO 4217 code, such as USD or EUR.
  • Be careful with automatic currency switching. If you change the currency based on the visitor's location, an agent may see a different currency from its user. Give each currency a stable URL or a visible switcher, and keep the currency in the page text and the data consistent.
  • Say whether tax is included. "Includes VAT" or "plus sales tax" changes the answer to "how much is it?".

Sale prices and "from" prices

Discounts are where agents most often misread prices. A page showing "$24.00 $18.00" with the first one struck through looks obvious to a person, because they can see the line through it. An agent reading text may see two prices side by side.

  • Label both prices in words. "Was $24.00, now $18.00" reads correctly in any form.
  • Mark the old price up as removed. Use <del> or <s> for the original price, not just a CSS line-through.
  • Put the price the customer will pay in structured data. The offer's price should be the current sale price. If the sale ends on a known date, priceValidUntil says so.
  • Make "from" prices explicit. "From $18.00" on a product with several sizes should say what the $18.00 buys, such as "From $18.00 (340 g)".
<p class="price">
  Was <del>$24.00</del>, now <strong>$18.00 USD</strong>
  <span>Sale ends October 31</span>
</p>

Products with variants

When sizes, colors or pack sizes have different prices, agents need to know which price goes with which option. A single price that changes with JavaScript when a shopper picks a size is invisible to an agent that doesn't click.

  • List variant prices in the HTML, for example in the option labels: "340 g, $18.00" and "1 kg, $44.00".
  • Describe each variant in structured data. Schema.org's ProductGroup with hasVariant gives each option its own offer with its own price and availability. AgentScore reads offers inside variants too.
  • Give variants their own URLs where your platform supports it, so an agent can link a shopper to exactly the option they asked about.

Keep every price consistent

An agent may see your price in several places: the page text, the JSON-LD, your product feed in Google Merchant Center or other shopping channels, and the cart. If they disagree, the agent can't know which is right. It may quote the wrong one, or treat your store as unreliable. Search engines may ignore structured data that doesn't match the page.

One source of truth: generate the visible price, the structured data and your product feeds from the same data, so a price change updates all of them together. Hand-entered prices in a separate feed or a hard-coded JSON-LD block are the usual cause of mismatches.

Unit prices help too. For groceries, coffee, cosmetics and anything sold by weight or volume, a unit price such as "$5.29 per 100 g" lets an agent compare fairly across pack sizes.

Your checklist

  1. View the source of a product page and a pricing page. Is the price there?
  2. Is the currency clear without knowing where the visitor is?
  3. Do sale prices say which price is current, in words?
  4. Does each variant's price appear in the HTML or the structured data?
  5. Do the page, the JSON-LD, the feed and the cart all show the same price?
  6. Run AgentScore and check both price checks pass.

Prices are one of the facts agents most need to get right before they recommend you or buy from you. For the step after that, getting the item into a basket and through checkout, see our guide to agent-ready checkout.

← All articles Test your site with AgentScore →

Can AI agents use your site?

Get your free AgentScore in under a minute. No sign-up needed.