Schema Markup for AI Search: How AI Engines Use It & Which Types B2B SaaS Websites Need

Why adding schema markup does not earn AI citations on its own, and which five types a B2B SaaS website uses to keep AI engines' facts about it correct.

Published
2026
Last updated
2026
• 
17
min read
Omnius cover: Schema Markup for AI Search, with JSON-LD code paths

Schema markup is code in a page's HTML that tells search engines what the page describes, such as a company and its prices. Google and Bing use it to understand pages and show rich results like review stars. Schema markup for AI search asks whether it also helps a company appear in ChatGPT and Google's AI Overviews.

Much research now starts in chatbots: in G2's March 2026 survey, 51% of B2B software decision-makers start research in a chatbot more often than in Google. The common claim is that markup gets pages cited, and in 2025 Bing's Fabrice Canel confirmed that schema helps its LLMs understand content.

The evidence gives markup a narrower role: Google and Bing use it to identify a company and its facts. In Ahrefs' study, pages that added schema showed no measurable gain in AI citations over similar pages, and in published tests no assistant reported a fact found only in markup. This guide covers how AI engines handle markup, the five types a B2B SaaS website needs and what the Omnius datasets showed.

Short answer: Schema markup has no proven direct effect on AI citations. Google and Bing use it to understand pages and the companies they describe, as long as it matches the visible content. For B2B SaaS, the priority is facts about the company, product and pricing in crawlable HTML, with JSON-LD that mirrors them.
Screenshot of Search Engine Land's article of 20 March 2025, headlined Microsoft Bing/Copilot use schema for its LLMs, with the sentence Microsoft has confirmed it uses schema markup to help its LLMs highlighted.
Search Engine Land's report of Bing's statement, March 2025. Source: Search Engine Land.

Key takeaways

  • Schema markup states a company's identity and facts. Google and Bing parse it into the records that tell one company from another and attach prices, plans and dates to it.
  • Adding schema did not lift AI citations in the strongest test so far. In Ahrefs' study, pages that added schema markup showed no measurable gain in citations on AI Overviews, AI Mode or ChatGPT over similar pages that did not.
  • Google says its AI features need no special markup. Markup still makes pages eligible for rich results in Search.
  • In two published tests, no assistant reported a fact that existed only in the markup. Every fact therefore belongs in the page's visible text first, with markup that mirrors it.
  • Five types carry the value. Organization and WebSite go on the homepage, SoftwareApplication or Product with Offer on pricing and product pages, Article on posts and BreadcrumbList below the homepage.
  • Markup has to match the page. A marked-up price, rating or date that differs from what the page shows breaks Google's guidelines and gives AI answers two versions of one fact.
  • Fact accuracy is the first measure. The test is whether AI answers state the company's prices and plans correctly, then whether they cite the pages that changed.

What is schema markup, and does it help AI search?

Schema markup is code in a page's HTML that labels what the page describes, such as a company, a product, a price or an article. It uses schema.org, a shared vocabulary that Google, Microsoft, Yahoo and Yandex founded in 2011. Google recommends JSON-LD, a short block of labelled facts that sits inside a script tag in the page's code, where readers of the page never see it. Google uses the block to understand the page and the companies and products it names, as in this minimal example:

1script type="application/ld+json">
2{
3 "@context": "https://schema.org",
4 "@type": "Organization",
5 "name": "Vendor A",
6 "url": "https://www.example.com/",
7 "sameAs": ["https://www.linkedin.com/company/example"]
8}
9/script>

The term here means schema.org markup on web pages. Developers also use "schema" for the JSON schemas that shape a model's output, which is a separate topic.

Google Search Central explains what structured data is and how Google uses it.

Schema markup's documented role in AI search is in the records Google and Bing keep about companies and products, and adding it has not been shown to earn extra citations. Both read the markup when they crawl a page and store what it states.

The claim that markup earns citations rests on counts across websites. Ahrefs found AI-cited pages almost three times as likely to carry JSON-LD, and AirOps, which scraped ChatGPT's answers to 16,851 queries, also measured a higher citation rate for pages with JSON-LD, at similar domain authority. Both counts pool pages from different websites, and websites that add markup also tend to build authority and links, as Ahrefs notes, so those counts cannot separate the markup from the website.

To separate the two, Ahrefs followed 1,885 pages that AI answers already cited and that added JSON-LD, and compared them with matched controls: similar pages that did not add it, tracked over the same weeks. Measured alone, the pages' AI Mode citations rose 43%. The matched pages rose almost as much, so the difference was 2.4%, which Ahrefs found indistinguishable from zero.

Bar chart of Ahrefs' study of 1,885 already-cited pages that added JSON-LD: AI Mode citations rose 43% before vs after without controls, but only 2.4% against matched controls; ChatGPT +2.2%; AI Overviews −4.6%.

In a sample of the websites Omnius tracks, the pattern looked the same. Counted across all websites together, cited pages carried sameAs links, which point to a company's profiles elsewhere, more often than uncited pages. Against uncited pages from the same websites and page types, the gap closed, at 46.4% against 47.0%, and Organization and WebSite showed none either, so the pooled gap came from which websites supplied the cited pages.

