🎯 Free: get your first AI visibility baseline in 5 min, then refresh it every 7 daysTry it →

Blog
5 min read

Schema for Pricing Pages: How to Mark Up Plans, Prices, and FAQ for AI Answers

Which Schema.org markup pricing pages need: Product, Offer, FAQPage, BreadcrumbList, Organization, and JSON-LD for SaaS pricing pages.

Schema.orgpricing pagesJSON-LDplans
Vladislav Puchkov
Vladislav Puchkov
Founder of GEO Scout, GEO optimization expert

Pricing pages are among the most fact-sensitive pages on a SaaS website. AI systems use them to answer questions such as "how much does it cost", "is there a free plan", "which plan should I choose", "is there a trial", "what are the limits", and "is enterprise available". If the page is visually polished but machine-ambiguous, the model may misread the price or use a third-party review site.

Schema.org reduces ambiguity. It does not guarantee citation, but it gives AI systems and search engines a structured layer on top of the visible content.

Schema Types for Pricing Pages

A pricing page usually benefits from a small graph:

  • Organization for the company publishing the product;
  • WebPage for the pricing page itself;
  • SoftwareApplication or Product for what is sold;
  • Offer or AggregateOffer for the plans;
  • FAQPage for buyer questions;
  • BreadcrumbList for page hierarchy.

The core rule is simple: markup must match the visible page. If a plan is hidden in a modal, loaded only after JavaScript, or unavailable to users, schema becomes a weak and potentially confusing signal.

Product or SoftwareApplication

For SaaS, SoftwareApplication is usually the better fit because the product is software delivered as a web application. For broader B2B services, Product may be acceptable. In either case, include name, description, URL, publisher or provider, category, and offers.

Example:

{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Example Analytics",
  "applicationCategory": "BusinessApplication",
  "operatingSystem": "Web",
  "url": "https://example.com/pricing",
  "description": "Analytics platform for marketing teams.",
  "offers": [
    {
      "@type": "Offer",
      "name": "Pro",
      "price": "49",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://example.com/pricing"
    }
  ]
}

If there are several plans, include an array of Offer. If pricing depends on volume, do not invent a fixed price. Explain the pricing model in visible text.

What to Include in Offer

For each plan, useful fields and supporting content include:

  • plan name;
  • price;
  • currency;
  • billing period in visible copy;
  • pricing page or checkout URL;
  • availability;
  • free plan or trial details in FAQ;
  • limits in the visible pricing table.

Schema.org does not provide a perfect field for every SaaS quota. Do not force every limit into JSON-LD. A clear pricing table and FAQ are often more useful, while schema identifies the main entities.

FAQPage for Pricing

Pricing FAQ should answer questions that affect purchase decisions:

  • is there a free plan;
  • is a credit card required for trial;
  • can the subscription be cancelled;
  • what happens after usage limits are exceeded;
  • is annual billing available;
  • how does enterprise differ from business;
  • are invoices or procurement documents available;
  • how refunds work.

If those questions appear visibly on the page, mark them up as FAQPage. Do not include hidden FAQ in JSON-LD only. Hidden markup creates a mismatch and weakens trust.

BreadcrumbList helps AI understand that the pricing page belongs to the commercial layer of the website, not a random article. WebPage can act as a container with name, description, URL, isPartOf, about, and mainEntity.

Example graph:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebPage",
      "@id": "https://example.com/pricing#webpage",
      "url": "https://example.com/pricing",
      "name": "Pricing",
      "about": { "@id": "https://example.com/#software" }
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://example.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Pricing",
          "item": "https://example.com/pricing"
        }
      ]
    }
  ]
}

Enterprise Pricing

Many SaaS companies do not publish enterprise pricing. That is fine. The mistake is adding a fake zero price, a random starting price, or "$1" in schema if the page does not say that. Use visible copy such as: "Enterprise pricing is custom and depends on seats, usage, security requirements, and support level." Add an FAQ question explaining how enterprise pricing is calculated.

AI systems handle honest uncertainty better than false precision.

Implementation Mistakes

  • Marking up plans that are not visible.
  • Leaving old prices after billing changes.
  • Omitting currency.
  • Not explaining billing period.
  • Duplicating conflicting JSON-LD from CMS and tag manager.
  • Adding FAQ schema without visible FAQ.
  • Using Product schema without connecting it to Organization.
  • Validating source HTML but not rendered HTML.

How to Measure Impact

After implementation, validate JSON-LD but do not stop there. Track prompts such as:

  • "how much does [product] cost";
  • "does [product] have a free plan";
  • "which [product] plan should I choose";
  • "[product] plan limits";
  • "[product] enterprise pricing".

In GEO Scout, monitor whether the pricing page appears as a cited source and whether price distortions decrease. If AI systems still cite review sites, the issue may be visible content, internal linking, crawler access, or page authority rather than schema alone.

Schema for pricing pages works best when it confirms a clear page instead of trying to compensate for a weak one.

Частые вопросы

Which schema types work for pricing pages?
SaaS pricing pages usually use Organization, WebPage, Product or SoftwareApplication, Offer or AggregateOffer, FAQPage, and BreadcrumbList. The right mix depends on whether one product or multiple plans are being sold.
Can each pricing plan be marked up as an Offer?
Yes, if each plan has a clear price, currency, terms, and URL. Do not add schema for details that are not visible on the page or that are likely to become outdated.
Should a pricing page include FAQPage schema?
Yes, if the visible page includes FAQ about trials, billing, limits, cancellation, support, and enterprise plans. FAQPage helps AI systems extract concise commercial answers.
How should custom enterprise pricing be marked up?
Do not invent a price. Explain visibly that pricing is custom and depends on factors such as usage, seats, SLA, security, and support.
How can pricing schema impact be checked?
Validate JSON-LD, then track prompts about cost, plans, limits, and trials. GEO Scout can show whether the pricing page appears more often as a cited source.