Last updated: November 2026
To make your pricing page readable by AI answers, put every price in plain HTML text, show it in a simple table, say whether it is monthly or yearly, date the page, answer pricing questions in a short FAQ, and add matching Offer markup. AI engines quote what they can read, and many cannot run your JavaScript.
Key takeaways๐
- AI answers get prices wrong for boring reasons: prices hidden behind JavaScript, monthly and yearly numbers mixed together, old copies of the page, and third-party sites with stale numbers.
-
Vercel found in December 2024 that the crawlers from OpenAI, Anthropic and Perplexity fetch pages but do not run JavaScript. If your price only appears after a script runs, those crawlers may never see it.
-
Write each price as a full sentence fact: plan name, amount, currency, billing period, and what is included.
-
A visible "Prices as of" date and a short pricing FAQ give AI engines clean passages to quote.
-
Offer schema should match the visible page exactly. Google says no special markup is needed for its AI features, so treat schema as a consistency layer, not a shortcut.
Why does ChatGPT get my prices wrong?๐
ChatGPT and other AI engines get prices wrong mostly because the price they find is missing, ambiguous, or out of date, not because the model is careless. When a buyer asks "how much does X cost," the engine pulls text from your site and from other sites, then writes a summary. If your own page does not state the price clearly, the engine fills the gap with whatever it can find.
The common causes:
-
The price is rendered by JavaScript. Vercel's analysis of AI crawler traffic, The rise of the AI crawler (December 2024), found that "none of the major AI crawlers currently render JavaScript," naming OpenAI, Anthropic, Meta, ByteDance and Perplexity. Google's Gemini was the exception because it runs on Googlebot's infrastructure. Vercel's advice was to server-render critical content.
-
Monthly and yearly prices sit side by side. A toggle that swaps $19 for $16 often ships both numbers in the HTML. A parser that reads the raw text sees "$16 $19 /mo" and has to guess which is which.
-
The engine is reading an old copy. OpenAI's help article on shopping with ChatGPT search says that when merchants update pricing or shipping terms, "there may be some delay before it is reflected in the information you see."
-
Third-party pages disagree with you. Review sites, comparison posts and old blog articles keep your 2024 price forever. If those pages are clearer than yours, they win.
-
"Contact us" with no anchor. If you have no public price, the answer may quote a competitor's price as the reference point, or say "pricing not available," which loses deals with buyers who want a ballpark.
What should a pricing page look like for AI?๐
A pricing page that AI engines can quote states each price as plain, server-rendered text in a sentence or table cell that holds all the context in one place. The goal is that any single passage, lifted on its own, is still correct.
Compare these two versions of the same plan:
| Hard for AI to read | Easy for AI to read |
|---|---|
| "$16" in a big font, "/mo" in a separate span, a toggle that says "Yearly" somewhere above | "Starter costs $19 per month billed monthly, or $16 per month billed yearly ($190 per year)." |
| Feature list as icons with tooltips | Feature list as text: "1 brand, 25 tracked prompts, weekly scans" |
| Price loaded from an API after page load | Price in the HTML the server sends |
| No date anywhere | "Prices as of October 2026, in USD." |
A few rules make the biggest difference:
- Put the currency and billing period next to every number. Write "USD" once near the top and "per month" or "per year" next to each price.
-
Make the default view the monthly price, and state the yearly price in words ("$190 per year, which works out to about $16 per month"). Then a quoted fragment is right either way.
-
List limits as text, not only as checkmarks in a grid. Seats, usage caps and overage fees are exactly what buyers ask AI about.
-
Keep one URL for pricing. Redirect old pricing pages, and avoid separate pages per country unless you really price differently.
To check whether your price is in the HTML, open the page, choose "View page source" (not the inspector), and search for the number. If it is not in the source, a crawler that does not run JavaScript will not find it either.
Do you need a pricing comparison table?๐
Yes, a plain HTML comparison table is one of the most useful things you can put on a pricing page, because buyers ask AI engines to compare plans and the table gives the engine the answer already organized. Use a real <table> with text in each cell, not a grid of divs with icons.
A good plan table has:
- One column per plan, with the plan name and monthly price in the header row
-
Rows for the limits buyers care about: users, usage, integrations, support level
-
Text values ("10 projects", "Email support") rather than only checkmarks
-
The same numbers as the plan cards above it
If you also compare yourself to competitors, put that on its own page and date it. Competitor prices change often, and an undated claim about someone else's price is the kind of thing that ends up wrong in an AI answer about both of you.
Why do dates matter on a pricing page?๐
A visible date tells both readers and AI engines how fresh the price is, which matters because engines mix sources of different ages. A line like "Prices as of October 2026" near the top, and an updated date on the page when anything changes, helps an engine choose your current page over a two-year-old review.
Dates also help you. When you change prices, you have a checklist moment: update the page, the table, the FAQ, the schema, your llms.txt file if you have one, and any help-center articles that mention the old number. A mismatch between any two of those is a reason for an AI answer to hedge or pick the wrong one.
What questions should a pricing FAQ answer?๐
A pricing FAQ should answer the exact questions buyers type into ChatGPT before they talk to sales, each in two to four sentences that make sense alone. Good candidates:
- Is there a free plan or a free trial? Do I need a credit card?
-
What happens when I hit a limit?
-
Can I switch plans or cancel any time? Is there a refund policy?
-
Is there a discount for yearly billing, nonprofits or startups?
-
Are taxes included? Which currencies do you bill in?
-
How much does the top plan or enterprise plan cost?
Write each answer with the full noun, not a pronoun: "The Pro plan includes 3 brands" beats "It includes 3 brands." A passage lifted out of the page should still name the plan and the product. Our guide to content strategy for AI citations covers this self-contained writing style in more depth.
Should you add Offer schema to a pricing page?๐
Add Offer schema if you can keep it in sync with the visible page, because structured data gives machines a second, unambiguous copy of each price. Do not expect it to win citations by itself. Google's AI features guide states that "structured data isn't required for generative AI search, and there's no special schema.org markup you need to add."
The schema.org Offer type defines the fields you need: price, priceCurrency, priceValidUntil ("the date after which the price is no longer available"), availability, and priceSpecification for details such as billing period. Schema.org also asks you to write prices with a period as the decimal mark, no thousands separators, and an ISO 4217 code like USD rather than a $ symbol.
For a SaaS product, the usual pattern is a Product or SoftwareApplication with one Offer per plan. For a monthly subscription, a UnitPriceSpecification with a billing period expresses "per month" clearly. Google's software app structured data docs list offers.price as required for its software app rich result and say to set it to 0 for free apps.
Two rules for pricing schema:
-
Match the page. If the page says $49, the markup says 49. Mismatches are worse than no markup.
-
Generate it on the server, in the same build as the visible price. Google's merchant listing docs warn that dynamically generated markup "can make Shopping crawls less frequent and less reliable, which can be an issue for fast-changing content like product availability and price."
Our schema markup guide has full JSON-LD examples for Product and Offer.
TrendlyAI's own pricing page is server-rendered and carries Product, Offer and FAQPage markup, and it still shows the monthly and yearly numbers next to each other in the raw text when you strip the styling. That is the kind of detail worth checking on your own page, because it is invisible to a human reader and obvious to a parser.
How do you fix the third-party sources that quote old prices?๐
You fix old third-party prices by finding the pages AI engines cite for your pricing questions and asking their owners to update them. Start by asking ChatGPT, Perplexity and Google AI Overviews "how much does [your product] cost" and noting every source they link.
Then work the list:
- Review sites and directories (G2, Capterra and similar): update your own listing, since you usually control the pricing field.
-
Comparison and "best of" articles: email the author with the current price and a link to your dated pricing page. Many update within a week because accuracy helps them too.
-
Your own old content: old launch posts, help-center articles and changelogs often outrank the pricing page for a specific question. Update or redirect them.
-
Reddit and forums: you cannot edit other people's posts, but a clear, disclosed reply with the current price is fair. See how Reddit shows up in AI answers.
Our guide on how to get cited by ChatGPT explains why those third-party pages carry so much weight.
How do you check what AI says about your pricing?๐
The simplest check is to ask each engine the questions your buyers ask, such as "how much does [brand] cost," "[brand] vs [competitor] pricing," and "is there a free plan for [brand]," and compare the answers to your page. Do it again after each price change, since AI answers vary between runs and can lag.
To repeat that every week without doing it by hand, a brand mention tracker runs the same prompts on a schedule. TrendlyAI scans ChatGPT, Perplexity, Claude and Google AI Overviews weekly. If you just want a quick read, the free AI visibility check runs 5 prompts on ChatGPT and Perplexity in about 30 seconds with no signup. For the wider playbook, start at the GEO hub.
Frequently asked questions๐
Can ChatGPT read prices loaded by JavaScript?๐
Often not. Vercel's December 2024 analysis of AI crawler traffic found that crawlers from OpenAI, Anthropic and Perplexity fetch pages but do not execute JavaScript. If your prices appear only after a script runs, put them in the server-rendered HTML instead.
Should I show monthly or yearly prices by default?๐
Show the monthly price by default and state the yearly price in words next to it, such as "$190 per year, about $16 per month." That way any fragment an AI engine quotes still carries the right billing period.
Does Offer schema make AI engines quote my price correctly?๐
Offer schema helps machines read your price without ambiguity, but it is not a guarantee. Google says no special markup is needed for its AI features. Keep the schema identical to the visible price and generate both from the same source.
What if my pricing is custom?๐
Say so plainly, and give whatever true anchor you can, such as a starting price, a typical range, or what the price depends on. A page that only says "Contact us" leaves AI engines to guess or to quote a competitor's numbers instead.
How often should I check AI answers about my pricing?๐
Check after every price change and at least once a month otherwise. AI answers vary between runs, and OpenAI notes there can be a delay before price updates show up, so one check is not enough to confirm a fix.