What belongs on a pricing page so AI answers correctly?
Price, currency, billing period, what each tier includes and the update date: write these five as text on the page. If one is missing, AI can only guess. Here is the item-by-item list.
| Element | How to write it | What happens without it (inference) |
|---|---|---|
| Plain-text price | Write $19 as text, not only in an image or a pop-up that needs a click | The price can't be read, so an old price from elsewhere gets quoted |
| Currency | Write the currency code or symbol and say whether tax is included | Can't tell dollars from another currency |
| Billing period | State "one-time", "monthly", "yearly" or "per seat per month" outright | A one-time price gets answered as a monthly fee, or the reverse |
| What each tier includes, and its limits | List each tier's quantities, seats and feature caps in a table | Can't answer "which tier is enough" |
| Upgrade and repeat-purchase rules | State the price difference to upgrade and how renewals are charged | Can't answer how much it costs to upgrade from a lower tier |
| Refund policy | State in one sentence whether refunds are possible | No sentence to quote when a user asks "can I get a refund?" |
| Update date | Write "prices updated 2026-11" on the page | Can't tell which price is the newer one |
| Structured data | Offer's price and priceCurrency, matching the page text | The machine-readable version and the page disagree and contradict each other |
"What happens without it" in the table is inference: nobody has published why AI gets prices wrong. Only one item has an official basis: Google's merchant listing documentation requires a price above 0 and a three-letter ISO currency code, and structured data must match the visible page text.
What commonly makes AI get a price wrong?
| Cause | How to spot it | Why |
|---|---|---|
| The price is in an image or needs scripts to render | Fetch the page with curl and search the raw HTML for the price | Crawlers read the raw HTML the server returns |
| The same product shows different prices on different pages | Search every page on the site that shows a price | Inference: when sources contradict each other AI picks one, and which one is not controllable |
| A third-party article shows an old price | Ask AI the price and see who it cites | Observation: AI quotes prices from roundups and reviews |
| A plan was renamed or removed but the old page remains | Check whether the old URL 301-redirects to the current page | Inference |
| It only says "contact sales" | Ask AI what this tier costs and see how it answers | There is no number to quote, so it gives a range or does not answer |
Of the "basis" column, only the first row has been checked by us; the rest are observations or inferences, not rigorous experiments. For whether crawlers run scripts see Do AI crawlers render JavaScript?.
What do two real pricing pages look like?
We read the raw HTML of kagentx's pricing page and MochiStamp's pricing section on its home page on 2026-11-06.
| Item | kagentx /pricing/ | MochiStamp #pricing |
|---|---|---|
| Is the price text? | Yes: $1, $19 and the $18 upgrade are in the body, and also in the title and description | Yes: the four credit packs $5.99, $16.99, $26.99 and $59.99 are in the body |
| Currency and tax | US dollars | US dollars, tax included, with approximate yen amounts |
| Billing period | States it is one-time, no subscription, no auto-renewal | States one-time credit packs, no subscription |
| Structured data | None on the pricing page | The home page has an AggregateOffer: US dollars, lowest 5.99, highest 59.99, 4 offers, matching the four packs |
| Update date | None on the page | None on the page |
| Standalone page | Yes, /pricing/ | No, it is a section of the home page; /en/pricing returns 404 |
Both pages fall short: kagentx's pricing page has no structured data and no update date, and MochiStamp has no standalone pricing page and no update date. We say so because these are exactly the two items most easily missed in the list above.
How do you write prices in structured data?
SoftwareApplication's offers can hold several Offers, each with name, price and priceCurrency. Google's software app documentation does not mark price as required, but one of aggregateRating or review is needed for rich result eligibility (checked 2026-11-06). The price numbers must match the page exactly.
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Your Product",
"applicationCategory": "BusinessApplication",
"offers": [
{ "@type": "Offer", "name": "Starter", "price": "19.00", "priceCurrency": "USD" },
{ "@type": "Offer", "name": "Team", "price": "49.00", "priceCurrency": "USD" }
]
}
For more types see Does structured data help AI search?; for ecommerce Product fields see How do you get ChatGPT to recommend your product on an export-focused independent store?.
How do you check when you're done?
1. Fetch the pricing page with curl and search for each price
If every price can be found in the raw HTML, crawlers can read it.
2. Check that structured data and body text carry the same numbers
If they differ, fix the page first and then the markup.
3. Ask AI: "How much is X? How many tiers does X have? How much to upgrade from the lower tier?"
Ask several times, noting the number it gives and the URL it cites. If it is wrong, look at the page it cited.
4. When a price changes, update the page, the markup and the sitemap lastmod together
For how to restructure see How to write content AI will quote: before and after; for the overall SaaS approach see How do you get a SaaS product visible in AI search?.
FAQ
How do I write a pricing page so AI answers the price correctly?
Write price, currency, billing period, what each tier includes and the update date as page text, and make the structured data match the body.
Can the price live only in an image?
Not recommended. Crawlers read the raw HTML, so a price in an image cannot be read.
Should I add Offer structured data?
Yes. The price numbers must match what is visible on the page exactly; a mismatch is worse than none.
Why does AI quote an old price?
Commonly a third-party article shows an old price, or your own pages disagree. There is no official explanation; this is observation and inference.
Should a pricing page show an update date?
Yes. With a date, readers and AI can tell which price is the newer one.
Sources
- Google · Merchant listing (Product, Offer) structured data (Checked 2026-11)
- Google · Software app (SoftwareApplication) structured data (Checked 2026-11)
- Google · AI features and your website (Checked 2026-11)
- kagentx evaluations: the data on the case study pages; each example gives its date.