Adding schema markup to a page does not make AI engines cite it more. Ahrefs tracked 1,885 pages that added JSON-LD between August 2025 and March 2026 against 4,000 matched control pages: Google AI Mode moved +2.4%, ChatGPT +2.2% — both statistically indistinguishable from zero — and Google AI Overviews moved −4.6%, a small but significant decline in the wrong direction. Learn more about Answer Engine Optimization (AEO) and JSON-LD structured data in our glossary.
- No controlled study has found a citation lift. Three tried — Ahrefs, OtterlyAI and an SSRN analysis of 730 citations. All three came back null.
- Engines read visible HTML, not your markup. In searchVIU's October 2025 test, zero of five AI systems extracted a price that existed only in JSON-LD.
- Most AI crawlers download JavaScript and never execute it — GPTBot on about 11.5% of requests, ClaudeBot on about 23.8%. Client-side content is invisible to them.
- Schema's real job is entity disambiguation: one Organization node, a stable
@id, andsameAslinks that actually resolve. - Citations are earned elsewhere — crawl access, statistics and sourcing in the copy, and presence on the domains engines lean on: Reddit, YouTube, LinkedIn, Wikipedia.
That does not make structured data worthless. It makes it something different from what the AI visibility market has been selling: infrastructure that resolves who your brand is, not a lever that buys you citations.
01 · The pipeline
What AI crawlers actually read when they fetch your page
Most AI crawlers never execute the JSON-LD you ship, and several never execute JavaScript at all. Before arguing about which schema types matter, it is worth knowing where markup sits in the pipeline — because in the most common path, it does not survive to the model.
In October 2025 the German technical SEO firm searchVIU planted a product page with prices embedded eight different ways and asked five AI systems to fetch it live. The results were consistent: every system extracted visible HTML, and none extracted a price that existed only in JSON-LD, hidden Microdata, or hidden RDFa. Gemini scored best at 4 of 8 because it was the only system that ran the JavaScript test case.
There is a mechanical reason. JSON-LD lives inside a <script> tag, and the extraction libraries that feed training corpora routinely discard script tags — the FineWeb dataset paper documents trafilatura, a standard extractor, doing exactly that. The markup is stripped before the text reaches the model.
Rendering is the second cut. Vercel's network analysis found that none of the major AI crawlers execute JavaScript. GPTBot downloads JS files on roughly 11.5% of requests and runs none of them. Claude's crawler downloads JS on about 23.84% of requests and runs none of it either. Googlebot and Applebot render; GPTBot, OAI-SearchBot, ClaudeBot, and PerplexityBot do not.
Blocking is the third cut, and it is usually accidental. OpenAI runs three separate user agents with three different jobs: GPTBot for model training, OAI-SearchBot for ChatGPT search inclusion, and ChatGPT-User for user-triggered fetches. OpenAI states that sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers. Teams that write one blanket block to keep their content out of training quietly remove themselves from ChatGPT's citations at the same time.
| Crawler | Job | Downloads JS | Runs JS |
|---|---|---|---|
| Googlebot | Search index + Gemini grounding | renders fully | Yes |
| Applebot | Apple search and AI | renders fully | Yes |
| GPTBot | OpenAI model training | ~11.5% of requests | No |
| OAI-SearchBot | ChatGPT search inclusion | not measured | No |
| ChatGPT-User | User-triggered live fetch | not measured | No |
| ClaudeBot | Anthropic crawl | ~23.8% of requests | No |
| PerplexityBot | Perplexity answer index | not measured | No |
The middle column is the strange one: GPTBot and ClaudeBot pull JavaScript files down and then run none of them, so the bandwidth is spent for nothing and the content stays invisible. Green = renders client-side content; red = anything outside the raw HTML is unreachable. Source: Vercel, "The rise of the AI crawler" (Dec 2024).
02 · The evidence
Does structured data for AI actually increase citations?
Every controlled test published so far says no. The correlational data looks encouraging and the causal data does not, and the gap between them is the whole story.
Ahrefs started with the correlation. Across 6 million URLs, pages cited by AI were roughly three times more likely to carry JSON-LD than pages that were not. That statistic has been sold as proof that schema drives citations for two years.
Then Ahrefs ran the test that isolates it. They tracked 1,885 pages that added JSON-LD between August 2025 and March 2026, matched each against control pages from other domains with similar citation levels, and ran a difference-in-differences analysis. Google AI Mode moved +2.4%, ChatGPT +2.2%, Google AI Overviews −4.6%. The first two are noise. The third is significant and points the wrong way. Ryan Law, who reviewed the study, put it plainly on LinkedIn: schema is "probably not some magic fix for improving your AI citations."
OtterlyAI reached the same place from a different angle. Their canary test planted a fact that existed nowhere else on the web inside FAQ schema, then tracked brand coverage across 319 prompts from November 2025 through March 2026 with schema deployed on 7 December as the intervention point. No platform surfaced the planted fact.
Set against that, two platforms have confirmed on the record that they use schema to understand content. Microsoft's Fabrice Canel, Principal Product Manager at Bing, stated at SMX Munich in March 2025 that schema markup helps Microsoft's LLMs understand content — which covers Copilot, and matters for ChatGPT because Bing's index feeds its search. Google's position is in its own documentation: structured data "isn't required for generative AI search, and there's no special schema.org markup you need to add," but it remains "a good idea" for rich-result eligibility.
Understanding is not citation. Both things can be true: engines parse your markup, and adding markup does not buy you a mention.
Only the AI Overviews result is statistically significant, and it runs against the schema pitch.
03 · The real job
Entity SEO: the one job schema does that prose can't
The case for schema markup for AI rests on one job: telling an engine which thing your brand is, not making your page more quotable. That is the defensible claim, and it survives the citation studies intact because it operates at a different stage of the pipeline.
AI systems resolve entities. When someone asks about a brand, the system has to map that string to one node and not confuse it with a similarly named company, product, or common noun. If your brand shares a name with a fruit, a river, a font, or three other startups, that resolution is a real problem with real consequences: an answer about a competitor delivered under your name.
Schema addresses it with three mechanisms working together:
@id— a stable canonical URI for each entity node, so the same organization can be referenced from every page without being re-declared as a new thing.@graph— a container that connects your Organization, Person, and Article nodes into one small internal knowledge graph rather than a scatter of unrelated blobs.sameAs— outbound links to external profiles that already identify the entity, covered in the next section.
This is also the part of the argument that the platforms actually confirm. Bing says schema helps its LLMs understand content. Google says markup helps its systems understand a page while explicitly declining to promise AI-feature benefit. Both statements are about comprehension. Neither is about citation volume, and reading them as citation promises is how the market got here.
04 · Disambiguation
sameAs schema and Wikidata: anchoring the brand to one entity
The sameAs property is the cheapest entity work available, and it is the one most often shipped broken. It points from your Organization node to external profiles that already identify the same entity, giving a reconciliation system independent anchors to match against.
The targets worth listing, in rough order of value: Wikidata, Wikipedia if you qualify, LinkedIn company page, Crunchbase, and your primary owned social profiles. Wikidata deserves specific attention because it feeds Google's Knowledge Graph and is a known input to named-entity disambiguation, and because most businesses can create a Wikidata item without meeting Wikipedia's much higher notability bar.
Three failure modes account for most broken implementations:
- Dead or redirected targets. A
sameAspointing at a 404 or a chain of redirects is worse than nosameAs— it is an assertion the engine cannot verify. - Name drift. Three spellings of your company across schema, LinkedIn, and Wikidata reads as three entities. Pick one legal name and one display name, then enforce both everywhere.
- Padding. Listing every profile you have ever created, including abandoned ones, dilutes the signal without adding verification.
Treat the list as an audit item, not a one-time task. Profiles get renamed and companies get acquired, and a sameAs array shipped in 2024 is very likely wrong today.
Each verified anchor makes the match more confident. Dead links break the chain.
05 · The foundation
Organization schema: the brand node every answer resolves against
If you ship one piece of markup, ship this one. Organization is the node that answers the recurring identity questions — what is this company, who founded it, where is it, how big is it, is it real — and every other type on your site should reference it rather than restate it.
Declare it once, site-wide, with a stable @id. Every Article, Person, and Product node then points at that same @id instead of duplicating the brand facts.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "Organization", "@id": "https://example.com/#organization",KEY: @id "name": "Example Analytics", "legalName": "Example Analytics, Inc.", "url": "https://example.com/", "logo": "https://example.com/logo.png", "slogan": "Product analytics for builders", "foundingDate": "2018-03-01", "founder": { "@id": "https://example.com/#jane-doe" }, "numberOfEmployees": { "@type": "QuantitativeValue", "value": 120 }, "naics": "511210", "duns": "123456789", "brand": { "@type": "Brand", "name": "Example Analytics" }, "knowsAbout": ["product analytics", "event tracking", "data visualization"],KEY: knowsAbout "sameAs": [KEY: sameAs "https://www.wikidata.org/wiki/Q00000000", "https://www.linkedin.com/company/example-analytics", "https://www.crunchbase.com/organization/example-analytics" ]}</script>Two properties are underused and worth the effort. knowsAbout declares topical scope, which is the closest schema gets to saying what your brand is an authority on. naics and duns give registry identifiers that verify the company exists as a legal entity — useful for the "is this legit" class of question that AI answers handle badly.
Pair it with a WebSite node that links back to the same publisher:
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "WebSite", "@id": "https://example.com/#website", "url": "https://example.com/", "name": "Example Analytics", "publisher": { "@id": "https://example.com/#organization" },KEY: publisher @id "potentialAction": { "@type": "SearchAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://example.com/search?q={search_term_string}" }, "query-input": "required name=search_term_string" }}</script>06 · The inventory
The schema markup types a brand should ship, in priority order
Ship in three tiers, and stop when the effort stops matching the return. The types below are ordered by how much identity work they do, not by how much SERP decoration they used to earn.
Tier 1 — identity, ship on every site
Organization, WebSite, Person, BreadcrumbList. These declare who you are, who writes for you, and how the site is structured. Person matters more than most teams assume: author entities with sameAs, jobTitle, worksFor, and knowsAbout are the machine-readable half of an expertise claim.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "Person", "@id": "https://example.com/#jane-doe", "name": "Jane Doe", "jobTitle": "CEO and Co-founder", "worksFor": { "@id": "https://example.com/#organization" },KEY: worksFor @id "alumniOf": "Stanford University", "knowsAbout": ["product analytics", "SaaS growth"],KEY: knowsAbout "sameAs": [KEY: sameAs "https://www.linkedin.com/in/janedoe", "https://www.wikidata.org/wiki/Q00000001" ]}</script>Tier 2 — content and commerce
Article / BlogPosting / TechArticle with author and publisher wired to your Tier 1 @ids. SoftwareApplication or Product with Offer. Service for agencies and consultancies. ItemList for listicles and comparison pages. DefinedTerm and DefinedTermSet for glossaries, which map directly onto definitional queries.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "BlogPosting", "@id": "https://example.com/blog/event-tracking#article", "headline": "A practical guide to event tracking", "datePublished": "2026-06-01T09:00:00Z", "dateModified": "2026-08-01T09:00:00Z",KEY: freshness "author": { "@id": "https://example.com/#jane-doe" },KEY: author @id "publisher": { "@id": "https://example.com/#organization" },KEY: publisher @id "isPartOf": { "@id": "https://example.com/#website" }, "citation": "https://arxiv.org/abs/2311.09735"KEY: citation}</script>Tier 3 — situational
Event, VideoObject, ImageObject, JobPosting, Dataset, Course, LocalBusiness and its subtypes, Review and AggregateRating. Ship these when you have the underlying thing, not to fill out a checklist.
Three carry live constraints worth knowing. JobPosting requires a future validThrough — expired postings left live are a documented manual-action trigger. ClaimReview is restricted to recognised fact-checking programme members and was retired from general rich results in June 2025. And Google will not show review rich results for Organization or LocalBusiness when the reviewed entity controls the reviews, a rule it has held since September 2019 — self-hosted testimonials marked up as AggregateRating on your own brand node do nothing except create risk.
| AI query pattern | Schema that helps | What actually decides it |
|---|---|---|
| "what is X" | Organization, DefinedTerm | A 40–60 word definition in the first paragraph |
| "who founded X" | Organization founder, Person | Named bio page with verifiable sameAs |
| "X vs Y" | ItemList + per-product nodes | A clean HTML comparison table |
| "best X for Y" | SoftwareApplication, ItemList | Third-party listicle inclusion, G2 presence |
| "how much does X cost" | Offer, AggregateOffer | Visible pricing table matching the markup |
| "is X legit / X reviews" | None you control | Independent reviews on G2, Trustpilot, Reddit |
| "does X integrate with Y" | FAQPage, featureList | A visible integrations page listing Y by name |
| "alternatives to X" | ItemList | Co-occurrence with competitors in third-party content |
| "how do I do X with Y" | HowTo (no SERP feature) | Numbered steps and code blocks in visible HTML |
Mapping recurring AI query patterns to markup and to the content that carries the actual weight.
07 · Commercial pages
SoftwareApplication schema for pricing and product queries
Pricing questions are among the most common commercial prompts, and they are the clearest case where markup must mirror visible content or do nothing at all. The searchVIU test proved the failure mode directly: a price living only in JSON-LD was extracted by zero of five systems.
For SaaS, SoftwareApplication or WebApplication is the right type; Product is for physical goods. Multi-tier pricing uses AggregateOffer rather than a single Offer.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "Example Analytics", "applicationCategory": "BusinessApplication", "operatingSystem": "Web", "publisher": { "@id": "https://example.com/#organization" },KEY: publisher @id "featureList": [KEY: featureList "Funnel analysis", "Retention cohorts", "Snowflake sync", "SOC 2 Type II" ], "offers": {KEY: AggregateOffer "@type": "AggregateOffer", "lowPrice": "99.00", "highPrice": "899.00", "offerCount": 3, "priceCurrency": "USD", "availability": "https://schema.org/InStock", "url": "https://example.com/pricing" }}</script>featureList is the property that maps to integration and capability questions, and it is worth populating properly — but only alongside a visible features or integrations page that names the same things. The markup describes; the visible page is what gets read.
AggregateRating is eligible on SoftwareApplication and Product. It is not eligible on Organization or LocalBusiness when you control the reviews. If your ratings come from your own testimonial widget, they belong nowhere in your markup.Keep prices current. Stale priceValidUntil values and prices that no longer match the page are the most common structured-data mismatch in SaaS, and mismatch is exactly what the spam policy targets.
08 · Deprecations
FAQ schema after Google's deprecation: keep it or kill it?
Keep it if the Q&A is real, delete it if it was decoration, and stop expecting anything from it either way. Google added an official deprecation note to its FAQ structured data documentation indicating that FAQ rich results no longer appear in Google Search.
Google FAQ Schema Sunset Timeline
3-Phase Google Search Central Sunset Schedule
SERP Feature Sunset
FAQ rich results and accordions stopped displaying in Google Search results worldwide.
Search Console Cleanup
Search Console FAQ report, Search Appearance filter, and Rich Results Test support removed.
API Endpoint End
Search Console API support ends permanently for FAQ appearance metrics and historical logs.
This completes a withdrawal that started in August 2023, when Google restricted FAQ rich results to well-known authoritative government and health sites. For most commercial sites the feature had already been gone for nearly three years. HowTo followed the same arc, fully deprecated in 2023.
One line in Google's notice matters more than the rest: Google will continue to use FAQ structured data to better understand pages. The markup is still valid, still crawlable, and will not trigger a penalty. It simply buys no SERP feature.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{KEY: mainEntity "@type": "Question", "name": "Does Example Analytics integrate with Snowflake?", "acceptedAnswer": { "@type": "Answer", "text": "Yes. Example Analytics ships a native Snowflake connector with reverse-ETL sync on all paid plans." } }]}</script>The durable lesson is the one the deprecation makes obvious: the schema was never doing the work. Well-written questions and direct answers in visible HTML were. Those still get extracted, with or without the wrapper.
09 · Emerging standards
llms.txt, NLWeb, and what's actually coming for agents
llms.txt is not used by any major AI system, and Google has said so in its own documentation. The proposal — a markdown index at your site root, introduced by Jeremy Howard in 2024 — has strong adoption among tooling vendors and effectively none among the engines it was designed for.
Google's AI optimization guide is unambiguous: you do not need to create machine-readable files, AI text files, markup, or Markdown to appear in Google Search including its generative features, "as Google Search itself doesn't use them." John Mueller has compared it to the keywords meta tag. Ahrefs analysed 137,000 domains and found 97% of llms.txt files were never requested by anything.
There is one legitimate use: developer documentation consumed by coding agents. Cursor, Claude Code, and similar tools do read these files. If your audience is developers pointing agents at your docs, ship it. If your goal is brand citations in ChatGPT, it does nothing.
NLWeb is the more interesting bet, and it runs on the schema you already have. Microsoft's open project, announced at Build 2025 and led by R.V. Guha — the same person behind RSS, RDF, and Schema.org — turns a site into a natural-language /ask endpoint. Two details make it relevant here: every NLWeb instance is also a Model Context Protocol server, and NLWeb ingests existing Schema.org markup, RSS, and sitemaps rather than requiring a new format.
10 · What works
Generative engine optimization: what actually earns the citation
The tactics with measured effects are about evidence and reach, not markup. The Princeton GEO study, presented at KDD 2024 and run across roughly 10,000 queries, tested nine content interventions in a controlled setup. The three that worked were adding statistics, quotations, and citations to credible sources — up to a 40% visibility gain, with lower-ranked sources benefiting most. Keyword stuffing lowered visibility. No schema variant appeared among the winners.
Placement compounds it. Search Engine Land reported in February 2026 that roughly 44% of ChatGPT citations come from the first third of a page. An answer buried under 800 words of preamble is an answer that does not get lifted.
Then there is the part most brands underweight: the answer usually is not on your domain at all. Peec AI's analysis of 30 million sources found Reddit the most-cited domain across ChatGPT, Google AI Mode, Gemini, Perplexity, and AI Overviews, followed by YouTube, LinkedIn, Wikipedia, and Forbes. For B2B queries, Perplexity leaned on Reddit, LinkedIn, and G2. Semrush's separate multi-platform study put Reddit, LinkedIn, and Wikipedia at the top of the same list.
The last constraint is access, and it is increasingly outside your control. Cloudflare began blocking AI crawlers by default for new domains in July 2025 and has continued tightening those defaults. If your CDN or WAF is quietly returning 403s and 429s to OAI-SearchBot, no amount of schema matters — nothing is reading the page.
Against that backdrop, the honest framing for schema markup for AI is table stakes. Every competitor can add the same JSON-LD in an afternoon. It secures rich-result eligibility, removes ambiguity about your entity, and positions you for agent surfaces. It does not differentiate you, and no controlled study has found that it lifts citations.
11 · citedby Fix Pack
The ThriveStack citedby Fix Pack: copy-paste remedies for structured data errors
Five errors account for most broken implementations, and all five are cheap to fix. The ThriveStack citedby Fix Pack below is the remediation set we run against client sites, in the order we run it. None of these fixes will lift your citation count on their own — that argument is settled above. What they do is stop your markup being wrong, ignored, or actively penalised, which is the bar most sites currently fail.
1. One entity, one @id
The commonest error is a brand redeclaring itself on every template with no @id, or a different one per page. To a reconciliation system that reads as several similar organisations rather than one. Declare the graph once, server-side, and reference it everywhere else.
<script type="application/ld+json">{ "@context": "https://schema.org", "@graph": [ { "@type": "Organization", "@id": "https://example.com/#organization",STABLE @id "name": "Example Analytics", "url": "https://example.com/", "sameAs": ["https://www.wikidata.org/wiki/Q00000000"] }, { "@type": "WebSite", "@id": "https://example.com/#website", "url": "https://example.com/", "publisher": { "@id": "https://example.com/#organization" }GRAPH LINK } ]}</script>2. Move review markup off the brand node
Google has not shown review rich results for Organization or LocalBusiness where the reviewed entity controls the reviews since September 2019. Ratings from your own testimonial widget on your own Organization node earn nothing and create risk. Ratings belong on the product, and only when they are real.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "Example Analytics", "applicationCategory": "BusinessApplication", "aggregateRating": {PRODUCT RATING ONLY "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "312", "bestRating": "5" }}</script>3. Prove the crawler can actually see it
Markup injected client-side, including through Google Tag Manager, is invisible to crawlers that do not run JavaScript — which is most of them. This is the single check worth running before any other remediation: fetch the raw HTML the way a bot does and confirm the JSON-LD is in the response body.
# verify-ssr.sh# Does the JSON-LD exist in raw HTML before JavaScript runs?curl -sL -A "GPTBot" https://example.com/ | grep -c "application/ld+json"CHECK BOT HTML# Full block check for non-rendering crawlerscurl -sL -A "OAI-SearchBot" https://example.com/ | sed -n "/application\\/ld+json/,/<\\/script>/p"INSPECT JSON-LD# Status code check — a 403 or 429 means crawlers are blockedcurl -s -o /dev/null -w "%{http_code}\\n" -A "PerplexityBot" https://example.com/CHECK BLOCKING4. Never ship an expired date
Time-boxed properties rot silently. An expired validThrough on a live JobPosting is a documented manual-action trigger, and a stale priceValidUntil is the commonest mismatch in SaaS markup. Generate these from the same source of truth as the visible page, never by hand.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "JobPosting", "title": "Senior Data Engineer", "datePosted": "2026-08-01", "validThrough": "2026-10-01",KEY: validThrough "employmentType": "FULL_TIME", "hiringOrganization": { "@id": "https://example.com/#organization" }}</script>5. Audit your sameAs anchors
A sameAs pointing at a 404 or a redirect chain is an assertion the engine cannot verify, which is worse than making no assertion. Profiles get renamed and companies get acquired, so an array shipped in 2024 is very likely wrong now. Run this quarterly.
# audit-sameas.sh# Every sameAs target should answer 200 with no redirect hop.for url in \ "https://www.wikidata.org/wiki/Q00000000" \ "https://www.linkedin.com/company/example-analytics" \ "https://www.crunchbase.com/organization/example-analytics"do code=$(curl -s -o /dev/null -w "%{http_code}" -L "$url")AUDIT HTTP 200 echo "$code $url"doneValidate the result in the Schema Markup Validator and Google's Rich Results Test, then watch Search Console's enhancement reports for a fortnight. And check the thing the fixes were supposed to serve: whether any engine cites you at all. citedby tracks that across ten engines and ties it back to pipeline, which is the only way to tell a markup problem apart from a content problem.
12 · Measurement
How to measure AI visibility after you ship schema
Measure access first, citations second, and never trust a single prompt run. Most teams invert this and end up unable to explain a flat dashboard.
Server logs are the ground truth for access. Segment by user agent — GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, Bingbot, Googlebot — and verify against each operator's published IP ranges, because spoofing is common. Track frequency, status codes, and which paths get hit. A wall of 403s or 429s is a finding, and it is more actionable than any citation metric.
Referral traffic needs configuration. GA4 added a native "AI Assistant" channel in May 2026, but it excludes some engines and misses referrer-less sessions entirely. Build a custom channel group with a source regex covering chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, and copilot.microsoft.com, ordered above Referral. ChatGPT appends utm_source=chatgpt.com to citation links, which helps.
Prompt probing needs statistics. LLM outputs are non-deterministic: the same prompt returns different brands across runs. A single check tells you nothing. Run each prompt many times, report share with confidence intervals, and track each engine separately — cross-platform citation overlap is close to random, so an aggregate number hides more than it shows.
Google warns specifically against third-party tools claiming to use "internal" Google metrics; no external tool has access to Google's ranking or AI systems. Use the category — Profound, Peec AI, Otterly, Scrunch, Semrush's AI toolkit, Ahrefs Brand Radar — with that caveat attached.
The sequence that actually works, in order of expected return:
| Phase | Do this | Effort | Honest impact on AI citations |
|---|---|---|---|
| 0. Access | Server-side rendering, unblock AI crawlers, verify Bing indexing, adopt IndexNow | Medium | High — usually the real bottleneck |
| 1. Entity | Organization + WebSite + Person graph, stable @ids, Wikidata item, clean sameAs | Low–medium | Medium — accuracy, not volume |
| 2. Page markup | Article, SoftwareApplication, BreadcrumbList, ItemList, DefinedTerm | Medium | Low — hygiene and rich-result eligibility |
| 3. Content | Answer-first openings, original statistics, expert quotes, sourced claims | High, ongoing | Highest |
| 4. Off-domain | Reddit participation, G2 and Capterra reviews, YouTube, digital PR | High, ongoing | Highest |
Phases 0, 3 and 4 carry the return. Phases 1 and 2 are cheap insurance that should not be skipped or oversold.
Find out whether AI engines cite you at all
citedby tracks your brand across 10 AI engines and connects citations to pipeline, so you know what to fix before you ship more markup.
Start free →Schema markup and AI visibility — FAQ
Q1Does schema markup help AI search?
Not for citations, based on the controlled evidence. Ahrefs tracked 1,885 pages that added JSON-LD against 4,000 matched controls and found no meaningful uplift on Google AI Mode (+2.4%), ChatGPT (+2.2%), or AI Overviews (-4.6%). Schema does help engines understand and disambiguate your brand entity, which Microsoft's Bing has confirmed on the record, but understanding is not the same as being cited more often.
Q2Do AI crawlers read JSON-LD?
Mostly not at retrieval time. In searchVIU's October 2025 test, five AI systems fetched a page with prices embedded eight different ways and none extracted a price that existed only in JSON-LD, hidden Microdata, or hidden RDFa. JSON-LD sits inside a script tag, and common extraction libraries discard script tags before the text reaches the model. Anything you need an AI to know must also appear in visible HTML.
Q3Should I remove FAQ schema now that Google deprecated FAQ rich results?
No, but stop expecting anything from it. Google stopped showing FAQ rich results on 7 May 2026 and is removing Search Console reporting in June 2026 and API support in August 2026. FAQPage remains valid schema, will not cause errors or penalties, and Google says it will continue using the markup to understand pages. It just no longer produces a SERP feature, and there is no evidence it drives AI citations.
Q4What is the most important schema type for AI visibility?
Organization, declared once site-wide with a stable @id and accurate sameAs links to Wikidata, LinkedIn, and Crunchbase. It is the node that AI systems resolve your brand against, and every other type on your site should reference it rather than restating brand facts. Entity disambiguation is the one job structured data does that content alone cannot.
Q5Is llms.txt worth adding for AI visibility?
Not for brand citations. Google's AI optimization guide states that Google Search does not use llms.txt or similar files, and an Ahrefs study of 137,000 domains found 97% of llms.txt files were never requested. It has one real use case: developer documentation consumed by coding agents such as Cursor and Claude Code.
Q6What actually increases AI citations if not schema?
Crawl access first, then content, then off-domain authority. Make sure content renders server-side and AI crawlers are not blocked by your CDN or WAF. Then add statistics, quotations, and citations to credible sources, which the Princeton GEO study measured at up to a 40% visibility gain. Then build presence on the domains AI engines actually cite most, led by Reddit, YouTube, LinkedIn, and Wikipedia.
Q7Can schema markup hurt my site?
Yes, if it does not match visible content. Google's structured data policies treat markup describing content users cannot see as spam, and a manual action removes rich-result eligibility. The specific traps are review markup on Organization or LocalBusiness where you control the reviews, expired JobPosting entries without a future validThrough, and prices in Offer markup that no longer match the pricing page.
12 · Measurement
How to measure AI visibility after you ship schema
Measure access first, citations second, and never trust a single prompt run. Most teams invert this and end up unable to explain a flat dashboard.
Server logs are the ground truth for access. Segment by user agent — GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, Bingbot, Googlebot — and verify against each operator's published IP ranges, because spoofing is common. Track frequency, status codes, and which paths get hit. A wall of 403s or 429s is a finding, and it is more actionable than any citation metric.
Referral traffic needs configuration. GA4 added a native "AI Assistant" channel in May 2026, but it excludes some engines and misses referrer-less sessions entirely. Build a custom channel group with a source regex covering chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, and copilot.microsoft.com, ordered above Referral. ChatGPT appends utm_source=chatgpt.com to citation links, which helps.
Prompt probing needs statistics. LLM outputs are non-deterministic: the same prompt returns different brands across runs. A single check tells you nothing. Run each prompt many times, report share with confidence intervals, and track each engine separately — cross-platform citation overlap is close to random, so an aggregate number hides more than it shows.
Google warns specifically against third-party tools claiming to use "internal" Google metrics; no external tool has access to Google's ranking or AI systems. Use the category — Profound, Peec AI, Otterly, Scrunch, Semrush's AI toolkit, Ahrefs Brand Radar — with that caveat attached.
The sequence that actually works, in order of expected return:
| Phase | Do this | Effort | Honest impact on AI citations |
|---|---|---|---|
| 0. Access | Server-side rendering, unblock AI crawlers, verify Bing indexing, adopt IndexNow | Medium | High — usually the real bottleneck |
| 1. Entity | Organization + WebSite + Person graph, stable @ids, Wikidata item, clean sameAs | Low–medium | Medium — accuracy, not volume |
| 2. Page markup | Article, SoftwareApplication, BreadcrumbList, ItemList, DefinedTerm | Medium | Low — hygiene and rich-result eligibility |
| 3. Content | Answer-first openings, original statistics, expert quotes, sourced claims | High, ongoing | Highest |
| 4. Off-domain | Reddit participation, G2 and Capterra reviews, YouTube, digital PR | High, ongoing | Highest |
Phases 0, 3 and 4 carry the return. Phases 1 and 2 are cheap insurance that should not be skipped or oversold.
Find out whether AI engines cite you at all
citedby tracks your brand across 10 AI engines and connects citations to pipeline, so you know what to fix before you ship more markup.
Start free →Schema markup and AI visibility — FAQ
Does schema markup help AI search?
Do AI crawlers read JSON-LD?
Should I remove FAQ schema now that Google deprecated FAQ rich results?
What is the most important schema type for AI visibility?
Is llms.txt worth adding for AI visibility?
What actually increases AI citations if not schema?
Can schema markup hurt my site?
Sources
- Ahrefs, "We Tracked 1,885 Pages Adding Schema. AI Citations Barely Moved." (11 May 2026) — matched difference-in-differences across 1,885 treated and ~4,000 control pages; AI Mode +2.4%, ChatGPT +2.2%, AI Overviews −4.6%; 6M-URL first pass found cited pages ~3× likelier to carry JSON-LD.
- searchVIU, "Schema markup and AI in 2025: what ChatGPT, Claude, Perplexity and Gemini really see" (Dec 2025, tests run Oct 2025) — eight embedding methods across five systems; no system extracted JSON-LD-only, hidden Microdata, or hidden RDFa values.
- Google Search Central, "Google's Guide to Optimizing for Generative AI Features on Google Search" — structured data "isn't required for generative AI search, and there's no special schema.org markup you need to add"; Google Search does not use llms.txt.
- Vercel, "The rise of the AI crawler" (17 Dec 2024) — GPTBot, ClaudeBot and PerplexityBot download JavaScript but execute none of it; Googlebot and Applebot render.
- Search Engine Land, "Microsoft Bing/Copilot use schema for its LLMs" (Mar 2025) — Fabrice Canel, Principal PM at Bing, confirmed at SMX Munich that schema markup helps Microsoft's LLMs understand content.
- OtterlyAI, "GEO experiment: does schema markup really impact AI search?" (Mar 2026) — 319 prompts, Nov 2025–Mar 2026, schema deployed 7 Dec 2025; a fact planted only in FAQ schema was surfaced by no platform.
- Aggarwal et al., "GEO: Generative Engine Optimization" (arXiv:2311.09735, KDD 2024) — ~10,000 queries; statistics, quotations and source citations raised generative-engine visibility by up to 40%; keyword stuffing lowered it.
- Search Engine Land, "AI search engines cite Reddit, YouTube and LinkedIn most" (Mar 2026) — Peec AI analysis of 30 million sources across ChatGPT, AI Mode, Gemini, Perplexity and AI Overviews.
- Search Engine Journal, "Google Drops FAQ Rich Results From Search" (May 2026) — rich results ended 7 May 2026; Search Console reporting removed June 2026; API support removed August 2026.
- Ahrefs, "We analyzed 137K sites: 97% of llms.txt files never get read" — llms.txt files are overwhelmingly never requested.
- Semrush, "The most-cited domains in AI: a 3-month study" (Nov 2025) — 230,000 prompts over 13 weeks; documents ChatGPT's Reddit citation share collapsing in mid-September 2025.
- Google Search Central, "Making review rich results more helpful" (Sept 2019) — review rich results are not shown for self-serving reviews on Organization and LocalBusiness.