From Ritu Raj | Product & Market Analysis

AI Pricing Accuracy: Why Assistants Quote Your SaaS Price Wrong

On this page

An AI assistant will quote a price for your product whether or not it has ever read your pricing page. When journalists audited more than 3,000 AI answers, 45% carried at least one significant issue. AI pricing accuracy is not a model problem you can escalate to a vendor. It is a data problem spread across four surfaces you control, and most of the repair work is unglamorous.

Key takeaways

  • The assistant is usually not reading your live pricing page. No major AI crawler executes JavaScript, and 34.8% of OpenAI crawler fetches in Vercel's sample landed on 404 pages.
  • Schema markup is not the lever most guides claim it is. Google's own documentation states there is no special schema.org structured data needed to appear in AI Overviews or AI Mode.
  • One channel accepts a price directly from you, and it was built for retail. OpenAI's product feed spec makes price and currency required fields, with an is_digital flag but no clean row for seat based tiers.
  • Buyers already assume they are being misled. 51% of B2B buyers say they are more likely to meet misleading information from generative AI, against 49% who say the same of sales representatives.
45%Of AI answers carried at least one significant issue. Source: EBU and BBC, October 2025.
34.8%Of OpenAI crawler fetches hit a 404 page, against 8.2% for Googlebot. Source: Vercel and MERJ.
51%Of B2B buyers expect misleading information from generative AI. Source: Gartner, reported by Demand Gen Report, 2026.

The short answer

AI assistants misquote SaaS pricing because they answer from stale training data or from a page they could not read. The fix is to publish the number in plain server rendered HTML on a stable URL, allow the retrieval crawlers, mark it up, and correct the third party listings they cite instead of you.

What AI pricing accuracy actually measures

AI pricing accuracy is the gap between the price on your pricing page and the price an assistant states when a buyer asks. It is not a ranking metric. It is a factual correctness metric, and it fails quietly.

The failure is quiet because nobody complains. A buyer who is told your entry plan costs $79 when it costs $49 does not email you. They compare $79 against a competitor and move on, and you never see the query.

That is the part I would take seriously before any of the tactics below. This is a category of lost pipeline with no line item, no dashboard and no owner, which is exactly the kind of problem that survives for years.

Gartner's 2026 buyer research puts numbers around the exposure. 45% of B2B buyers now use generative AI, mostly to gather information on vendors and products, and buyers consult about seven information sources during a purchase. Your pricing page is one of the seven at best.

Why assistants get SaaS pricing wrong

There are four distinct causes and they need four distinct fixes. Treating them as one problem is why most attempts at this fail.

It answered from memory, not from your site

An assistant only fetches a page when the product decides retrieval is warranted. Otherwise it answers from parameters fixed at training time, which encode whatever your price was when the crawl happened.

You cannot influence that directly. What you can influence is whether the retrieval path, when it fires, finds a clean current number. Every fix below is really a fix to that path.

The crawler could not read the page

This is the most common technical cause and the easiest to check. Vercel and MERJ analysed crawler traffic and found that no major AI crawler executes JavaScript, including OpenAI's, Anthropic's and Perplexity's. ChatGPT's crawler requested JavaScript files in 11.5% of its fetches and ran none of them.

If your prices load from an API after the page renders, they are not in the HTML the crawler read. The crawler saw the plan names, the feature bullets and an empty price slot. It then filled that slot from somewhere else.

There was no price on the page to read

A large share of B2B software hides pricing behind a contact form. That is a defensible commercial choice and it has a specific cost here: an assistant asked a direct pricing question will not answer "unknown".

It will assemble a figure from review sites, resellers, old press coverage or a competitor's comparison page. You have not avoided being priced in public. You have delegated the pricing to whoever wrote about you last.

The pricing URL moved and nobody redirected it

Crawler indexes go stale faster than you expect. In the same Vercel sample, 34.82% of OpenAI crawler fetches and 34.16% of Anthropic's landed on 404 pages, against 8.22% for Googlebot. ChatGPT's crawler spent a further 14.36% of fetches following redirects.

A pricing page relaunch that changes the URL without a permanent redirect removes your only authoritative source from the index. The stale copies on review sites do not move.

