How to Add Schema Markup for AI Search
Schema markup is a block of JSON-LD code you paste into your page. Start with Organization on your homepage, Article on every post, and Breadcrumb everywhere. But know this first: Google says no special schema is needed for its AI answers, and the best controlled studies found no citation lift. Add it for clarity, not for magic.
How to add schema markup for AI search: copy-paste JSON-LD for Organization, Article and Breadcrumb, and what the controlled studies say it does for citations.
On this page
What schema markup actually is
A human reads "Founded 2019" and knows that means the year the company started. A machine sees three characters and a space.
Schema markup fixes that. It is a small block of code that says, in a format every machine agrees on, "this thing is a company, its name is this, the year it started is this." The format is called JSON-LD. The shared dictionary of words you may use is called schema.org.
You paste it into the head of your page inside a script tag. That is the whole job. It does not change how your page looks, and nobody visiting will ever see it.
Two rules before you write a line. Only describe what is actually on the page: if your markup claims a 4.6 star rating and the page shows no ratings, that is a problem, not a shortcut. And one block per thing. Do not stuff five unrelated types into one script and hope.
Step one: Organization on your homepage
This is the block that says who you are. It is the one I would add first if I could only add one.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Co",
"alternateName": "Example",
"url": "https://example.com/",
"logo": "https://example.com/logo.png",
"description": "Example Co builds scheduling software for dental clinics.",
"foundingDate": "2019-03-01",
"email": "hello@example.com",
"telephone": "+1-555-010-1234",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 Market Street",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"sameAs": [
"https://www.linkedin.com/company/example-co",
"https://www.crunchbase.com/organization/example-co",
"https://github.com/example-co"
]
}
</script>
Swap in your own details and delete any line you cannot fill honestly. Google lists no required properties here, so a short true block beats a long invented one.
The part people skip is sameAs. It lists other places on the web that are definitely you. If your brand name is a common word, or another company shares it, this is the line that tells a machine which one you are. The @id matters too, because other blocks can point at it instead of repeating you.
Step two: Article on every post
Your blog posts get a different type. Google recommends seven properties for Article and requires none of them.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Add Schema Markup for AI Search",
"datePublished": "2026-09-19T09:00:00-05:00",
"dateModified": "2026-09-19T09:00:00-05:00",
"image": ["https://example.com/images/schema-guide.jpg"],
"author": {
"@type": "Person",
"name": "Jane Ruiz",
"url": "https://example.com/about/jane-ruiz"
},
"publisher": { "@id": "https://example.com/#organization" },
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/blog/schema-for-ai-search"
}
}
</script>
Note that publisher just points back at the @id from your homepage block. Give author a real person with a real page about them. A byline that links nowhere is a byline a machine cannot check.
Keep dateModified accurate. Update it when you edit the post, and leave it alone when you do not. Bumping the date on a page you never touched gets noticed eventually.
Step three: breadcrumbs, which take two minutes
Breadcrumbs tell a machine where a page sits in your site. itemListElement is required, and each ListItem needs position and name.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Blog",
"item": "https://example.com/blog" },
{ "@type": "ListItem", "position": 2, "name": "Technical SEO",
"item": "https://example.com/blog/technical-seo" },
{ "@type": "ListItem", "position": 3, "name": "How to Add Schema Markup" }
]
}
</script>
The last item has no item URL. That is on purpose. Google uses the current page.
How to write FAQ schema, and the bad news
Here is the code, because you came for it and it is still valid schema.org:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does schema markup take to work?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Your page has to be recrawled first, which usually takes days to weeks."
}
},
{
"@type": "Question",
"name": "Can I mark up questions that are not on the page?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Only mark up questions and answers a visitor can read on that page."
}
}
]
}
</script>
Now the bad news, and it is recent. Google stopped showing FAQ rich results in Search on 7 May 2026. Its own words: "FAQ rich results are no longer appearing in Google Search. We will be dropping the FAQ search appearance, rich result report, and support in the Rich results test in June 2026." FAQ and HowTo are both gone from Google's structured data gallery now.
So if you were adding FAQPage for the dropdown arrows in search results, stop. Those are not coming back. The type still validates, and Google says keeping or removing it will not hurt you. That is a strange place to leave things, and anyone selling you FAQ schema as a win in 2026 owes you an explanation.
Does schema markup for AI search actually help?
The answer is contested, and most guides pretend it is not.
Google's position is plain. Its guide on optimizing for generative AI features, last updated 10 July 2026, says structured data "isn't required for generative AI search, and there's no special schema.org markup you need to add." It tells you to keep using schema anyway, for normal rich results. OpenAI's publisher documentation does not mention schema at all. Neither does Perplexity's. Microsoft goes the other way: Fabrice Canel said at SMX Munich in March 2025 that Bing and Copilot do use schema for their LLMs, but published no data with it.
The studies split the same way, and the split tracks method, not opinion.
Ahrefs, which sells SEO software, tracked 1,885 pages that added JSON-LD between August 2025 and March 2026 against roughly 4,000 matched control pages, using a difference-in-differences design over 30 days. AI Overviews citations fell 4.6 percent. AI Mode rose 2.4 percent and ChatGPT rose 2.2 percent, both indistinguishable from noise. The same data showed cited pages were nearly three times more likely to have JSON-LD, which mostly tells you those pages are better resourced.
Kurt Fischman, who runs a GEO firm, studied 730 AI citations across 75 commercial queries on ChatGPT and Gemini in February 2026. His first pass made schema look harmful. Once he clustered by query properly, schema came out null. Rank swamped everything: position one pages were cited on 43 percent of relevant queries, position seven on 5 percent.
Daniel Cheung reviewed ten studies in July 2026 and landed here: "Every study that found schema helps is missing the controls. Every study with controls found nothing, or a small negative."
The studies claiming a lift are real studies, and they conflict with the above. Relixir, a GEO vendor, found pages with FAQ schema cited 41 percent of the time against 15 percent without, across 50 domains. But it compared different pages rather than the same pages before and after, and did not control for rank. WordLift, a schema vendor, ran a proper experiment in March 2026 and found HTML with JSON-LD scored 3.89 on accuracy against 3.62 for plain HTML. Their own paper calls that effect size "negligible."
The most useful test I found was the cheapest. In May 2026 Mark Williams-Cook published a page with deliberately broken markup: a fake @context, an invented type called MallardEnterprise, made-up properties like quackVolume, and an address that appeared only inside the JSON-LD. ChatGPT and Perplexity both read the address back to him. They were not parsing structured data. They were reading it as oddly punctuated text.
Our technical checklist for AI citation calls schema entity clarity rather than a citation hack. This is why.
The one place the evidence points somewhere
Fischman found a real exception. Product or Review schema with concrete values filled in, actual prices, real aggregateRating, specifications, was cited at 61.7 percent against 41.6 percent for generic markup, and that gap held up statistically.
Read that carefully. The win is not the type. It is the facts inside it. Price, rating, spec, date. Empty scaffolding does nothing.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example Co Starter Plan",
"sku": "EXC-START-01",
"brand": { "@type": "Brand", "name": "Example Co" },
"offers": {
"@type": "Offer",
"price": "49.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/pricing"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "128"
}
}
</script>
Only publish a rating you can prove. Only publish a price that matches the page.
What to do this week
Add Organization to your homepage today. Add Article to your post template. Add Breadcrumb sitewide. Fill in real prices and ratings wherever you sell something. Check each block at validator.schema.org for vocabulary errors and in Google's Rich Results Test for eligibility, then read your page source and confirm it renders.
Two hours of work. Do it because a machine that cannot tell who you are cannot recommend you, not because you expect a citation graph to bend. If schema for ai search is the biggest item on your list, your list is wrong, and an audit will tell you what belongs on it instead.
Sources
- Google Search Central, Optimizing your website for generative AI features on Google Search, last updated 10 July 2026 (developers.google.com/search/docs/fundamentals/ai-optimization-guide)
- Google Search Central, Structured data markup that Google Search supports (search gallery), read 19 September 2026: FAQ and HowTo no longer listed
- Google Search Central, Article structured data and Organization structured data documentation, read 19 September 2026
- Google Search Central, Breadcrumb structured data documentation, read 19 September 2026
- Matt G. Southern, Search Engine Journal, 10 May 2026, Google Drops FAQ Rich Results From Search, carrying Google's statement on the 7 May 2026 removal
- Louise Linehan and Xibeijia Guan, Ahrefs, 11 May 2026, study of 1,885 pages adding JSON-LD against roughly 4,000 matched controls, difference-in-differences. Vendor-funded: Ahrefs sells SEO software
- Kurt Fischman, Does Schema Markup Predict AI Citation? A Cross-Platform Empirical Study, 22 February 2026, 730 citations across 75 commercial queries on ChatGPT and Gemini. Vendor-funded: the author runs a GEO firm
- Daniel Cheung, evidence review of ten schema and AI citation studies, 6 July 2026
- Mark Williams-Cook, Schema, LLMs and the Low Bar for Evidence in GEO, 28 May 2026, invalid-markup test on ChatGPT and Perplexity
- Andrea Volpini, Elie Raad, Beatrice Gamba and David Riccitelli, Structured Linked Data as a Memory Layer for Agent-Orchestrated Retrieval, arXiv 2603.10700, 11 March 2026. Vendor-funded: all four authors are at WordLift, which sells schema tooling
- Relixir FAQ schema figures, 50 domains, reported June 2026. Vendor-funded, correlational, no rank control
- Fabrice Canel, Microsoft, SMX Munich, reported by Search Engine Land 20 March 2025
- OpenAI Help Center, Publishers and Developers FAQ, read 19 September 2026
- Aimee Jurenka, RicketyRoo, Search Engine Land, 25 March 2026, How schema markup fits into AI search without the hype
- Gianluca Fiorelli, 11 May 2026, commentary arguing the Ahrefs study tested the wrong scope
- schema.org vocabulary pages for FAQPage, Question, Answer, Organization, Article, BreadcrumbList and Product, read 19 September 2026
Frequently asked
Does schema markup help me get cited by ChatGPT?
No study with proper controls has shown that it does. The controlled work found either nothing or a small negative, while the studies showing a lift compared different pages and did not account for ranking. OpenAI's own publisher documentation never mentions schema. Add it for other reasons.
Is FAQ schema still worth adding in 2026?
Not for search appearance. Google stopped showing FAQ rich results on 7 May 2026 and removed the feature from its documentation. The type still validates, and Google says keeping or removing it makes no difference to visibility. If someone tells you FAQ schema gets you into AI answers, ask them for the controlled study.
Where exactly do I paste the JSON-LD?
Inside a script tag with `type="application/ld+json"` in the head of the page. The body works too. What matters is that it appears in the rendered HTML. If your site builds pages with JavaScript, view the rendered source and confirm the block is really there.
How do I know if my schema markup is broken?
Run the page through validator.schema.org, which checks it against the schema.org vocabulary, and through Google's Rich Results Test, which checks whether it qualifies for a specific search feature. Those are two different questions. Passing one does not mean passing the other.
Should I use a plugin or write it by hand?
Either is fine. Plugins are faster and tend to produce bloated output full of properties you cannot verify. Write it by hand and you understand every line, which matters on the day one of them turns out to be wrong.
Written by

Lourdes Paul Agilan runs GeoCited, a generative engine optimization agency. He works with B2B companies on how AI assistants describe and recommend them. He writes about that work here, and shares the experiments behind it. The tests that worked, and the tests that did not, written up the same way.