Skip to content
InfratoApp
InfratoApp / Blog / structure-a-pricing-page-for-search-and-assistants

Structure a pricing page for search and assistants

Put every rate in a plain HTML table, quote one unit, give sections stable anchors, date it, and keep no price behind a tab, a toggle or a calculator.

INFRATOAPP · PUBLISHED 19 OCTOBER 2026 · 5 MIN READ · 4 SOURCES · PRICES LAST CHECKED 18H AGO

The short version

A pricing page that search engines and assistants can read puts every rate in a plain HTML table that arrives with the first response from the server, quotes every row in the same unit, gives each section an anchor that does not change, and carries a visible date. A price that appears only after a click, a hover or a calculator input is a price a crawler may never see.

None of that is exotic. It is roughly what a careful buyer wants too, which is the useful part: the page you build for a program is the page a procurement lead can paste into a spreadsheet without retyping anything. We read 48 provider pages on a schedule, and a plain table is the hardest kind of page to misread.

One table, in the HTML, before any script runs

Some GPU pricing pages are built as single-page apps that fetch prices after load and paint them into a styled grid. Some crawlers run scripts and some do not, and even those that do may not wait, scroll or click. The safe assumption is that whatever is missing from the server response is missing for some readers.

Use a real table element with a header row: card, memory, unit, commitment, region, rate. Styled divs that look like a table read as a stream of loose numbers. Put the card name in full in its own cell, H100 SXM 80GB rather than H100, because the short name covers two different purchases.

If the price list is long, keep it on one page and let the browser scroll. Pagination and infinite scroll split the list across URLs or behind events, and the rows past the first page are the ones a reader is most likely to miss.

One unit for every row

A table that mixes price per GPU, price per node and price per instance forces the reader to divide, and many readers will not. A program summarising your page will either skip the arithmetic or do it wrongly. Pick price per GPU per hour, state it in the header, and if you sell eight-GPU nodes, show the node price in a second column beside the per-card figure rather than instead of it.

This is the unit buyers compare in. The lowest listed H200 rate we hold is $2.09 per GPU-hour, and a node price set next to it on another tab will look either absurdly dear or suspiciously cheap until somebody does the division. The H200 page quotes every seller per GPU for that reason.

Tabs, toggles and calculators

The monthly and hourly toggle, the region dropdown and the reserved-term tab all hide prices behind an event. The default state is what gets read, and the other states may as well not exist for a crawler. If reserved prices are worth showing, show them in their own table below the on-demand one, labelled as reserved, with the term.

A calculator is a fine extra and a poor primary source. It answers one buyer one question at a time, and it holds no rate a program can read until somebody types into it. Our own rental cost calculator works from rates that already sit in a public table; it never replaces that table.

Accordions on an FAQ are a milder case. Text collapsed in the HTML is usually still in the source, so it can be read. Text that is fetched only on expand is not.

A date, and what to leave off

Put a line above the table saying when the prices last changed, and change it only when they do. It tells every reader how far to trust what follows. The first post in this series covers why a date matters so much to a figure that may be quoted elsewhere.

Leave off what cannot be checked. "Lowest prices in the market" is a claim a reader cannot verify and a careful program has no reason to repeat. A plain rate with a unit and a date makes the case better than an adjective does.

Leave off "contact us" in place of a rate where a rate exists. A row for a card with no price in it reads, to a buyer and to any table built from your page, as no figure on record. If a card is only sold on a quote, say that in words in the cell, so the gap is a statement rather than a blank.

What we could not answer

  • ⚑Crawlers differ in whether and how long they run scripts, and their makers change this without notice, so nothing here can say which reader sees what on a given day.
  • ⚑We have not measured whether these changes alter search ranking for any page.
infratoapp, “Structure a pricing page for search and assistants”, read 27 October 2026. provider pricing pages we read on a schedule: 48. https://www.infratoapp.com/blog/structure-a-pricing-page-for-search-and-assistants

Questions people ask about this

Do search engines read prices inside a JavaScript pricing table?

Some crawlers run JavaScript and some do not, and those that do may not wait for every request or click every control. A price that is present in the HTML the server sends is readable by all of them. A price fetched later, or shown only after an interaction, is a risk.

Should a GPU pricing page show prices per GPU or per node?

Per GPU per hour, stated in the table header, because it is the unit buyers compare across providers. If you sell whole nodes, add the node price in a second column beside the per-card figure. A table that mixes the two units forces readers to divide, and many will not.

Is a pricing calculator enough on its own?

No. A calculator answers one question for one buyer at a time and holds no rate a crawler can read until somebody types. Keep every rate in a plain table on the page and treat the calculator as an extra for buyers who want a monthly total.

These render as FAQPage structured data · answers are filled from the same live figures

Read next

Date your prices so every quote carries its age

A price with no date could be from any month. Show when your rates last changed, in text and in markup, and change that date only when a price moves.

Structured data for a GPU pricing page

Mark up each rate as a Product with an Offer that states price, currency, unit and a date, and never claim more in markup than the visible page shows.

When your docs and your pricing page disagree

A rate on the pricing page that differs from the one in the docs gives a buyer no way to tell which is right. Keep one source for prices and build from it.