What is documented
  • Google says structured data isn't required and no special schema.org markup is needed for its generative AI features, while it still recommends markup for rich results in Search.
  • Bing's webmaster guidelines say accurate structured data may support clearer grounding, the step that ties an answer to its pages, with no guarantee of visibility.
  • OpenAI, Anthropic and Perplexity publish nothing on reading JSON-LD.
What is inference
  • Markup's work in AI answers runs through the records Google and Bing keep about a company and its products, with no measurable lift in citations.
  • A fact stated only in markup is unlikely to reach an AI answer, since it reached none in the two published tests.
Screenshot of Google's guide to optimizing for generative AI features, with the line saying structured data isn't required for generative AI search and no special schema.org markup is needed highlighted.
Google's guide to optimizing for its generative AI features. Source: Google Search Central.

What changed for schema markup in 2026

The rules and the evidence around markup moved quickly in 2026, starting with Google's FAQ results:

  • 7 May 2026: Google stopped showing FAQ rich results for every website, and it removed the FAQ documentation on 15 June.
  • 11 May 2026: Ahrefs published its matched-control study of pages that added schema.
  • 15 May 2026: Google published its guide to optimizing for generative AI features.
  • 3 June 2026: Search Console added Generative AI performance reports for AI Overviews and AI Mode.
  • 28 August 2026: Vercel and Ora's 190 controlled fetch probes found that adding JSON-LD, llms.txt or Markdown copies did not change whether two fetch clients, one plain and one that runs JavaScript, could retrieve an answer already in the server HTML.

How do AI search engines use schema markup?

The evidence splits because AI search engines reach a page in two ways, called here the index path and the live-fetch path. On the index path, Googlebot and Bingbot crawl the page ahead of time and store its JSON-LD in their records. On the live-fetch path, ChatGPT or Claude opens the page while writing an answer and passes its text to the model. Google and Bing document that the index path keeps the JSON-LD, and in the published tests the live-fetch path dropped it.

Both paths start with a search. Google's AI features run several related searches across subtopics, a technique called query fan-out, and rank the results with the same systems as Search, so any page that is indexed and can show a snippet in Search can appear as a linked source in its AI answers. When ChatGPT uses partner search providers, it rewrites the question into targeted queries for them. No platform documents markup as a ranking signal for AI answers.

Flow diagram: a pricing page with HTML text and JSON-LD reaches AI answers by two paths. The index crawl (Googlebot, Bingbot) parses the JSON-LD into an entity and fact record; in the published tests, the live fetch (ChatGPT, Claude) turned the page into text and dropped scripts and the head. Facts in the HTML text reach the answer by both paths.

The index path: Google and Bing parse markup when they crawl

Googlebot renders pages, running their scripts the way a browser does, so it also reads JSON-LD that a script adds after the page loads, and Bingbot renders pages too. Google says homepage markup can help it tell a company apart from other organizations, using official company identifiers behind the scenes. Bing says it validates markup against the schema and its data types, ignores markup that fails and uses the rest to supplement and validate its own data.

Google's records feed its Knowledge Graph, the store of facts about companies, people and products that AI Overviews and AI Mode draw on. In Google's AI answers, markup's documented work sits in that record of the company.

The live-fetch path: ChatGPT and Claude read the page as text

ChatGPT-User and Claude's web fetch open a page when a question needs it. The fetchers of ChatGPT, Claude and Gemini ran no JavaScript in Writesonic's March 2026 test, Anthropic documents the same limit for Claude's web fetch tool, and the fetched page reaches Claude as a plain-text document. Without JavaScript, a fetcher never receives JSON-LD that a script or tag manager adds.

Two tests planted facts in JSON-LD alone, and we read both original reports. In searchVIU's October 2025 test, none of the five systems reported a price that existed only in JSON-LD. AI Mode and Perplexity answered from their indexes, and Claude returned no prices at all, visible ones included, so its result says nothing about markup.

In Writesonic's test, every assistant removed script and style blocks before the model saw the page. JSON-LD and the meta description reached none of the six assistants, while the title tag reached five and text hidden with CSS still reached them, because the fetchers read the HTML source. A fact that existed only in markup was invisible to every tested assistant at answer time.

Bar chart of how many of six AI assistants reported a code planted in each part of a test page in Writesonic's March 2026 test: text hidden with visibility:hidden 6, the title tag 5, image alt text 3, the meta description 0 and JSON-LD 0.

How the six platforms compare

The six platforms differ in which index they search and what their fetchers keep. Every path reads the page's HTML text, so each fact belongs there first, with markup that mirrors it for the engines that parse it:

EngineIndex it searchesCrawler and JavaScriptJSON-LD in published fetch tests
Google AI Overviews and AI ModeThe Google Search index, plus the Knowledge GraphGooglebot renders pages and reads JSON-LD that JavaScript addsParsed into Google's index and entity record (documented). AI Mode did not report a price that existed only in JSON-LD
Gemini appThe Google Search index, through groundingNo documented fetcher for links read in chat; the published tests disagree on JavaScriptNot reported in either test
Microsoft CopilotThe Bing index; Copilot can ground on Bing's cached copy unless NOCACHE is setBingbot renders pages; Copilot's live fetch ran JavaScriptBing uses markup to supplement and validate its data (documented). Not reported in the live fetch
ChatGPT searchWebsites crawled by OAI-SearchBot, plus partner search providersChatGPT-User fetches pages live and ran no JavaScriptNot reported in either test
ClaudeBrave Search, plus Claude-SearchBotClaude's web fetch does not support pages rendered by JavaScriptNot reported
PerplexityIts own index, built by PerplexityBot, which tracked over 200 billion URLs in September 2025Perplexity-User fetches live; its index held a price that JavaScript renderedNot reported

What are the five factors of schema markup for AI search?

Given those two paths, five factors decide whether schema markup does its job in AI search: delivery, validity, entity clarity, agreement and freshness. They run in order, from whether a crawler receives the JSON-LD to whether its dates stay current.

1. Delivery: the JSON-LD is in the HTML crawlers receive

Markup helps only when crawlers receive it. On one advertising software vendor's homepage and pricing page, the only JSON-LD was a Product block with a star rating, which a testimonial widget's script built in the browser. A plain fetch of the raw HTML, the copy a crawler that runs no JavaScript receives, returned no markup. Google Tag Manager also loaded, but neither of its two containers held the block, so an audit of the tag manager alone would have missed it.

Google reads JSON-LD that scripts add, yet it warns that Product markup generated by JavaScript can make Google Shopping's crawls of prices less frequent and less reliable. Pricing pages hide content from bots as well, and Profound found that about one in eight public pricing pages of Forbes Cloud 100 companies hid at least 40% of their content, most often because prices loaded through scripts or sat behind tabs and sliders.

On the vendor homepages and pricing pages we checked, the commoner gap was no markup at all. When we rendered them on 13 October 2026 and compared them with the raw HTML, JSON-LD that appeared only after scripts ran was on 2.1% of pages, while 24.4% of pricing pages had no JSON-LD at all.

Bar chart, Omnius & Atomic AGI datasets: 24.4% of B2B SaaS and fintech vendor pricing pages and 16.7% of homepages carry no JSON-LD; 2.1% carry JSON-LD only after JavaScript runs.

What to do:

  1. Put the JSON-LD in the HTML that each template sends from the server, before any script runs.
  2. Remove tag-manager copies that repeat or contradict the template's markup.
  3. Check the page with view-source or a plain fetch, because the Rich Results Test shows the page after its scripts run and so finds markup that a crawler without JavaScript never receives.
1!-- ❌ Organization JSON-LD added by a tag manager after load: view-source shows no script block -->
2!-- ✔ the same block printed in the homepage template's server HTML -->
3script type="application/ld+json">
4{ "@context": "https://schema.org", "@type": "Organization", "name": "Vendor A", "url": "https://www.example.com/" }
5/script>

2. Validity: the markup parses and uses documented types

Markup that arrives still has to parse. Bing ignores markup that fails its type checks, such as a price written as a date. Google follows its own documentation for its Search features and can still make general use of sameAs and other valid schema.org markup the documentation does not list, so documented types come first.

Because templates print the markup, its errors spread. Google's Search Console help names a template error as the most common cause of one error across many pages, and in the Omnius datasets, 86.7% of pages carried the same schema types as most pages of their type on the same website, so one broken template breaks every page built from it.

What to do:

  1. Validate one page per template in the Schema Markup Validator and the Rich Results Test.
  2. Fix errors at the template, where Google says most repeated errors start.
  3. Drop invented properties, and keep vocabulary outside Google's documentation only where it states a fact the page shows.
1!-- ❌ an invented property no platform documents -->
2"aiSummary": "Vendor A is the leading close platform for finance teams"
3!-- ✔ the documented property, matching the page's intro sentence -->
4"description": "Month-end close software for finance teams on NetSuite and Sage Intacct"

3. Entity clarity: every page points to one Organization

Entity clarity means the markup describes the company once. A single Organization node carries an @id, a fixed identifier written as a URL, and the WebSite, SoftwareApplication and Article nodes point to it. Its sameAs links list the company's profiles elsewhere, such as LinkedIn or Wikidata, and each profile should state the same name and category. Google recommends Organization markup on the homepage or one about page, says it need not go on every page, and asks for items to be linked with @id.

The sameAs links themselves can break. On the vendor homepages we checked, 11% of the sameAs links that a plain request could open failed, with a 404, a host that did not answer or a page about something else. One automation vendor listed Wikipedia's general article on robotic process automation, and a Google search for its own name, as official profiles.

What to do:

  1. Publish one Organization node with @id, name, legalName, logo, url, contactPoint and sameAs.
  2. Remove duplicate Organization nodes, or switch off the SEO plugin's own Organization output when the template prints one.
  3. Add the company's official identifiers, such as its Legal Entity Identifier (LEI) or its Dun & Bradstreet (DUNS) number, in the iso6523Code property, which Google prefers. Each value is a prefix and the number, such as 0199: followed by the LEI or 0060: followed by the DUNS number.
  4. Check whether the Knowledge Graph Search API returns the company for its name.