Four places the number falls out Each stage removes your price from the answer for a different reason, and needs a different fix. Your page renders the price Crawler fetch no JavaScript run Index entry may be a dead URL The answer states a figure FAILS WHEN Price is behind a contact sales form. Price is injected by client side script. Pricing URL moved without a redirect. Model falls back to a third party page. The last box always produces a number. The question is only whose number it is. Source of crawler behaviour: Vercel and MERJ crawler analysis.
Notice that no stage returns nothing. An assistant asked for a price answers with a price, so every upstream gap gets filled from somewhere you did not choose.
Four failure modes, and how to test for each in an afternoon
Failure modeHow to test itWhat fixes it
Price is not in the served HTML.View source, not the rendered page. Search for the digits.Server render or statically generate the pricing table.
No published price at all.Read your own pricing page as a stranger would.Publish a floor price, even if the real deal is custom.
Pricing URL returns 404 or redirects.Check server logs for AI user agents hitting dead paths.Permanent redirects from every historical pricing URL.
Retrieval crawler is blocked.Read robots.txt for GPTBot, OAI-SearchBot and ChatGPT-User.Allow the search crawler even if you block the training one.

What the evidence shows, and what it does not

I want to be careful here, because this topic attracts confident numbers that do not survive a look at the source.

The strongest measured finding is the EBU and BBC study published in October 2025. Professional journalists evaluated more than 3,000 responses from ChatGPT, Copilot, Gemini and Perplexity across 22 public service media organisations in 18 countries and 14 languages. 45% of answers had at least one significant issue, 31% had serious sourcing problems, and 20% contained major accuracy issues including hallucinated details and outdated information.

The Tow Center for Digital Journalism found the same shape a year earlier. Across 1,600 queries against eight AI search tools, the systems returned incorrect answers more than 60% of the time, and ChatGPT hedged on only 15 of its 134 wrong answers. Confident and wrong is the default failure mode, which is precisely what makes a wrong price dangerous.

Now the honest part. Both studies measured news attribution, not product pricing. Nobody has published a measured error rate for SaaS pricing specifically. Treat the 45% as directional evidence that assistants misstate verifiable facts at scale, not as a pricing benchmark. Anyone quoting a pricing error percentage at you is extrapolating, and so am I.

Schema markup will not fix this on its own

This is where I disagree with almost every guide written on the subject. The standard advice is to add pricing schema and wait. That advice misreads what schema does.

What Google actually says

Google's documentation on AI features is unusually direct. To appear as a supporting link in AI Overviews or AI Mode, a page must be indexed and eligible to show with a snippet, and there are no additional technical requirements. The same page states you do not need to create new machine readable files, AI text files or markup, and that there is no special schema.org structured data to add.

That single sentence retires a large amount of published advice, including the llms.txt file that vendors have been selling as an AI visibility fix. I would not spend a day on it.

What schema still buys you

Structured data is still worth adding, for a narrower reason. It removes ambiguity about which number on the page is the current price, and that ambiguity is real when a pricing table shows monthly, annual, discounted and struck through figures at once.

For software, the relevant type is SoftwareApplication. Google's documentation makes offers.price a required property and recommends offers.priceCurrency whenever the price is above zero, noting that Google will otherwise try to infer the currency. Inferring your currency is not something you want happening.

Treat markup as hygiene that makes one number unmistakable, not as a growth lever. The wider question of whether generative engine optimisation tactics survive testing is covered in the review of what the GEO evidence actually supports. The relationship between classic rank and AI citation is taken up in the analysis of how ChatGPT citations track Google rankings.

The channels that will take a price directly from you

Here is the counterintuitive part. There is a channel where you can hand an assistant a price and have it used verbatim, and almost no software company is in it.

OpenAI publishes a product feed specification for ChatGPT shopping. The required fields include an item ID, title, description, brand, and a landing URL that must return HTTP 200. They also require an image, an availability status, and a price expressed as a positive amount with a three letter currency code. Feeds carry an is_digital flag, so non physical goods are inside the specification's scope.

The catch is that it was designed for retail catalogues. A seat based plan with usage tiers, an annual discount and a custom enterprise band does not map onto one feed row. You can express a starting price and a landing page. You cannot express your pricing model.

The gap every feed spec has for software

Google Merchant Center has the same shape and the same limitation. Merchant listing structured data wants an active price and a currency inside an Offer, which suits a physical product and fits a metered software plan badly.

So the practical position for most B2B software is this. Feeds are a partial answer where a simple paid plan exists, and irrelevant where pricing is genuinely custom. The rest of the work happens on your own HTML and on other people's pages. If your billing model is itself hard to state in one number, that is worth fixing before the markup. The piece on credits and token pricing confusion covers why buyers give up on those pages.

