Schema markup for AI search: which types help, with JSON-LD examples.
Schema markup for AI search is structured data, usually JSON-LD, that tells a crawler what a page is, who published it and who wrote it. It helps Google, Bing, ChatGPT, Claude and Perplexity read a page correctly. It does not get a page cited. Google's own May 2026 guide says structured data isn't required for generative AI search and there is no special markup to add. Here are the types worth having, the JSON-LD to copy, and the limits.

Does schema markup help with AI search?
Schema markup helps AI search engines understand a page, but it does not get the page cited on its own. Google's May 2026 guide says structured data isn't required for generative AI search and there's no special schema.org markup to add. The types worth having are Organization, WebSite, Article with a named author, BreadcrumbList, and Product or LocalBusiness where they fit. Render them in the server HTML, because the ChatGPT, Claude and Perplexity crawlers in Vercel's 2024 test did not run JavaScript, and keep every field matching the visible text.
Schema labels your pages, but AI answers quote the text. The SEO Agent writes and publishes one answer-first, source-checked article for your site every day. Enter your site to start.
Free trial · Cancel in one click- 01What schema markup does for AI search.
- 02Structured data for AI search: what each engine has said.
- 03The schema types that help AI engines understand a page.
- 04JSON-LD examples you can copy.
- 05What schema markup does not do.
- 06How to add schema markup for AI search, step by step.
- 07A worked example: one blog post, before and after.
- 08Common mistakes.
1. What schema markup does for AI search.
Schema markup is a shared vocabulary, published at schema.org, for labeling what is on a page in a form machines can read without guessing. Written as JSON-LD inside a script tag, it says things like: this page is an Article, its author is this Person, its publisher is this Organization, and that Organization is the same one behind these LinkedIn and YouTube profiles. Readers never see it. Crawlers do, if it is in the HTML they fetch.
For search, Google is explicit about the job. Its introduction to structured data says it uses the markup it finds to understand the content of the page and to gather information about the web and the world in general. That second part is the one that matters for AI answers. Markup that states your brand is one specific Organization, with one logo, one site and a set of profiles you control, leaves a system less room to confuse you with a namesake or credit your page to someone else. Bing has gone further than Google here: at SMX Munich in March 2025, Bing's Fabrice Canel said schema markup helps Microsoft's LLMs understand content.
So the job is clarity, not persuasion. Schema tells a machine what a page is. It does not make the page worth quoting. The quoting is done on the visible text, which is why our AI search optimization work starts with the pages and treats markup as the label on them. If you are still sorting out the vocabulary of this field, our explainer on what SEO for AI is called untangles GEO, AEO and LLMO first.