1!-- ❌ the SEO plugin publishes "Vendor A Inc." and the theme publishes "VendorA", each with its own logo -->
2!-- ✔ one node that every other node references -->
3{ "@type": "Organization", "@id": "https://www.example.com/#organization", "name": "Vendor A" }

Read more: Entities and knowledge graphs

4. Agreement: every marked-up fact is visible on the page

Agreement starts with prices, because pricing drew the largest share of inaccurate claims in the AI answers Profound checked. Pricing and billing made up 12% of the brand claims it checked and 24% of the inaccurate ones.

On 13 October 2026, a construction software vendor's pricing page marked up both its monthly-billing and annual-billing prices, while the page text showed only the lower annual rates and kept the monthly prices behind a billing switch. A marketing software vendor marked up its plans as yearly totals while its pricing cards printed monthly prices. In both cases the markup described a billing option the default page did not show.

Google forbids marking up content readers cannot see and lists content on page differs from structured data as a manual action. Its parsed record then holds a price that a fetcher reading the page's text does not see. About a third of the vendor pricing pages we read carried Offer markup, the type that states a plan's price, and on most of those, every marked-up price above zero matched a price on the page.

What to do:

  1. Write prices, limits, certifications and integrations in HTML text and tables first.
  2. Generate the markup from the same data that fills the visible table.
  3. Never mark up hidden prices, ratings or claims.
1!-- ❌ observed on one vendor pricing page: 232 marked-up prices in other countries' currencies, while the page printed only USD -->
2!-- ✔ the table and the Offer are filled from the same plan data -->
3{ "@type": "Offer", "name": "Team", "priceSpecification": { "@type": "UnitPriceSpecification", "price": "12", "priceCurrency": "USD" } }

5. Freshness: dates and prices change with the page

Google estimates a page's date from several signals and asks that the visible date and the structured data date match. Its helpful content guidance flags changing dates to look fresh when the content has not changed. On some of the blogs we sampled, more than a quarter of the posts shared one dateModified, the field that records when the content last changed, so the date had been set in bulk.

What to do:

  1. Change dateModified only when the content changes.
  2. Show the same date on the page.
  3. Update Offer values in the same release as the pricing page, because a product snippet may not show when priceValidUntil is in the past.
1!-- ❌ dateModified changes on every deploy, although the article has not changed since March -->
2!-- ✔ dateModified changes with the content, and the visible "Updated" date shows the same day -->
3"datePublished": "2026-09-02", "dateModified": "2026-10-06"

Which schema types should a B2B SaaS website use for AI search?

The factors apply to every type of markup, and on a B2B SaaS or fintech website five types carry the documented value. Organization and WebSite belong on the homepage, SoftwareApplication or Product with Offer on pricing and product pages, Article or BlogPosting on posts and BreadcrumbList on every page below the homepage:

Tree of a B2B SaaS website with its schema types: the homepage carries Organization and WebSite; below it, the pricing page carries SoftwareApplication and Offer, product pages SoftwareApplication or Product, and blog and author pages Article or BlogPosting with Person; every page below the homepage carries BreadcrumbList.

FAQPage and HowTo are missing from that list because they no longer earn Google rich results. Google ended HowTo results in September 2023 and FAQ results in May 2026, and FAQPage can stay only where the questions and answers are visible, as the FAQ below covers.

Two types sit outside Google's documented features. FinancialProduct describes products from banks, insurers and other financial companies, including their fees, and TechArticle describes technical documentation. Neither earns a Google feature, so each is worth using only where it states a fact the page shows. Integration, comparison and security pages need no type of their own beyond BreadcrumbList, because their facts belong in text.

The table adds the properties that matter for each type, the use Google or Bing documents and a gap to check on SaaS and fintech websites:

TypePageProperties that matterDocumented useGap to check
OrganizationHomepage or about page@id, name, legalName, logo, url, sameAs, contactPoint, iso6523CodeDisambiguation, logo and knowledge panel in GoogleDuplicate nodes from plugins and themes; no identifiers
WebSiteHomepagename, alternateName, url, publisher by @idWebsite name in Google resultsA second WebSite block from a plugin
SoftwareApplication or Product, with OfferPricing and product pagesname, applicationCategory, offers with price and priceCurrency, UnitPriceSpecification for per-seat pricesSoftware app and product snippet rich results; the software app result also needs a rating or reviewPrices printed on the page with no Offer markup
Article or BlogPostingBlog posts and resourcesheadline, author as a Person with url, datePublished, dateModified, publisher by @idBetter titles, images and dates in GoogleAuthors without a url; dateModified changed on every deploy
BreadcrumbListEvery page below the homepageitemListElement with position, name and itemBreadcrumbs in desktop resultsMissing from templates other than the blog

The three samples below cover all five types and reference one Organization @id, with placeholder values. The homepage graph holds the Organization and the WebSite:

1{
2 "@context": "https://schema.org",
3 "@graph": [
4 {
5 "@type": "Organization",
6 "@id": "https://www.example.com/#organization",
7 "name": "Vendor A",
8 "legalName": "Vendor A Software Ltd",
9 "url": "https://www.example.com/",
10 "logo": "https://www.example.com/logo.png",
11 "sameAs": [
12 "https://www.linkedin.com/company/example",
13 "https://www.wikidata.org/wiki/Q00000000"
14 ],
15 "contactPoint": { "@type": "ContactPoint", "contactType": "sales", "email": "sales@example.com" }
16 },
17 {
18 "@type": "WebSite",
19 "@id": "https://www.example.com/#website",
20 "name": "Vendor A",
21 "url": "https://www.example.com/",
22 "publisher": { "@id": "https://www.example.com/#organization" }
23 }
24 ]
25}

The pricing page marks up a free tier, a per-seat plan and a plan with no public price. Google's software app rich result needs a price and a rating or review, so on a website without its own customer reviews, the Rich Results Test reports this item as invalid for that result and flags the Enterprise plan for its missing price. Both flags are expected, because the markup's job here is to state the plans to the engines that parse them:

1{
2 "@context": "https://schema.org",
3 "@type": "SoftwareApplication",
4 "name": "Vendor A",
5 "applicationCategory": "BusinessApplication",
6 "operatingSystem": "Web",
7 "publisher": { "@id": "https://www.example.com/#organization" },
8 "offers": [
9 { "@type": "Offer", "name": "Free", "price": "0", "priceCurrency": "USD" },
10 {
11 "@type": "Offer",
12 "name": "Team",
13 "priceSpecification": {
14 "@type": "UnitPriceSpecification",
15 "price": "12",
16 "priceCurrency": "USD",
17 "referenceQuantity": { "@type": "QuantitativeValue", "value": 1, "unitText": "seat" },
18 "billingDuration": "P1M"
19 }
20 },
21 { "@type": "Offer", "name": "Enterprise", "description": "Custom pricing. Contact sales." }
22 ]
23}

Each post links its author, whose own page carries ProfilePage markup, and shows its place in the blog:

1{
2 "@context": "https://schema.org",
3 "@graph": [
4 {
5 "@type": "BlogPosting",
6 "headline": "How to close the books in five days",
7 "datePublished": "2026-09-02",
8 "dateModified": "2026-10-06",
9 "author": { "@type": "Person", "name": "Jane Doe", "url": "https://www.example.com/authors/jane-doe" },
10 "publisher": { "@id": "https://www.example.com/#organization" }
11 },
12 {
13 "@type": "BreadcrumbList",
14 "itemListElement": [
15 { "@type": "ListItem", "position": 1, "name": "Blog", "item": "https://www.example.com/blog" },
16 { "@type": "ListItem", "position": 2, "name": "Month-end close" }
17 ]
18 }
19 ]
20}

What happens when ChatGPT and Google AI Mode read a pricing page?

To see the pricing sample at work, the example below runs it through one question. A finance lead asks Google AI Mode and ChatGPT: "What does Vendor A cost for 40 users, and does it sync with NetSuite?" Vendor A, its prices and the pages in the results are invented, while the way each assistant searches and reads follows the platforms' documentation and the published tests.

Its pricing page shows a free tier, a Team plan at $12 a seat each month and an Enterprise plan with Contact sales, and its JSON-LD states the same plans:

  1. Fan-out. Both assistants split the question into separate searches, one for the price per user and one for the NetSuite integration.
  2. Entity. Vendor A shares its name with an unrelated payments company. AI Mode can tell the two apart through Google's Knowledge Graph, whose record of the software company draws on its Organization markup and sameAs links. ChatGPT relies on the search results and on the pricing page's own words (accounting software).
  3. Candidates. Each assistant gathers the pricing page, the NetSuite integration page, a review-platform profile and a 2024 comparison article that lists an older, lower Team price.
  4. Reading. AI Mode answers from the copy Google indexed, in which Google parsed the Offer markup at crawl time. ChatGPT opens the page live, runs no JavaScript and receives the page as text with its script blocks removed, so it reads the price in the pricing table.
  5. Weighing. The assistant compares the pricing page, updated last month, with the 2024 article. No platform documents how that choice is made. In this example the newer page wins, and its visible date matches its markup, as Google asks.
  6. Answer. Team costs $12 a seat each month, about $480 a month for 40 users, and Vendor A offers a native NetSuite integration. The answer cites the pricing and integration pages.
Flow diagram of a finance lead's question about Vendor A's price for 40 users: three candidate pages (the dated pricing page, a review profile and a 2024 article with an older, lower price), Google AI Mode reading the indexed copy and parsed Offer, ChatGPT reading the live page's HTML text, and an answer of $12 per seat from the pricing table, with two break paths: a stale Offer that leaves two prices on record, and plans rendered by JavaScript that leave ChatGPT quoting the 2024 price.

Two changes would break that answer. If the JSON-LD keeps the old price after a change, ChatGPT reads the new price from the text while Google's parsed record holds the old one, and Google treats the mismatch as a guideline violation.

