Can AI bots read your pricing and comparison pages?

Your pricing and comparison pages answer the questions buyers ask right before they choose. How much does it cost? Is it better than the other one? An AI assistant can only quote your answer if its bot can read the text on those pages.

These pages are also where text tends to hide. Prices load from a script. Plans sit behind a monthly or yearly toggle. A comparison table is a grid of check mark icons. Below are the common reasons bots miss these pages, how to check each one in a few minutes, and the fix.

Start with one test

Pick a price from your pricing page and look for it in the raw HTML your server sends. Replace PRICE with the price exactly as it's written on the page:

curl -sL https://example.com/pricing | grep -c "PRICE"

A 0 means the number isn't in the HTML. Bots that read raw HTML won't see it. Then run the curl test with AI user agents on the same page. It shows whether GPTBot, OAI-SearchBot, PerplexityBot or ClaudeBot get a different response than a browser.

If both tests find your prices, most of the list below won't apply. If not, work down it.

1. Prices rendered by JavaScript

Many pricing pages fetch plans and prices from an API after the page loads. Your browser runs that script. Many AI crawlers don't. In a December 2024 study, Vercel and MERJ found that none of the major AI crawlers they measured render JavaScript, including OpenAI's, Anthropic's and Perplexity's.

Check: run the curl test above. Or open the page, use View Source (not Inspect) and search for the price.

Fix: render prices on the server or at build time, so they're in the HTML. Our post on JavaScript and AI crawlers covers the options.

2. Tabs and toggles

Monthly versus yearly, per seat versus flat, one currency versus another. Often only one view is in the HTML. The other is worked out by a script when someone clicks.

Check: grep the raw HTML for a price from each view. If only the default one is there, a bot only sees that one.

Fix: put every price in the HTML. A toggle can switch which one is shown with CSS. Better still, add a plain text line that states both: the monthly price and the yearly price, each with its billing period.

3. Prices in images

A pricing table exported as an image looks fine to people. The HTML holds only a file name and maybe alt text. The same goes for comparison tables made of check mark and cross icons: there's no text in the cell.

Check: if your curl test finds no prices, look for <img tags or inline icons where the prices or table cells should be.

Fix: use real text. In comparison tables, write "Yes", "No" or the actual limit in each cell. Keep the icon if you like it.

Some sites show prices only after sign-up, or only on a "contact sales" form. Some pick a currency or redirect by the visitor's location. Some cover the page with a consent screen that replaces the content.

Check: see where the page sends a client with no cookies:

curl -sIL https://example.com/pricing | grep -i -E "^(HTTP|location)"

A redirect to /login, /signup or a country page means a bot lands there instead. Then read the text of the page it lands on.

Fix: keep one public pricing page that works without cookies or a login. If you can't publish exact prices, publish how pricing works: what it's based on, what's included in each plan and who it's for. That's text a bot can quote.

5. noindex on the page

Teams sometimes add noindex to comparison pages, or a template sets it by mistake.

Check:

curl -sL https://example.com/pricing | grep -io '<meta[^>]*name=.robots.[^>]*>'
curl -sIL https://example.com/pricing | grep -i x-robots-tag

Fix: remove it if you want the page found. Google says noindex drops a page from Google Search results, and lists noindex as one of the controls for what its AI features show. Other AI companies' crawler docs don't say how they treat noindex, so don't count on it either way.

6. robots.txt blocks /pricing or /compare

A rule like Disallow: /pricing or Disallow: /*?plan= can block one page while the rest of the site stays open. It can also hide in a group for one bot.

Check: read every group in https://example.com/robots.txt, including the * group and any group for a named bot. Our free scan checks crawler access for your homepage, so a rule that blocks only /pricing won't show up there. Read the file yourself.

Fix: remove the rule, or add Allow: /pricing to the group. Remember that a bot with its own group ignores the * group. Our post on letting AI search bots in and keeping training bots out explains that trap, and the robots.txt guide for AI crawlers has copy-paste rules.

7. Missing from the sitemap

Comparison pages are often added one at a time and never make it into the sitemap.

Check:

curl -sL https://example.com/sitemap.xml | grep -i -E "pricing|compare|vs"

If your sitemap is an index, check the files it lists.

Fix: add every pricing and comparison URL, and link to them from your main navigation or footer so crawlers can find them by following links too.

Structured data, used honestly

Structured data can label prices for systems that read it. For a product you sell, that's Product with an Offer. For software, Google documents SoftwareApplication with an offers block. Google's rule is simple: don't mark up content that isn't visible to readers of the page. So only mark up prices that appear in the visible text.

Don't rely on it alone. As our post on schema markup and AI search explains, assume a bot fetching your page reads the visible text. Put the price in the page first. Add the markup second.

A ten-minute checklist

  1. Grep the raw HTML for one price from each plan and each toggle view.
  2. Run the curl test with AI user agents on the page.
  3. Follow redirects with no cookies.
  4. Check for noindex in the HTML and the headers.
  5. Read every robots.txt group for rules on /pricing or /compare.
  6. Find the URL in your sitemap.
  7. Check that any Offer or SoftwareApplication markup matches the visible prices.

FAQ

How do I know if ChatGPT can see my prices?
Run the curl test on your pricing page with the OAI-SearchBot user agent and grep for a price. If the price is in what comes back, the text is there for OpenAI's search bot to read. A firewall that checks IP addresses can still treat the real bot differently, so also check your logs.
Should my comparison pages be public?
If you want AI answers to use your side of the comparison, yes. A public page with real text in every cell gives assistants something accurate to quote.
Does adding Product or Offer markup fix a JavaScript pricing page?
Not on its own. The markup has to describe prices people can see on the page, and many bots read only the raw HTML. Render the prices on the server first, then add markup that matches.

Run the free scan

Run the free scan on the Answer Checkup homepage and enter your pricing page's URL. It runs all six checks on that page, including how much text is in the raw HTML and whether it has structured data, and gives you a score and a grade. You can unlock the full checks and fixes. See pricing for what the paid report adds.


Answer Checkup is not affiliated with OpenAI, Perplexity, Google, Anthropic or Vercel.

Sources

All pages fetched and checked on November 3, 2026.