AI-SEO & GEO
Structured Data for AI Search: What It Is, and What Google, ChatGPT, Perplexity and Claude Actually Read
Structured data is machine-readable code, usually JSON-LD written in the Schema.org vocabulary, that labels what a page contains: this is an article, this is its author, this is a product and its price. Structured data for AI search is the same markup judged by a narrower question: which AI engines actually read it, and what do they do with it?
Google defines structured data as a standardized format for providing information about a page and classifying the page content. The answer to the AI question is less tidy. Each engine documents something different, and some document nothing at all.
This article covers what structured data is and what it still does in Google Search, then goes engine by engine through what Google, ChatGPT, Perplexity, Claude and Microsoft Copilot say in their own documentation. It ends with a local test of what happens to JSON-LD when a page is converted to text, the schema types worth shipping (each linked to its own guide), and a single JSON-LD graph you can adapt.
Key takeaways
- Structured data labels page content for machines. JSON-LD is Google’s recommended format, though Google says all 3 formats are equally fine if the markup is valid.
- Google now states that structured data isn’t required for generative AI search, and there’s no special schema.org markup you need to add. It still recommends it for rich results.
- OpenAI, Perplexity and Anthropic publish crawler documentation, not schema guidance. ChatGPT shopping is the exception: it uses structured product metadata and merchant feeds.
- Microsoft is the one vendor on record saying schema helps its LLMs understand content.
- In a local test, four of five common HTML-to-text pipelines dropped the page’s JSON-LD entirely. Anything that must reach an AI answer should also be in the visible text.
What is structured data?
Structured data is a block of labelled facts about a page, written in a shared vocabulary so any parser can read it the same way. The vocabulary is almost always Schema.org. The labels say what kind of thing the page describes (BlogPosting, Product, Course) and fill in its properties (headline, author, price).
A recipe page is Google’s own example: structured data spells out the ingredients, the cooking time and temperature, the calories, so a machine does not have to guess which number is which.
The three formats
| Format | Where it lives | Notes |
|---|---|---|
| JSON-LD | A <script type="application/ld+json"> block | Google’s recommended format. Not interleaved with visible text, so nesting is easy |
| Microdata | Attributes on the HTML elements themselves | Supported, harder to maintain on templated sites |
| RDFa | Attributes on HTML elements | Supported, more common in linked-data projects |
Google’s documentation describes JSON-LD as not interleaved with the user-visible text, which is why it is the practical default. The same page is explicit that Google also can read JSON-LD data when it is dynamically injected into the page’s contents by JavaScript. Nobody else in this article documents that, which matters later.
The rule that applies everywhere
Structured data must describe what is on the page. Google’s intro says not to add structured data about information that is not visible to the user, even if the information is accurate. Its AI features guide repeats the point as a best practice: make sure your structured data matches the visible text on the page.
That one rule is the most useful thing to carry into AI search. Markup that says something the page does not is a liability on every surface.
What structured data does in Google Search in 2026
In classic Google Search, structured data makes a page eligible for rich results: review stars, product prices, breadcrumbs, event dates. It is not a ranking factor, and whether rich snippets are worth the work type by type is covered in do rich snippets help SEO.
The list of rich results has been shrinking. Google removed the How-to structured data documentation on 14 September 2023, after the feature stopped showing. It removed the sitelinks search box documentation on 29 November 2024 because the feature was no longer available in Google Search results.
Then FAQ went. Google stopped showing FAQ rich results from 7 May 2026, posted the deprecation notice on 8 May, removed the documentation on 15 June 2026 and dropped Rich Results Test support in June 2026. This is distinct from the August 2023 restriction, which limited FAQ rich results to government and health sites rather than removing them. Search Console API support for the FAQ enhancement report ends August 2026.
None of this makes the markup invalid. When Google restricted FAQ results in 2023 it said there’s no need to proactively remove it, because unused structured data does not cause problems. What is left of FAQPage’s value is covered in FAQ schema after the rich result.
What each AI engine actually reads
This is the gap in most guides on the topic: they assert that “AI systems” use schema for citation decisions without saying which system, or where it says so. Here is what each vendor documents, read from their own pages in September 2026.
| Engine | What the vendor documents about structured data | What you control |
|---|---|---|
| Google AI Overviews and AI Mode | Not required; no special markup; keep it matching visible text | Googlebot access, indexing, snippet controls |
| ChatGPT search | Nothing for articles; shopping uses structured product metadata and feeds | OAI-SearchBot access, product feeds |
| Perplexity | Nothing | PerplexityBot access |
| Claude | Nothing; its fetch tool returns page text | Claude-SearchBot and Claude-User access |
| Microsoft Copilot and Bing | Schema helps its LLMs understand content (on record, 2025) | Bingbot access, IndexNow |
Google: AI Overviews and AI Mode
Google is the only engine with a direct statement, and it is a deflationary one. Its guide to generative AI features lists “overfocusing on structured data” under things you can ignore: Structured data isn’t required for generative AI search, and there’s no special schema.org markup you need to add. The same line adds that it is still a good idea to keep using it for rich result eligibility.
The eligibility bar for AI features is the ordinary one. To appear as a supporting link, a page must be indexed and eligible to be shown in Google Search with a snippet, and Google says there are no additional technical requirements.
Two practical points follow. First, Google’s AI features are grounded in its core ranking systems, so the structured data that helps your page in classic Search helps here in the same indirect way. Second, for products and local businesses, Google points to Merchant Center feeds and Google Business Profiles rather than page markup. How AI Overviews choose their sources is covered in what are AI Overviews.
ChatGPT
OpenAI’s publisher guidance is about access, not markup. To have content included in summaries and snippets in ChatGPT, you must not block OAI-SearchBot. Sites that opt out of that crawler will not be shown in ChatGPT search answers, though they can still appear as navigational links.
Neither the publisher FAQ nor the crawler documentation mentions Schema.org or JSON-LD. For agents browsing in ChatGPT Atlas, OpenAI’s advice is accessibility markup: Atlas uses ARIA tags to interpret page structure and interactive elements.
Shopping is the one place OpenAI names structured data. When choosing products, ChatGPT considers structured metadata from first-party and third-party providers (e.g., price, product description). The preferred channel is a product feed. OpenAI’s merchant page answers “Do I need a product feed if ChatGPT already crawls my site?” with No, but feeds give you greater control over how products appear. As of September 2026 that page also says shopping is live for users in the US.
So for an ecommerce site, accurate Product markup is useful, and a feed is better. For an article, the documented levers are crawler access and the text itself. The rest of the ChatGPT picture is in how to get cited by ChatGPT.
Perplexity
Perplexity’s site-owner documentation is a crawler page. PerplexityBot is designed to surface and link websites in search results on Perplexity and is not used to train foundation models. Perplexity-User fetches pages when a user asks a question, and because the user requested the fetch, it generally ignores robots.txt rules.
The page says nothing about structured data. The rest covers WAF allow-listing for Cloudflare and AWS. Any claim that Perplexity weights a particular schema type is inference, not documentation. What does move Perplexity citations is covered in how to get cited by Perplexity.
Claude
Anthropic runs three bots. ClaudeBot collects training data, Claude-User fetches pages when a person asks Claude a question, and Claude-SearchBot navigates the web to improve search result quality for users. Blocking Claude-SearchBot may reduce your site’s visibility and accuracy in user search results.
None of that mentions structured data. The closest thing to a statement about what Claude reads is the developer documentation for its web fetch tool, which says the API retrieves the full text content from the specified URL. The example response in the same documentation delivers the page as a text/plain document.
The documentation does not say whether a JSON-LD block survives that conversion, so do not assume either way. The test below shows why it might not. For the rest of the Claude picture, see how to get cited by Claude.
Microsoft Copilot and Bing
Microsoft is the one vendor on record in favour. In March 2025 Search Engine Roundtable reported that Fabrice Canel, Principal Product Manager at Microsoft Bing, said at SMX Munich that schema markup helps Microsoft’s LLMs understand your content. The source is a LinkedIn post by an attendee, which Canel acknowledged, not a Microsoft document.
A Microsoft Advertising post by a Bing product manager is more concrete. It describes schema as code that can label your content as a product, review, FAQ, or event, and its checklist says to use schema alongside clear headings and modular layouts. The same post is careful to say there is no secret strategy for being selected by AI systems. Copilot specifics are in how to get cited by Microsoft Copilot.
A test: what happens to JSON-LD when a page becomes text
Most AI answer pipelines do not hand a model raw HTML. They extract the readable text first. So the practical question is whether a JSON-LD block survives the extraction step.
I tested this locally in September 2026 on a built page from this site, AI crawler log analysis, chosen because its prose never mentions schema. Its HTML (69,636 bytes) carries one JSON-LD block in the <head>, an @graph of 21 typed nodes including BlogPosting, Person, Organization, BreadcrumbList and FAQPage. I ran it through five common open-source extraction pipelines and counted markers that exist only in the JSON-LD (@context, @type, datePublished, BreadcrumbList).
| Pipeline (version) | Output characters | @type occurrences left | JSON-LD survived? |
|---|---|---|---|
| trafilatura 2.2.0, Markdown output | 19,418 | 0 | No |
| html2text 2025.4.15 | 24,653 | 0 | No |
BeautifulSoup 4.15.0 get_text() | 21,776 | 0 | No |
| Mozilla Readability 0.6.0, then Turndown 7.2.4 | 21,856 | 0 | No |
| Turndown 7.2.4 on the whole page | 38,921 | 21 | Yes, as raw text |
Four of five pipelines threw the structured data away. The one that kept it did so only because it converted everything, navigation and all, into a much longer document.
This does not tell you what Google, OpenAI, Perplexity or Anthropic run in production. None of them publish their extraction pipelines, and Google documents that it reads structured data directly. What it shows is that “the model reads my schema” is not a safe default for any engine that works from extracted text.
The practical rule: treat JSON-LD as a label for parsers that look for it, and put every fact you want quoted in the visible text as well. The author’s name, the publication date, the price, the answer to the question. If it only exists in the <script> block, assume an answer engine may never see it.
The schema types worth shipping, and where each is covered
With that framing, the priority list is short. These are the types that describe who wrote a page, who published it, what it is and where it sits, plus the commerce and education types where a vendor documents a use. The Google column is read from Google’s list of supported structured data features, which no longer includes FAQ or How-to.
| Type | Google Search status (September 2026) | Why it matters beyond Google | Full guide |
|---|---|---|---|
Article / BlogPosting | Helps Google show better title text, images and dates | Declares author and dates in one place | Article schema |
Person | No rich result of its own; feeds the Article author properties and ProfilePage | The machine-readable half of the author signal | E-E-A-T and author entity signals |
Organization | Logo and company details for knowledge panels | Ties the publisher to its other profiles via sameAs | Organization schema |
BreadcrumbList | Breadcrumb rich result still supported | Describes position in the site hierarchy | Breadcrumb schema |
Product / Offer | Price, availability and review ratings in results | ChatGPT shopping uses structured product metadata | Schema markup examples |
Course | Course list rich result | Describes provider, format and price for course queries | Course schema |
FAQPage | Rich result retired in 2026 | Valid markup for real Q&A sections; no documented AI use | FAQ schema |
For copy-paste JSON-LD for these and several more types, see schema markup examples. The mechanics of writing and testing any block are in how to create rich snippets with JSON-LD.
HowTo is missing on purpose. Its rich result has been gone since 2023 and no AI vendor documents a use for it.
Connect the types into one graph
Separate blocks work, but one @graph with @id references says the relationships outright: this article was written by this person, who works for this organisation, which published it. This site emits a single @graph in the <head> of every article for that reason.
A minimal version for a blog post:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "Example Ltd",
"url": "https://example.com/",
"logo": "https://example.com/assets/logo.png",
"sameAs": ["https://www.linkedin.com/company/example-ltd"]
},
{
"@type": "Person",
"@id": "https://example.com/#jane",
"name": "Jane Smith",
"url": "https://example.com/about/jane-smith/",
"jobTitle": "Head of Technical SEO",
"worksFor": { "@id": "https://example.com/#org" },
"sameAs": ["https://www.linkedin.com/in/jane-smith-example"]
},
{
"@type": "BlogPosting",
"@id": "https://example.com/blog/structured-data/#article",
"headline": "Structured Data for AI Search",
"datePublished": "2026-03-12T09:00:00+00:00",
"dateModified": "2026-10-08T09:00:00+01:00",
"image": "https://example.com/assets/blog/structured-data/cover.webp",
"author": { "@id": "https://example.com/#jane" },
"publisher": { "@id": "https://example.com/#org" },
"mainEntityOfPage": "https://example.com/blog/structured-data/",
"breadcrumb": { "@id": "https://example.com/blog/structured-data/#breadcrumb" }
},
{
"@type": "BreadcrumbList",
"@id": "https://example.com/blog/structured-data/#breadcrumb",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Blog", "item": "https://example.com/blog/" },
{ "@type": "ListItem", "position": 2, "name": "Structured Data for AI Search" }
]
}
]
}
</script>
Three details in that block do real work. author points at a Person node rather than a plain string, so the name, profile URL and sameAs links travel together. name holds only the name, since Google’s Article guidance says not to put the author’s job title in author.name; it belongs in jobTitle. The dates carry timezone offsets, because without them Google says it will default to the timezone used by Googlebot.
Keep the visible page in step with it. The byline shows “Jane Smith”, the H1 matches headline, and the visible “updated” date matches dateModified. That is the part an answer engine will certainly read.
Implementation: render, validate, maintain
Render it on the server
Google can read JSON-LD injected by JavaScript. No other engine in this article says it can, and the test above shows how easily even server-rendered JSON-LD gets dropped. Put the block in the HTML your server returns, not in a client-side useEffect or a tag manager. The rendering side is covered in JavaScript SEO, and you can confirm what AI crawlers actually request with AI crawler log analysis.
JSON-LD sits alongside other machine-readable files some sites publish, such as an llms.txt file. Google’s AI guide is blunt that Google Search itself does not use such files, so treat both as optional extras for other consumers.
Validate every change
Test markup in the Rich Results Test for Google features and the Schema Markup Validator for general Schema.org validity. The Rich Results Test only checks types Google supports, which is why a valid FAQPage block no longer shows up there.
After deployment, Search Console’s rich result reports catch template breakage across the site. Google recommends watching them because markup might break after deployment due to templating or serving issues.
/assets/screenshots/rich-results-test.png Maintain it on three triggers
Every meaningful content revision. Move dateModified, and the visible updated date, when the substance changes. A typo fix does not qualify; a new section or corrected figure does.
A quarterly coverage check. New templates ship without markup, sameAs URLs change and logos move. A schema sweep fits naturally into a recurring technical SEO audit checklist.
Any template or CMS change. Migrations and theme updates break @id references, breadcrumb paths and image URLs silently. Re-validate a sample of each template after every release that touches the <head>.
Common mistakes
Markup that contradicts the page. A headline that differs from the H1, an author in the schema who is not in the byline, or a dateModified newer than any visible change. Google’s guidelines rule this out, and it misleads every other parser too.
Facts that live only in the JSON-LD. An author credential, a price or a date that appears in the markup but not on the page. Google says not to do it, and extraction pipelines may drop it before a model sees it.
Client-side injection. Schema added after hydration or through a tag manager reaches Google and possibly no one else.
Markup for retired features. Adding HowTo or FAQPage to win a Google rich result that no longer exists. Keep FAQPage where a real FAQ exists; do not create FAQs to justify it.
Plain-string authors. "author": "Jane Smith" is valid, but a Person node with url and sameAs gives parsers something to match against other sources.
Measuring whether it matters
No report isolates the effect of schema on AI answers, so measure the outcomes and change one thing at a time.
- Google: use the Generative AI performance report in Search Console to see how pages perform in Google’s AI features.
- ChatGPT: OpenAI adds utm_source=chatgpt.com to referral URLs, so the traffic is visible in analytics. The full GA4 set-up is in how to track AI referral traffic.
- Everyone: run your priority prompts in each engine monthly and log which pages are cited, before and after a change. The AEO Article Analyzer scores a page against the on-page factors that make a passage easy to cite.
If you want this done across a whole site, including server-rendered schema, validation in CI and crawler access for every engine above, that is part of the technical SEO and GEO service.
Frequently asked questions
What is structured data in simple terms?
Structured data is code that labels the content of a web page so machines can read it without guessing. It usually uses the Schema.org vocabulary in a JSON-LD script block, and says things like “this is an article”, “this is the author” and “this is the price”. Google uses it to understand pages and to show rich results.
Do AI search engines use structured data?
It depends on the engine. Google says structured data is not required for its AI features and there is no special markup to add. Microsoft has said schema helps its LLMs understand content. OpenAI uses structured product metadata for ChatGPT shopping, while OpenAI, Perplexity and Anthropic publish no guidance on schema for ordinary pages.
Is structured data a ranking factor for AI Overviews?
Google does not describe it as one. Its documentation says pages only need to be indexed and eligible to show with a snippet, with no additional technical requirements for AI Overviews or AI Mode. Structured data still helps Google understand the page and qualify for rich results, which is the reason Google gives for keeping it.
Which schema types matter most for AI search visibility?
Start with Article or BlogPosting, Person for authors, Organization for the publisher and BreadcrumbList, connected in one graph. Add Product if you sell online, since ChatGPT shopping uses structured product data, and Course if you sell courses. Put every important fact in the visible text as well.
Should I remove FAQ schema now that Google retired the rich result?
There is no need to remove accurate FAQPage markup from a page that has a real FAQ section. Google has said unused structured data causes no problems. Do not add it to pages just to chase a rich result, because that rich result no longer appears.
Does JSON-LD need to be in the page head?
Google reads JSON-LD in either the <head> or the <body>, and can even read it when JavaScript injects it. For other crawlers, the safe choice is to include it in the server-rendered HTML, and the <head> is the conventional place. What matters more is that it is in the initial HTML response, not added later by a script.