Where a price you publish is actually accepted as data Verdicts follow the platforms' own published documentation, not third party guidance. Channel Takes a structured price What it is good for Google AI Overviews and AI Mode No special schema Indexed, snippet eligible HTML OpenAI product feed Yes, price required Simple paid plans, digital goods Google Merchant Center listings Yes, price and currency Retail shaped catalogue rows llms.txt and similar AI text files Not used Nothing Google documents Google states no new machine readable files or special schema are needed for its AI features. Sources: Google Search Central AI features documentation; OpenAI product feed specification.
Two of these four rows accept a number from you. Both were designed for retail, which is the constraint software vendors keep discovering late.

The six step correction

Everything above narrows to six changes. Five of them are cheap. One of them is a commercial decision that is not yours alone to make.

The correction, in the order that pays back fastest
StepWhat it fixesEffort
1. Serve the price in the initial HTML.Crawlers that never execute your JavaScript.Half a day of front end work.
2. Publish a number, even a floor.Pages with nothing for an assistant to read.A pricing decision, not an engineering one.
3. Freeze the pricing URL and redirect the old ones.Index entries pointing at dead paths.An hour, plus a log review.
4. Add SoftwareApplication markup with offers.price.Ambiguity about which figure is current.One JSON-LD block.
5. Allow the retrieval crawlers in robots.txt.Self inflicted absence from ChatGPT search.Two lines, reviewed by legal.
6. Correct the third party listings.The sources assistants quote instead of you.Two weeks of unglamorous chasing.

Step 5 deserves a caution, because it is the one people get backwards. OpenAI runs three separate user agents and they do different jobs. GPTBot gathers content for training foundation models. OAI-SearchBot surfaces sites in ChatGPT's search features. ChatGPT-User handles page visits a person asked for.

OpenAI's documentation is explicit that sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers. A blanket disallow written to keep your content out of training also removes your corrected price from the retrieval index, and leaves every stale third party copy in place. That is the worst available outcome and it is a common one.

Step 2 is the one I would argue hardest for. A published floor price does not commit you to it, and it gives every downstream system an anchor that came from you. If your renewal pricing moves materially year to year, publish the current list and say so, which is a cleaner position than the one described in the analysis of grandfathered pricing at renewal.

The listings you do not control

Even with all six steps done, assistants frequently cite somebody else. Studies of citation sources for B2B software queries consistently show community and reference sites outranking vendor pages, and review directories performing worse than most people assume.

The practical consequence is a chase list rather than a technical fix. Work through your review site profiles, your marketplace listings, and comparison pages that rank for your brand plus pricing. Then take the partner and reseller pages carrying old rate cards, and any press coverage that quoted a price you have since changed.

Correct them in order of how often an assistant cites them, not in order of how much traffic they send you. Those are different rankings, and the divergence is the subject of the piece on how citation and rank have come apart.

One warning on prioritisation. If your product's pricing model changed shape recently, for example from per seat to usage, every third party page describing the old model is now wrong in structure and not just in number. That is a rewrite, not a correction, and the shift itself is covered in the analysis of seat compression in SaaS pricing.

A third of AI crawler traffic is hitting pages that do not exist Share of fetches returning 404, one month of crawler traffic across three sites ChatGPT 34.82% Claude 34.16% Googlebot 8.22% GPTBot recorded 569 million fetches in this sample, Claude 370 million, Googlebot 4.5 billion. Source: Vercel and MERJ crawler analysis. Vendor research, original measurement, single network.
Read this as a freshness signal rather than a scandal. The AI indexes hold far more stale URLs than Google's does, so a pricing page move costs you more than it used to.

Where this argument is weakest

Three problems with everything above, stated plainly.

Nobody has measured the thing this post is about

There is no published error rate for AI assistants quoting software prices. The 45% and the 60% figures come from news attribution studies, and news is a different retrieval problem with different sources and different incentives. I have used them as evidence that these systems state verifiable facts incorrectly at scale, which they support, and not as a pricing measurement, which they do not.

A tools vendor selling AI pricing monitoring will quote you a percentage. Ask for the sample size, the query set and the date range before you believe it.

You cannot verify that the fix worked

This is the uncomfortable one. None of these systems will tell you when they re-crawled your pricing page, none exposes what it currently believes your price to be, and none publishes a correction mechanism. You make the changes and then watch a black box.

The crawler evidence is also vendor research from a single network's traffic. Vercel and MERJ measured real fetches at scale, which is the strongest form of that evidence available, and it is still one company's sample of its own customers. It has not been independently replicated.

