AI Strategy
Schema Markup for AI Search: A JSON-LD Guide With Copy-Ready Examples
Updated Muhammad Taha7 min read
Schema markup is code, usually JSON-LD, that tells search engines and AI systems what a page is about: who the business is, what the service is, who wrote the article. It does not guarantee rich results or citations, but it removes guesswork. Add Organization, Service, Article, Person and BreadcrumbList first, and keep it matching visible text.
Key takeaways
- JSON-LD is the format Google recommends. It sits in one script tag, separate from your visible HTML.
- Only mark up what a visitor can see on the page. Hidden or false markup can lead to penalties.
- Priority types for a service business: Organization, WebSite, Service, Article, Person, BreadcrumbList, FAQPage.
- Use
@idandsameAsto link your pages and profiles into one clear entity. - Validate every change with the Schema Markup Validator and Google's Rich Results Test.
What schema does and does not do
| It can | It cannot |
|---|---|
| Help machines identify your business, people and services | Make a weak page rank or get cited |
| Enable some rich results where Google supports them | Force AI assistants to mention you |
| Keep your facts consistent across many pages | Replace clear writing |
| Make audits and debugging easier | Fix a site that cannot be crawled |
Which types to add, in order
- Organization (or
LocalBusinessif you serve a location) on your home or About page. - WebSite on the home page.
- Person for the founder or authors, linked from articles.
- Service on each service page.
- Article or
BlogPostingon blog posts. - BreadcrumbList on any page with a hierarchy.
- FAQPage where a page has a real question-and-answer section.
Example 1: Organization with a stable ID
The @id is a permanent label that other markup can point to. The sameAs list ties the business to its official profiles.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "Example Co",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"description": "Example Co builds custom accounting software for dental clinics.",
"foundingDate": "2019",
"sameAs": [
"https://www.linkedin.com/company/example-co",
"https://www.facebook.com/exampleco"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "sales",
"email": "hello@example.com"
}
}
Example 2: Service
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Clinic accounting software setup",
"serviceType": "Software implementation",
"provider": { "@id": "https://www.example.com/#organization" },
"areaServed": { "@type": "Country", "name": "Pakistan" },
"description": "We set up and customise accounting software for dental clinics, including data migration and staff training."
}
Example 3: Article with an author
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How much does clinic software cost?",
"datePublished": "2026-10-01",
"dateModified": "2026-10-10",
"author": {
"@type": "Person",
"name": "Ayesha Khan",
"url": "https://www.example.com/about#ayesha-khan"
},
"publisher": { "@id": "https://www.example.com/#organization" },
"mainEntityOfPage": "https://www.example.com/blog/clinic-software-cost"
}
Example 4: FAQPage
Each question and answer must appear on the page in visible text. Keep answers short and factual.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does setup take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Most clinics are live within two to three weeks, depending on how much data needs to be moved."
}
}
]
}
Example 5: BreadcrumbList
Breadcrumbs describe where a page sits in your site. Each item needs a position, a name and a URL.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.example.com/blog" },
{ "@type": "ListItem", "position": 3, "name": "How much does clinic software cost?", "item": "https://www.example.com/blog/clinic-software-cost" }
]
}
Joining everything into one graph
Separate blocks work, but a single @graph with shared @id values shows how the pieces connect: the article points to its author and publisher by ID rather than repeating their details.
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://www.example.com/#organization", "name": "Example Co", "url": "https://www.example.com" },
{ "@type": "Person", "@id": "https://www.example.com/about#ayesha-khan", "name": "Ayesha Khan", "worksFor": { "@id": "https://www.example.com/#organization" } },
{ "@type": "BlogPosting", "@id": "https://www.example.com/blog/clinic-software-cost#article",
"headline": "How much does clinic software cost?",
"author": { "@id": "https://www.example.com/about#ayesha-khan" },
"publisher": { "@id": "https://www.example.com/#organization" } }
]
}
How to add it to your site
- Next.js or custom code: render a
script type="application/ld+json"tag in the page and output the object as JSON. Escape the less-than character so a stray tag in text cannot break out of the script. - WordPress: a reputable SEO plugin can output Organization, Article and Breadcrumb data. Check the output, because defaults are often incomplete.
- Shopify and website builders: use the built-in options, then add custom JSON-LD in the theme where needed.
Mistakes that cause problems
- Marking up content that is not on the page. This is the one Google explicitly warns against.
- Fake reviews or ratings. Self-serving review markup for your own business is not eligible for rich results, and invented ratings can lead to a manual action.
- Copying markup from a competitor without changing every value, including the name and URLs.
- Different business names in different places. Use one exact name.
- Out-of-date facts. Review markup whenever your address, services or prices change.
- Expecting FAQ or HowTo rich results. Google restricted FAQ rich results to a small set of sites and retired HowTo rich results in 2023. The markup is still valid and still describes your content.
Validate and monitor
- Paste the URL into the Schema Markup Validator (validator.schema.org) for a general check.
- Use Google's Rich Results Test for eligible types.
- Open Search Console's Enhancements reports to see errors at scale.
- Re-test after every template change. A redesign is the most common time markup silently breaks.
Does schema matter for AI search specifically?
Be careful about overclaiming. Google's own documentation on AI features says there is no special structured data to add to appear in AI Overviews or AI Mode. Schema earns its place for other reasons: it supports rich results where Google offers them, it keeps facts consistent, and it removes ambiguity about who and what a page is describing for any machine that reads it. Treat it as hygiene, not as a lever.
How growmerz.com does it
Every page on this site loads one site-wide graph with an Organization, a founder Person and a WebSite, each with a stable @id. The Organization lists our services as an offer catalogue and links to our official profiles through sameAs. Each blog post then adds a BlogPosting that points to the founder and the Organization by ID, a BreadcrumbList, and a FAQPage built from the visible FAQ at the bottom of the post, so the markup always matches the text a reader sees. The JSON is escaped before it is written into the page so stray characters in article text cannot break out of the script tag.
A pre-launch schema checklist
- Every value in the markup is visible somewhere on the page.
- The business name, address and phone number are spelled exactly as on the About page.
- Each person or organisation has one
@idused everywhere. - Dates use ISO format and
dateModifiedchanges only when content changes. - No fake ratings, reviews or awards.
- The page passes the Schema Markup Validator and, where relevant, the Rich Results Test.
Related guides
- Entity SEO for AI: How Search and AI Decide Who Your Business Is
- How to Get Your Business Recommended by ChatGPT (What Actually Works)
- How to Run an AI Visibility Audit on Your Business (Free, 30 Minutes)
- Answer-First Writing: How to Structure Pages So AI Can Quote Them
- Service: AEO and GEO: Get Found by AI Search
Frequently asked questions
Does schema markup help AI assistants?
It helps machines parse your pages and entities, so it supports AI visibility. It is not a guarantee. Clear writing and independent mentions matter as much.
Is JSON-LD better than Microdata?
For most sites, yes. Google recommends JSON-LD because it is easier to add and maintain without touching the visible HTML.
How much schema is too much?
Add types that describe what is genuinely on the page. Dozens of unrelated types add noise and risk errors.
Do I need a developer?
Not always. SEO plugins cover the basics. For custom Service or Person markup, or for a framework like Next.js, a developer helps.
How long until schema changes show up?
After the page is recrawled. Request indexing in Search Console to speed it up. Effects on AI answers are slower and uncertain.
Should I use one big @graph or several script tags?
Either is valid. A single graph with shared IDs is easier to keep consistent, while separate blocks are easier to manage when different templates own different pieces.
Sources and further reading
Primary documentation and research behind this guide.
- Google Search Central: Introduction to structured data
- Schema.org: Getting started
- Google Search Central: Organization structured data
- Google Search Central: Article structured data
We write and validate schema as part of our AEO and GEO work, matched to the text on your pages. If you want a second pair of eyes on your markup, book a free audit.