If JavaScript renders the plans after load, ChatGPT's fetch finds no price and falls back to the 2024 article, while Googlebot renders the page. Plans that load only after a click stay hidden from Google too, because Google Search does not interact with a page. Markup counted at the entity step and sat in Google's parsed record, and the price both engines stated came from the HTML table.

How to optimize schema markup for AI search

Those two ways an answer breaks, a stale Offer and plans loaded by scripts, are what the work prevents, and it follows the five factors in order. Because markup is set per template, steps 2 to 6 change a handful of templates (homepage, pricing, product, blog and author pages), so the schema work is a bounded project and step 7 takes the ongoing effort. Each step has an owner:

  1. Audit the markup with the checklist below. The SEO lead owns it, and the output is a list of fixes per template.
  2. Move JSON-LD into the server HTML (factor 1). The web team prints it in each template.
  3. Fix errors and remove invented, duplicate and hidden markup (factor 2). The web team works at the template.
  4. Build one Organization graph (factor 3). The SEO lead sets the @id, identifiers and sameAs profiles.
  5. Mark up pricing and product pages from the same source as the visible table (factor 4), as in the pricing sample above. Product marketing owns the plan data and the web team the template.
  6. Add Article and Person markup to posts and author pages (factors 3 and 5). The content and web teams share it.
  7. Move the remaining effort to passages that answer the prompts customers type. The content lead lists the questions customers ask AI assistants about the company, the prompt panel described under measurement, and maps each question to a page. Each page then states the facts its questions need, such as per-seat prices, limits, integrations and certifications, in its text, because the model writes its answer from the passages it reads.
Where to start: the homepage Organization node and the Offer values on the pricing page. Together they state who the company is and what it costs, and pricing drew the largest share of inaccurate claims in Profound's checks.

The order shifts with the business model:

SituationFirstSecond
Self-serve SaaSOffer values on the pricing page, filled from the same plan data as the table; one Organization node with sameAsArticle and Person markup on posts and author pages
Sales-led SaaSOne Organization graph with identifiers; SoftwareApplication on product pages, with no invented pricesPricing page text that states the pricing model and starting points
Fintech with regulated claimsOrganization with legalName and an LEI in iso6523Code; fee and rate disclosures in HTML text, mirrored exactly in any markupFinancialProduct where it states a fact the page shows
Developer and API productsDocs marked up as TechArticle or Article with real dates; one Organization nodeSoftwareApplication for the API product, linked to the Organization by @id

In every model, FAQPage, HowTo and properties no platform documents can wait.

How to audit structured data for AI search

The first of those steps is an audit, and because markup is set by the template, one page per template covers most of the pages. The quickest delivery check is a plain fetch of the raw HTML, which passes when it finds at least one JSON-LD block:

1curl -sL https://www.example.com/pricing | grep -c 'application/ld+json'

Each check below has a pass condition and a free tool:

#FactorCheckPasses whenFree tool
1DeliveryJSON-LD in the raw HTMLView-source or a plain fetch of one page per template shows the JSON-LD blockView-source, curl
2DeliveryNo tag-manager copiesNo JSON-LD block added by a tag manager repeats or contradicts the template's markupBrowser developer tools
3ValidityParses cleanlyEvery template passes with zero errorsSchema Markup Validator
4ValidityGoogle features detectedThe intended items (Product, Breadcrumb, Article) are detected on each template, and URL Inspection shows them in the indexed page after a fix and a request to reindexRich Results Test, URL Inspection
5ValidityNo invented propertiesEvery property appears in schema.org or Google's documentation, and types Google does not use (FinancialProduct, TechArticle) parse cleanlySchema Markup Validator
6Entity clarityOne Organization nodeExactly one Organization with an @id, which the other nodes referenceA crawler that extracts JSON-LD
7Entity clarityProfiles agreeEach sameAs profile states the same name and category as the homepageManual check
8Entity clarityKnowledge Graph entityA search for the company's name returns its entityKnowledge Graph Search API
9AgreementPrices matchEvery marked-up price equals a price printed on the same pageCrawler, then manual check
10AgreementNo copied ratingsNo aggregateRating is built from review-platform ratingsCrawler
11AgreementContact sales plansPlans without a public price carry no price at allManual check
12FreshnessHonest datesdateModified changes only when the content changes and matches the visible dateCrawler over time
13MeasurementBaseline before changesFact accuracy on a fixed prompt panel is recorded before any markup changesAtomic AGI or a spreadsheet

No validator checks whether the markup agrees with the page, whether a crawler that skips JavaScript receives it, or whether AI answers state the facts correctly. Those three are checked by reading the raw HTML next to the page and by asking the assistants.

Validity has to be checked type by type, because Search Console has no report for Organization, WebSite, SoftwareApplication or Article. Its rich result reports cover breadcrumbs, product snippets, merchant listings, review snippets and profile pages, among other types. Organization, SoftwareApplication and Article are therefore checked in the Rich Results Test or URL Inspection, and WebSite in the Schema Markup Validator.

How to measure whether schema markup helps AI search

