Short answer: AI answer engines like ChatGPT, Perplexity, and Google’s AI Overviews don’t “read” your pricing page the way a human scans a table — they parse whatever structured data and plain-text patterns are easiest to extract, and they’re notoriously bad at inferring anything that requires visual interpretation, like a price displayed only inside a styled card or a comparison slider. If your plans, prices, and what’s included in each tier aren’t stated in plain, repeated sentences somewhere in the page’s text (ideally backed by schema), there’s a real chance an AI assistant either skips your pricing entirely or — worse — quotes an old number it found cached somewhere else.
We started paying close attention to this after noticing a client’s outdated third-party review page (from a service they’d stopped using two years ago) kept surfacing when we asked ChatGPT and Perplexity what the client charged. The AI wasn’t wrong to cite it — it was the most explicit, structured statement of a price it could find. Their actual, current pricing page just wasn’t giving the model anything to work with.
Why this is worth fixing now
More buying research is starting with an AI assistant instead of a search box, especially for B2B software and services where someone might ask “what does [category] cost” before they’ve even identified specific vendors. If your pricing page can’t be cleanly extracted, you’re not just invisible in that moment — you risk being replaced in the answer by a competitor’s page, a stale directory listing, or a review site’s guess. For a small business, that’s a lead that never even reaches your site.
This sits right alongside the work we’ve covered on writing comparison pages that get cited by AI answer engines — pricing pages are really a special case of comparison content, except the reader is comparing your offer against everyone else’s in a category the AI is trying to summarise fairly.
What AI models actually parse on a pricing page
Based on how these systems are documented to work and what we see in practice, three things matter far more than visual design:
- Plain-text price statements. “€349/month” written as text in a sentence or table cell is far more reliable than a number rendered inside an SVG, an image, or a JavaScript-only pricing widget that doesn’t appear in the page’s initial HTML.
- Structured data that matches the visible price exactly. Schema.org markup —
Product,Offer, or for service businessesServiceandOfferCatalog— gives models a machine-readable confirmation of what’s on the page. Industry analyses of AI citation behaviour put pages with correctly implemented schema at roughly 2.5x more likely to appear in AI-generated answers than equivalent pages without it. - Consistency across the page and the rest of your site. If your pricing page says €349 but a blog post from eight months ago says €299, models have no reliable way to know which is current, and may cite either — or average them into something wrong.
The schema that actually helps
For a product business, Product schema with a nested Offer (including price, priceCurrency, and availability) is the standard. For an agency or service business — which describes most of the SMEs reading this — Service schema is the better fit, since Product schema was built for physical goods and doesn’t map cleanly onto retainers or monthly packages. Useful properties to include:
serviceType— what the service actually is, in plain languageprovider— your business, linked to yourOrganizationschemaareaServed— relevant if you serve specific regions or work internationallyhasOfferCatalog— a list of your tiers or packages, each with its own price
If you already publish FAQ content, pairing your pricing page with FAQPage schema that answers “how much does [service] cost” in a direct sentence gives models a second, redundant path to the same correct number — redundancy is a feature here, not a waste of effort.
Formatting the visible text to match
Schema alone isn’t enough if the visible page contradicts it or hides the same information behind interaction. A few formatting habits make a measurable difference:
State the price as a sentence, not just a number in a box
“Our starter package costs €199 per month and includes X, Y, and Z” is far easier for a language model to extract and quote accurately than a bare “€199” sitting inside a pricing card with no surrounding sentence.
Put what’s included next to the price, not behind a toggle
Accordion sections, tabs, and “see full comparison” modals that require a click are frequently invisible to how these pages get parsed. If a plan’s contents matter, state them in the initial page text.
Use a real HTML table for tier comparisons
Tables are one of the most reliably parsed structures on the web — they were built to represent exactly this kind of side-by-side data, and language models handle them well.
Date-stamp or version your pricing page
A simple “Pricing last updated: [month, year]” note at the top helps models trust which of several possible pages holds the current number, and gives you a paper trail if a price changes and old citations linger.
Common mistakes we see
| Mistake | Why it hurts AI visibility |
|---|---|
| Price only shown after a “get a quote” form | No number for the model to extract at all — the page effectively looks priceless |
| Pricing loaded dynamically via JavaScript | May not appear in the raw HTML the crawler retrieves |
| Old pricing mentioned in blog posts or case studies | Competes with your current page as a “source,” and might win |
| Schema price that doesn’t match the visible text | Creates a trust conflict; some models will simply ignore both |
| Vague tier names with no price nearby (“Growth,” “Scale”) | Forces the model to guess which price maps to which tier |
How to test what AI assistants currently say about you
Before you change anything, it’s worth spending ten minutes finding out what the models are already saying. Open ChatGPT, Perplexity, and Gemini separately and ask each one a version of “what does [your business name] charge for [your main service]?” and a second, more generic question like “how much does [your service category] typically cost?” without naming your business at all.
Three outcomes are common, and each tells you something different:
- The model quotes your current price correctly. Good — now make sure it stays that way by keeping the schema and visible text in sync whenever you update rates.
- The model quotes an old price or a competitor’s number. This usually means an outdated page (yours or someone else’s) is winning the citation, which is the exact problem this article is about.
- The model says it can’t find pricing information. This is the clearest signal that your page isn’t giving crawlers anything usable — no schema, no plain-text price, or both.
Re-run the same three questions a few weeks after you make changes. Because AI answer engines vary in how often they re-crawl and re-index content, don’t expect an overnight fix — but a page that’s newly well-structured should start showing up correctly within a handful of weeks rather than months.
A short checklist before you publish
- Every price appears as visible, crawlable text — not only inside an image, widget, or form-gated reveal.
- Service or Product schema is present and its price matches the visible price exactly.
- Older pages mentioning your pricing have been updated or pruned if the number has changed — see our note on whether schema markup actually gets you cited by AI for how far this kind of consistency work goes.
- What’s included in each tier sits in the initial page text, not behind a click.
- A FAQ section directly answers “how much does [service] cost,” reinforcing the schema with a second, human-readable source.
None of this requires a redesign. Most of the pricing pages we’ve audited need a paragraph rewritten, a stale blog post updated, and a block of schema added — an afternoon’s work that closes a gap most small businesses don’t know they have until an AI assistant quotes the wrong number to a prospect who never tells them it happened.