2. Structured data for AI search: what each engine has said.
Most advice on this topic treats “AI search” as one system. It is at least five, run by different companies with different crawlers, and only two of them have said anything public about schema. Here is what is on the record as of October 2026.
| AI surface | Crawler that fetches your page | What its operator says about schema |
|---|---|---|
| Google AI Overviews and AI Mode | Googlebot (renders JavaScript) | Structured data is not required and no special markup exists. Keep using it for rich results, and keep it matching the visible text. |
| Microsoft Copilot and Bing | Bingbot | Bing's Fabrice Canel said in March 2025 that schema markup helps Microsoft's LLMs understand content. |
| ChatGPT search | OAI-SearchBot, ChatGPT-User (GPTBot for training) | Nothing published on schema. Crawler docs cover access only. |
| Claude | Claude-SearchBot, Claude-User (ClaudeBot for training) | Nothing published on schema. Crawler docs cover robots.txt only. |
| Perplexity | PerplexityBot, Perplexity-User | Nothing published on schema. Crawler docs cover access only. |
Google's position is the most detailed. Its guide Optimizing your website for generative AI features on Google Search, published in May 2026 and updated in July, says: “Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add.” It then recommends you keep using structured data as part of your SEO, because it helps pages qualify for rich results. Google's separate AI features page lists one schema rule under its best practices: make sure your structured data matches the visible text on the page. The rest of what decides an AI Overview citation is covered in our guide to how Google picks AI Overview sources, and the same index feeds AI Mode.
The crawler column matters more than the policy column. In December 2024, Vercel and MERJ analyzed AI crawler traffic across Vercel's network and found that none of the major AI crawlers rendered JavaScript: OAI-SearchBot, ChatGPT-User and GPTBot, ClaudeBot, PerplexityBot, Meta-ExternalAgent and Bytespider all read the raw HTML only. Googlebot renders pages, and the same study notes Gemini uses Googlebot's infrastructure. The consequence for schema is blunt: JSON-LD that a tag manager or a client-side script inserts after load exists for Google and did not exist for any of the ChatGPT, Claude or Perplexity crawlers in that test. The ClaudeBot guide covers each of those bots and the robots.txt rules that let them in.
For the three assistants with nothing on record, assume they read your page the way a person skimming the raw HTML would. JSON-LD in the source is text they may pick up, but what they quote is a passage that answers the question. That is the lever our guides on how to rank in ChatGPT and Perplexity SEO spend most of their time on.
3. The schema types that help AI engines understand a page.
The useful schema for AI is not exotic. It is the set that answers three questions any system has to settle before it can attribute a passage: who runs this site, what is this page, and who wrote it. Google's search gallery, last updated in June 2026, lists 25 structured data features. The table below covers the ones that apply to most sites, with the properties that carry the meaning and whether Google still shows a rich result for them.
| Type | Put it on | Properties that carry meaning | Google rich result, Oct 2026 |
|---|---|---|---|
| Organization | Homepage or about page | name, url, logo, sameAs, description | Yes: logo and organization details |
| WebSite | Homepage | name, alternateName, url | Yes: site name in results |
| Article / BlogPosting | Every post | headline, author, datePublished, dateModified, image, publisher | Yes: article title, image and date |
| Person / ProfilePage | Author pages | name, url, jobTitle, sameAs | Yes: profile page |
| BreadcrumbList | Every page below the homepage | itemListElement (name, item) | Yes: breadcrumb trail |
| Product + Offer | Product pages | name, image, brand, offers (price, priceCurrency, availability) | Yes: product snippets, merchant listings |
| LocalBusiness | Location pages | name, address, telephone, openingHoursSpecification | Yes: local business details |
| SoftwareApplication | App and SaaS product pages | name, applicationCategory, operatingSystem, offers | Yes: software app |
| FAQPage | Visible question and answer sections | mainEntity (Question, acceptedAnswer) | No: retired May 7, 2026 |
| HowTo | Step-by-step pages | step (HowToStep) | No: dropped in 2023 |
Start with the four every site needs. Organization, with a logo and a sameAs list of the profiles you control, pins down the entity. WebSite sets the site name. Article or BlogPosting with a real author, linked to a Person on an author page, tells a system who stands behind each claim and when it was last changed. BreadcrumbList shows where the page sits in the site. Most WordPress SEO plugins already output a basic version of these four, so on WordPress the job is usually filling in the gaps (author pages, sameAs, a real logo) rather than starting over.
Then add the one type that matches what you sell. Stores need Product with an Offer carrying price, currency and availability, the core of any ecommerce SEO setup. Businesses with a street address need LocalBusiness on each location page, a basic step in small business SEO. Software companies can add SoftwareApplication to product pages. Schema.org also defines about and mentions on any CreativeWork for naming the topics a page covers. Google uses neither for a rich result, so treat them as optional extras, not a priority.
4. JSON-LD examples you can copy.
Google supports three formats (JSON-LD, Microdata and RDFa) and recommends JSON-LD when your setup allows it. It lives in one script block, separate from the page layout, so a template can generate it and a person can review it. The three examples below use a fictional company, Northwind Rota, on the reserved northwindrota.example domain. Swap in your own names and URLs. The sameAs links are placeholders.
Organization and WebSite, in the site-wide layout.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://northwindrota.example/#org",
"name": "Northwind Rota",
"url": "https://northwindrota.example/",
"logo": "https://northwindrota.example/logo-512.png",
"description": "Shift scheduling software for 24/7 teams.",
"sameAs": [
"https://www.linkedin.com/company/northwind-rota-example",
"https://www.youtube.com/@northwind-rota-example"
]
},
{
"@type": "WebSite",
"@id": "https://northwindrota.example/#website",
"name": "Northwind Rota",
"url": "https://northwindrota.example/",
"publisher": { "@id": "https://northwindrota.example/#org" }
}
]
}
</script>The two nodes sit in one @graph and get a stable @id each. That @id is a URL used as a name, not a page anyone visits, and it is what lets every other block on the site point at the same Organization instead of describing it again with slightly different details. List only profiles you control in sameAs. If your company has a Wikipedia or Wikidata entry, add it there too.
BlogPosting with a named author, on every post.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"@id": "https://northwindrota.example/blog/fair-rota-24-7#article",
"headline": "How to build a fair rota for a 24/7 team",
"datePublished": "2026-09-02",
"dateModified": "2026-10-06",
"image": "https://northwindrota.example/img/fair-rota-24-7.webp",
"author": {
"@type": "Person",
"@id": "https://northwindrota.example/team/priya-shah#person",
"name": "Priya Shah",
"url": "https://northwindrota.example/team/priya-shah",
"jobTitle": "Head of Workforce Research"
},
"publisher": { "@id": "https://northwindrota.example/#org" },
"mainEntityOfPage": "https://northwindrota.example/blog/fair-rota-24-7"
}
</script>The author is a Person with a name and a url pointing to a real author page, and the publisher is a reference to the Organization's @id, not a copy of it. Google's byline date guidance asks that datePublished and dateModified describe when the page itself was published and last changed, so wire dateModified to real edits, not to the build time.