Once the fixes ship, the first measure is fact accuracy, the share of answers, per platform, that name the right company and state each fact correctly. It is read from a fixed panel of 20 to 50 prompts about the company's category, plans, prices, integrations and security. Each prompt runs more than once, because answers vary between runs, and a weekly run of the same panel shows whether the facts improve after the markup and the pages change.

Fact accuracy does not show which pages an answer drew on, so citations of the changed pages come second. They are compared with similar pages left unchanged over the same weeks, because AI citations rise and fall with platform-wide trends, as the Ahrefs control pages showed. Google recommends a before-and-after test on a few pages, read in Search Console over months.

Google and Bing now report AI visibility directly, which makes a before-and-after check possible without third-party tools. Search Console's Generative AI performance reports, launched on 3 June and live for every property since 31 August 2026, show impressions in AI Overviews and AI Mode, and Bing Webmaster Tools' AI Performance report, in public preview, shows citations across Copilot and Bing's AI summaries. For ChatGPT, Claude and Perplexity, the prompt panel remains the measure.

Screenshot of Google's example of the Search Console Generative AI performance report: total impressions in generative AI features for example.com over seven days, with a daily line chart and the top pages by impressions.
Search Console's Generative AI performance report, shown with Google's sample data. Source: Google Search Central.

Engines recrawl pages and refresh their records on their own schedules, so a markup fix can take weeks to show in AI answers. The same prompt can also get a different answer on each run, so one week's score can rise or fall by chance, and the panel is read as a trend across several weekly runs. Omnius tracks citations this way for each prompt and engine, and the cited pages in this guide come from that tracking.

Read more: How to measure GEO success

Which schema markup mistakes waste effort?

Beyond the failures the audit finds, five mistakes waste effort for little or no return:

  • Schema as the AI search plan. Markup did not lift citations of already-cited pages against matched pages, so it cannot stand in for content and authority work.
  • Review-platform ratings as aggregateRating. Google's review snippet guidelines bar ratings aggregated from other websites, such as G2 or Capterra scores.
  • A price of 0 on a Contact sales plan. Google's software app guide sets a price of 0 for an app available without payment, so a plan with no public price carries no price at all.
  • Plugin and widget markup nobody has read. A plugin, theme, widget or tag manager publishes a second Organization, a stale Offer or, like the testimonial widget in factor 1, a page's only JSON-LD block.
  • Judging markup by citations alone. Citations move for reasons markup does not control, while fact accuracy shows whether search engines hold the right record.

Most of those mistakes start where the markup is managed apart from the company's facts, and keeping the two in one record is entity and structured data work.

How we approach schema markup at Omnius

As an SEO and AI search agency, we treat structured data as the machine-readable copy of a company's record. Markup restates a company that search engines already recognise as one entity. Where a company's facts still conflict across its pages and profiles, markup publishes those conflicts in machine-readable form. Our entity work therefore settles the company's name, category and facts first, and generates the schema from that record.

The markup does not carry the citations on its own. In our datasets, two posts on one vertical SaaS vendor's blog carried the same Article, BreadcrumbList, Organization and author markup. Between July and October 2026, the purchasing guide with cost and comparison tables drew 210 AI citations, and a post on pros and cons with no figures drew none. One team runs the work from the record to measurement, in four parts:

  • Entity record: we keep the company's facts in one model, each marked confirmed, inferred or open, and generate the Organization graph, identifiers and sameAs from it.
  • Delivery: we print the JSON-LD in each template's server HTML, validate the entity data and keep key content accessible to search and AI crawlers.
  • Fact pages: the website and the schema share that one source of truth, so the markup states the facts the page shows.
  • Measurement: we track fact accuracy and citations on a fixed prompt panel.
Omnius-connection diagram: structured data work at the centre, linked to the entity record (Organization, sameAs, identifiers), delivery (server HTML, templates, validation), fact pages (pricing, product, integrations) and measurement (fact accuracy, Atomic AGI, citations).

We track that panel in Atomic AGI, the AI search product built inside Omnius, which follows more than 11,000 domains across Google and the major AI platforms.

Frequently asked questions

Is FAQ schema still relevant?

FAQ schema is still relevant, but it matters much less than it did. Google stopped showing FAQ rich results for every website on 7 May 2026, so FAQ markup no longer changes how a page looks in Google, and Google says it can still make general use of schema.org markup beyond its documented features. It is worth keeping where the questions and answers are visible on the page, and it should be removed where it marks up answers readers cannot see.

Does schema markup help SEO?

Schema markup helps SEO by making pages eligible for rich results such as product snippets, review stars and breadcrumbs, which Google's starter guide names as its value. Google says a structured data manual action removes that eligibility without affecting how the page ranks, and that retiring seven structured data features in 2025 would not affect rankings either.

Is there a special schema type for AI search or GEO?

No special schema type exists for AI search or GEO. Google says no special schema.org markup is needed for its generative AI features, and schema.org's 30.1 release in September 2026 added no terms aimed at AI search. llms.txt is a proposed Markdown file, not schema.org markup, and Google Search does not use it.