Frequently asked questions

Why does ChatGPT show the wrong price for my software?

Usually because the assistant never read your current pricing page. Three causes dominate. The price sits in client rendered JavaScript, which no major AI crawler executes. The price is behind a contact sales form, so there is no number to read. Or the pricing URL moved and the crawler still holds the old one. In Vercel's sample, 34.8% of OpenAI crawler fetches hit 404 pages.

How do I get AI assistants to show correct pricing?

Put the number in server rendered HTML on a stable URL, in plain text, next to the plan name. Allow OAI-SearchBot and the other retrieval crawlers in robots.txt. Add SoftwareApplication markup with offers.price so the figure is labelled. Then correct the third party listings that assistants quote more often than they quote you. Re-check the answer monthly, because nothing here is permanent.

Does schema markup help AI assistants quote accurate prices?

It helps a little, and less than most guides claim. Google's own documentation states that no special schema.org structured data is needed to appear in AI Overviews or AI Mode. Schema still earns rich result eligibility in classic Search, and it labels the number unambiguously for anything parsing your HTML. Treat it as hygiene that removes ambiguity, not as a lever that changes what an assistant says.

Should I block GPTBot if AI is misquoting my pricing?

No, and check which bot you blocked. OpenAI runs separate crawlers. GPTBot gathers training data, OAI-SearchBot serves ChatGPT search, and ChatGPT-User handles browsing a user asked for. OpenAI's documentation says sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers. Blocking that one removes your correct price from the index and leaves the stale copy elsewhere intact.

Can I submit a product feed to ChatGPT for a SaaS subscription?

Partly. The product feed spec requires an item ID, title, description, brand, a landing URL, an image, availability and a price with a three letter currency code. It carries an is_digital flag, so non physical goods are in scope. It was built for retail catalogues, and a seat based plan with usage tiers does not map cleanly onto one row. Submit what fits and stop there.

How often should I check what AI assistants say about my pricing?

Monthly, and after every price change. Ask the same five questions in ChatGPT, Gemini, Claude and Perplexity, record the answer verbatim with the date, and note which sources each one cited. That log is the only evidence you will get, because none of these systems publishes an error rate for pricing and none of them will confirm that your correction landed.

Where to start this week

Open your pricing page and view source, not the rendered page. Search the raw HTML for the digits of your entry price. If they are not there, you have found the whole problem in ninety seconds, and step 1 of the table above is the fix.

Then open four assistants and ask each one what your product costs. Paste the answers into a document with today's date and the sources each one cited. That document is your baseline, and without it you will never know whether any of this worked.

If I had one afternoon and no budget, I would spend it on those two tasks and nothing else. The markup can wait a week. The number being physically present in the HTML cannot.

Related on this site

The wider question of whether AI visibility tactics survive testing is handled in the review of the GEO evidence. The divergence between search rank and AI citation is covered in the piece on citation and rank coming apart.

References

  1. European Broadcasting Union and BBC, AI assistants misrepresent news content 45% of the time, October 2025. Used for the 45%, 31% and 20% figures and the study's scope.
  2. Columbia Journalism Review, Tow Center for Digital Journalism, AI Search Has a Citation Problem, 6 March 2025. Used for the 1,600 query sample, the 60% figure and the hedging count.
  3. Vercel and MERJ, The rise of the AI crawler. Used for JavaScript execution, fetch volumes, 404 rates and redirect share. Vendor research.
  4. Google Search Central, AI features and your website. Used for the statement that no special structured data or AI text files are required.
  5. Google Search Central, Software App (SoftwareApplication) structured data. Used for offers.price being required and priceCurrency being recommended.
  6. OpenAI, Product feed specification, required fields. Used for the required feed attributes and the is_digital flag.
  7. OpenAI, Crawlers and user agents. Used for the roles of GPTBot, OAI-SearchBot and ChatGPT-User and the opt-out consequence.
  8. Demand Gen Report, Gartner: AI Is Reshaping B2B Buying, 2026. Used for the 45%, 51% and 49% buyer figures. Secondary coverage of a Gartner survey.

The weakest thing about this source base: no study cited here measured pricing accuracy specifically. The two accuracy studies audited news attribution, and the crawler evidence comes from one vendor's own network traffic. Both are used as directional support for a claim neither was designed to test.

MJ
Ritu Raj
Founding Member, Zan Digital. Writes about AI product economics, B2B software markets and what the numbers behind vendor claims actually say.

Related reading