Product with an Offer, on product pages.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Northwind Rota Wall Planner",
"image": "https://northwindrota.example/img/wall-planner.webp",
"description": "Magnetic 12-week shift planner, 90 x 60 cm.",
"brand": { "@type": "Brand", "name": "Northwind Rota" },
"offers": {
"@type": "Offer",
"price": "49.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://northwindrota.example/shop/wall-planner"
}
}
</script>Price, currency and availability must match what the page shows, and they go stale fastest, so generate them from the same data the page uses. Add review or aggregateRating only if real reviews are visible on the page. Marking up ratings the reader cannot see is exactly what Google's structured data rules forbid.
5. What schema markup does not do.
Schema gets oversold as an AI visibility switch, so the limits deserve the same space as the instructions. Every point below comes from the search engines' own documentation or from the absence of any.
- It does not get you cited. Google says structured data isn't required for its AI features. ChatGPT, Claude and Perplexity have published no rule that rewards it. A thin page with perfect markup is still a thin page.
- There is no AI schema. No schema.org type exists for AI search, and Google says there is no special markup to add. An “AI schema” plugin outputs the same standard types under a new label. The same goes for files: Google Search ignores llms.txt, as our llms.txt guide explains.
- It does not rank a page. Google describes structured data as a way to understand content and to qualify for rich results, and does not guarantee the rich result even when the markup is valid. Its own guidelines say a structured data manual action removes rich result eligibility but does not affect how the page ranks in web search.
- FAQ and HowTo no longer earn anything on Google. Google limited FAQ rich results to government and health sites in August 2023 and stopped showing them entirely on May 7, 2026. HowTo rich results went in 2023. Both types remain valid and harmless. They just do nothing visible.
- It cannot describe what is not there. Google's rules are direct: don't mark up content that is not visible to readers, and the markup must be a true representation of the page. Markup that contradicts the page can cost you rich results, and an assistant reading the text will see the contradiction anyway.
- It cannot reach a crawler that never sees it. If the JSON-LD only appears after JavaScript runs, any crawler that reads raw HTML, like the ChatGPT, Claude and Perplexity bots in Vercel's test, gets a page without it.