Does ChatGPT read schema markup?

ChatGPT has no documented use of schema markup, since OpenAI publishes nothing on reading JSON-LD. When ChatGPT opens a page live, its fetcher runs no JavaScript, and in the two published fetch tests no fact that existed only in JSON-LD reached the answer. ChatGPT's shopping results take structured price data from providers and merchant feeds, so for a SaaS vendor's plans, the page text is what ChatGPT's live fetch receives.

Does schema markup end up in an LLM's training data?

Schema markup is dropped from FineWeb and RefinedWeb, two open web datasets built to train models. Both extract page text with trafilatura, whose default cleaning removes script and head elements, so JSON-LD inside a script tag does not survive. The papers do not name the extractor version, and OpenAI and Anthropic do not publish how they extract text for training.

Methodology

The evidence behind this guide:

  • Omnius datasets. We compared cited and uncited pages of the same website and page type: 482 blog, comparison and product pages, 181 of which carried 2,915 AI citations from 13 July to 11 October 2026, with uncited pages sampled from each website's sitemap. A second sample covered 261 third-party pages cited in the same answers, and a third the homepages and 53 pricing pages of 100 B2B SaaS and fintech vendors cited in them, read as raw HTML and, for the 96 homepages and 45 pricing pages that rendered, in headless Chrome on 13 October 2026. The figures are anonymised, and the same-website shares weight uncited pages to the cited pages' mix of websites and page types.
  • Analysis. The two paths, the five factors and the steps are our analysis of the platforms' documentation, the tests and the datasets.
  • Recent developments. Each date is the publication date on the primary source, except the FAQ change, dated by when the results stopped. All were checked on 13 October 2026, and the screenshots were taken on 14 October 2026.
  • Limits. The datasets show observations, never causes. Markup barely varies inside a website, so the comparison cannot show what a website without markup would get. The Ahrefs study covers pages that already had 100 or more AI Overview citations. Each fetch test used one page, the Gemini results differ between the two tests, and Writesonic's test left out Perplexity.
  • Other sources. Platform behaviour comes from Google, Microsoft, OpenAI, Anthropic and Perplexity documentation, and third-party figures from Ahrefs, AirOps with Growth Memo, searchVIU, Writesonic, Vercel with Ora, G2 and Profound.

Sources

The documentation and studies behind this guide:

We broke the “standard agency” model, and built it differently.

Learn how we integrate deep into SaaS & Fintech companies to make the growth predictable.

Vertical Black Line
/ No. 1 LinkedIn™ content-focused SaaS tool
“With Omnius, we saw immediate results - 64% higher conversion on a new website and 110% organic growth in 6 months. So, if you want an agency that understands startups, do yourself a favour and talk to them.”
Ivana Todorovic
co-founder & CEO
Ivana Todorovic
Vertical Black Line
/ Berlin-based early-stage VC fund
“Omnius is one of the most high-quality, reliable, and trustworthy SEO agencies in Europe, specifically focused on B2B SaaS & Fintech startups.”
Polina Alexandrova
INVESTOR
Polina Profile Picture
Vertical Black Line
/ EU's most visited AI platform; G2's Top 10 AI products
“Omnius is bringing in great ideas from their view of the SaaS world.”
Dominik Lambersy
Co-founder & CEO
Dominik Profile Picture
Vertical Black Line
/ Deloitte UK Technology Fast 50 fintech company
"Omnius completely owns the project - taking control & monitoring performance. The speed at which they deliver is insane – I honestly don’t know if they have 100 people working around the clock."
‍
Sergei Fedorov
FORMATIONS PO
Group 1000002597
Vertical Black Line
/ One of the leading EOR platforms with 150,000+ users globally
"We truly see Omnius as an extension of our in-house team. As a result of the collaboration, we've seen clearer strategy, better SEO performance overall, and notable AIO improvements.
Barbara Borko
SEO MANAGER
Barbara Borko Native Teams
left arrow black
right arrow black
BigCommerce Black Logo
Payoneer Black Logo
worldfirst logo
Solflare
general legal
sigma360 logo
Meniga
Anna
apexanalytix
text.cortex
Native teams
onetrance
GlobalAppTesting Black Logo
rready
AuthoredUp Black Logo
Zencoder
lsports
crustdata
paypercut
Atomic AGI

Monthly Growth OpenLetter.

Learn how to scale user acquisition without scaling costs from our findings. We spent years exploring, so you don't have to.

Your submission has been received!              
Oops! Something went wrong while submitting the form.

Related articles.

White Omnius

AI-native SEO Agency, maximizing the growth probability on ChatGPT Google Claude Gemini Perplexity

Omnius is a B2B SEO & GEO agency; partnering exclusively with SaaS, Fintech & AI companies. The result? Compounding growth made through organic positioning everywhere people search for information, including both Google & LLM search engines.

Our work is referenced by the leading media, venture funds & startup organizations
Y Combinator
YCombinator
Reuters
Reuters
Bloomberg
Bloomberg
Iab
Intuit Mailchimp
speedinvest
Speedinvest
entrepreneur-first
Entrepreneur First