Put plainly, schema is the frame and the page is the picture. The work that moves AI citations is the work our answer engine optimization guide describes: answer-first sections, sourced numbers and a page for every question your buyers ask. The research behind generative engine optimization measured gains from statistics, quotations and cited sources in the visible text, not from markup.
6. How to add schema markup for AI search, step by step.
This is template work, not page-by-page work. Done once per page type, it covers every page that shares the template. It also slots straight into a technical SEO audit checklist, next to crawl access and indexing.
- List your page types. Group URLs by template: homepage, about, blog post, author page, product, location, app. Ten templates usually cover a whole site.
- Pick one primary type per template. Use the table in section 3. One clear type per page beats five vague ones stacked on top of each other.
- Connect the nodes with @id. One Organization @id, one @id per author, referenced from every Article. This is what turns scattered blocks into one description of one entity.
- Render it on the server. Output the script block from the page template or framework, not from a tag manager. If your site is a client-rendered app, this step decides whether non-Google crawlers see anything at all.
- Match it to the visible text. Every name, price, date, question and answer in the markup appears on the page. Delete whatever does not.
- Validate. Run Google's Rich Results Test for the features Google supports and the Schema Markup Validator for everything else. Fix errors and missing required properties, since items missing them are not eligible for rich results.
- Check the raw HTML, then keep checking. Fetch the page with curl, which never runs JavaScript, and look for the application/ld+json block. Repeat after every template release and watch the enhancement reports in Search Console.
Markup changes are hard to tie to AI citations directly, because nobody publishes which signal moved a given answer. Measure the outcome instead: a fixed list of prompts checked monthly, or one of the AI visibility tools that run them for you. If you are building the broader program around it, the LLM SEO page lays out the rest of the work.
A worked example: one blog post, before and after.
Northwind Rota is a fictional shift-scheduling SaaS on the reserved northwindrota.example domain. The post, the audit and the fix below are invented to show the method. Its marketing lead wanted the company's guide to fair rotas for 24/7 teams cited when people ask ChatGPT and Perplexity how to schedule night shifts, and asked whether schema was the problem. A schema audit of that one post found five issues.
AUDIT · /blog/fair-rota-24-7 · NORTHWIND ROTA (FICTIONAL)
01 JSON-LD added by a tag manager after load.
$ curl -s https://northwindrota.example/blog/fair-rota-24-7 \
| grep -c "application/ld+json"
0
02 BlogPosting author is "admin". No author page.
03 No Organization node. No logo, no sameAs.
04 FAQPage lists 6 questions. The page shows 3.
05 dateModified changes every night. The post last changed 6 Oct.Issue 01 meant that any crawler reading raw HTML, which is what Vercel saw the ChatGPT, Claude and Perplexity bots do, had never received any markup from this site. Issues 02 and 03 meant that even Google, which did render it, got no usable author or publisher. Issue 04 broke Google's rule on marking up content readers cannot see, and issue 05 broke its byline date guidance. The fix moved the markup into the page template and rebuilt it as one connected graph.
AFTER · ONE SERVER-RENDERED @graph
Organization #org name, logo, sameAs (LinkedIn, YouTube)
WebSite #website publisher -> #org
BlogPosting #article author -> #priya, publisher -> #org
dateModified = last real edit (2026-10-06)
Person #priya name, jobTitle, url -> /team/priya-shah
BreadcrumbList Home > Blog > Fair rota for 24/7 teams
FAQPage the 3 questions visible on the page
$ curl -s https://northwindrota.example/blog/fair-rota-24-7 \
| grep -c "application/ld+json"
1The whole fix took an afternoon, and every post on the blog inherited it because it lives in the template. It did not make the post more quotable. The audit's second finding was the bigger one. The guide answered its main question in its fourth paragraph, cited no source for its overtime figures, and the blog had no pages at all for the follow-up questions buyers ask, such as how to rotate weekend shifts or how many staff a 24/7 rota needs. The markup now describes the site accurately. The site still needed about forty more pages worth describing.
Common mistakes with schema markup for AI.
- Injecting JSON-LD with a tag manager. It is the quickest way to ship markup without a developer, which is why it is so common. Googlebot renders it. The ChatGPT, Claude and Perplexity crawlers in Vercel's test did not. Render it in the server HTML instead.
- Marking up what the page does not show. Extra FAQ answers, ratings from another site and prices from last quarter creep in because markup is invisible and nobody reviews it. Google's rules forbid it. Generate markup from the same data the page renders.
- Buying an AI schema product. The label sells because it sounds new. The output is the standard types you could add for free, and Google says no special markup exists for its AI features.
- Expecting FAQ markup to win a SERP feature. Old tutorials still recommend it. FAQ rich results stopped showing on May 7, 2026. Keep the visible questions and answers, because those are what an assistant can quote.
- Leaving the author as admin. CMS defaults fill the author field with a username. Point it at a real Person with an author page, so a system can tell who stands behind each claim.
- Faking freshness with dateModified. A plugin that rewrites the date on every build makes a stale page look new. Google asks that the date describe when the page actually changed. Update the date when you update the content.
Get the markup right once, then spend the time on the pages.
Schema markup for AI search comes down to four standard types done properly, one type for what you sell, everything rendered on the server and matching the page, and no special AI markup, because none exists. It helps machines understand you. It does not make them quote you. The text does that.
Writing that text every day is what we built our AI SEO agent to do. The SEO Agent runs it as fixed stages:
- Real keyword data. Live monthly search volume and difficulty behind every article it plans, checked against the pages you already have so it does not write a duplicate.
- Answer-first, source-checked drafts. Every claim is checked against its sources, and unsupported sentences are softened or cut.
- A hold on real errors. An article with a fact problem it could not fix waits for your review.
- Native publishing, daily. Into WordPress, Webflow, Shopify, Wix, Ghost or Framer, or anywhere else through a webhook. One article a day, up to 30 a month.
It costs a flat $99 a month after a free trial, you cancel in one click from inside the app, and why we built it is a short read.
Does schema markup help with AI search?
It helps machines understand a page, but it does not get a page cited on its own. Google's May 2026 guide to generative AI features says structured data isn't required for generative AI search and there is no special schema.org markup to add, while recommending you keep using it for rich results. Bing has said schema helps its language models understand content. ChatGPT, Claude and Perplexity have published nothing either way. The text on the page is what AI answers quote.
Is there a special AI schema I should add?
No. There is no AI schema type in schema.org, and Google states plainly that there is no special schema.org markup you need for its AI features. Plugins and services sold as AI schema output the same types every site already uses, such as Organization, Article and FAQPage. Spend the effort on correct versions of the standard types and on the visible content they describe.
Which schema types matter most for AI search?
Organization and WebSite on the homepage, Article or BlogPosting with a named author on every post, a Person or ProfilePage for each author, and BreadcrumbList across the site. Add Product with Offer on product pages, LocalBusiness on location pages and SoftwareApplication on app pages where they fit. These describe who you are, what the page is and who wrote it, which is the information an AI system needs to attribute a passage correctly.
Does ChatGPT read schema markup?
OpenAI has not said. Its crawler documentation describes OAI-SearchBot, GPTBot and ChatGPT-User and covers access, not markup. JSON-LD sits in the HTML its crawler fetches, so it may be read as text, but no published rule rewards it. In Vercel's December 2024 test, OpenAI's crawlers did not run JavaScript, so markup injected by a script after the page loads would not reach them at all.
Does Google use structured data for AI Overviews?
Google says structured data helps it understand the content of a page, and AI Overviews and AI Mode draw on the same index as regular search. But its May 2026 guide also says structured data isn't required for generative AI search and no special markup is needed. Its AI features page asks that structured data match the visible text on the page. Treat schema as clarity for the index, not as a ticket into AI Overviews.
Is FAQ schema still worth adding in 2026?
Not for a rich result. Google stopped showing FAQ rich results on May 7, 2026, after limiting them to government and health sites in August 2023. FAQPage is still a valid schema.org type and leaving it in place causes no penalty. What matters for AI answers is the visible question and answer text on the page, which assistants can quote with or without the markup.
Should I use JSON-LD or Microdata?
JSON-LD. Google supports JSON-LD, Microdata and RDFa, and recommends JSON-LD if your site's setup allows it. JSON-LD lives in one script block, so it is easier to generate from a template, review and keep in sync with the page. Whichever format you use, render it in the server HTML rather than adding it with client-side JavaScript.
Can AI crawlers see schema added with Google Tag Manager?
Often not. A tag manager adds JSON-LD with JavaScript after the page loads. Googlebot renders JavaScript, but in Vercel's December 2024 test the crawlers it checked for ChatGPT, Claude and Perplexity did not, so they only saw the raw HTML. Check with curl, which never runs JavaScript: if the application/ld+json block is not in the raw response, those crawlers do not get it either.
One researched, source-checked page a day for your schema to describe.
The SEO Agent picks keywords from live search volume and difficulty, puts the answer first, checks every claim against its sources, softens or cuts what they do not back, and publishes natively to WordPress, Webflow, Shopify, Wix, Ghost or Framer. $99 a month after a free trial. Cancel in one click.
FREE TRIAL · CANCEL IN ONE CLICK