Skip to main content

Schema Markup for AI Search

Schema markup is structured data that tells AI systems what information means. It's one of the most important signals for AI visibility because it makes your content machine-readable.

What is schema markup

Schema markup is code you add to your website that describes your content in a way machines can understand.

Without schema markup:

<h1>Root Canal Procedure</h1>
<p>A root canal is a dental procedure...</p>

An AI system sees text but doesn't know what it means.

With schema markup:

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": {
"@type": "Question",
"name": "What is a root canal?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A root canal is a dental procedure..."
}
}
}
</script>

Now an AI system understands that this is a FAQ page with a question and answer.

Why schema markup matters for AI

AI systems use schema markup to:

  1. Understand your content: What is this page about?
  2. Extract information: What are the key facts?
  3. Verify your identity: Are you a real business?
  4. Rank your content: Should this page be cited?

Pages with schema markup are more likely to be cited by AI systems because the AI can easily understand and extract information.

Essential schema types for local businesses

1. LocalBusiness schema

LocalBusiness schema tells AI systems about your business.

Where to use: Homepage, service pages, contact page.

What to include:

  • Business name
  • Address
  • Phone number
  • Website URL
  • Service area
  • Business hours
  • Social media profiles

Example:

{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "ABC Plumbing",
"image": "https://example.com/logo.png",
"description": "24/7 emergency plumbing services in Charlotte",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "Charlotte",
"addressRegion": "NC",
"postalCode": "28202",
"addressCountry": "US"
},
"telephone": "(704) 555-1234",
"url": "https://example.com",
"areaServed": "Charlotte, NC",
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
"opens": "00:00",
"closes": "23:59"
},
"sameAs": [
"https://www.facebook.com/abcplumbing",
"https://www.yelp.com/biz/abc-plumbing"
]
}

2. FAQPage schema

FAQPage schema tells AI systems that your page contains Q&A content.

Where to use: Any page with FAQ content.

What to include:

  • Questions
  • Answers

Example:

{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does emergency plumbing cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Emergency calls start at $150. The final cost depends on the issue and repair needed."
}
},
{
"@type": "Question",
"name": "Do you work on weekends?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, we're available 24/7, including weekends and holidays."
}
}
]
}

3. Speakable schema

Speakable schema tells AI systems which content is suitable for voice/AI extraction.

Where to use: Key answers and important content.

What to include:

  • CSS selectors or XPath to the content

Example:

{
"@context": "https://schema.org",
"@type": "WebPage",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".answer-1", ".answer-2", ".answer-3"]
}
}

4. BreadcrumbList schema

BreadcrumbList schema tells AI systems about your site structure.

Where to use: All pages except homepage.

What to include:

  • Breadcrumb path
  • URLs for each level

Example:

{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Services",
"item": "https://example.com/services"
},
{
"@type": "ListItem",
"position": 3,
"name": "Plumbing",
"item": "https://example.com/services/plumbing"
}
]
}

How to implement schema markup

JSON-LD is the easiest and most recommended way to add schema markup.

  1. Add a <script> tag in the <head> of your page.
  2. Set type="application/ld+json".
  3. Add your schema as JSON.
<head>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "ABC Plumbing",
...
}
</script>
</head>

Option 2: Microdata

Microdata adds attributes to your HTML.

<div itemscope itemtype="https://schema.org/LocalBusiness">
<h1 itemprop="name">ABC Plumbing</h1>
<p itemprop="description">24/7 emergency plumbing services</p>
<p itemprop="telephone">(704) 555-1234</p>
</div>

Option 3: RDFa

RDFa adds attributes to your HTML (less common).

<div vocab="https://schema.org/" typeof="LocalBusiness">
<h1 property="name">ABC Plumbing</h1>
<p property="description">24/7 emergency plumbing services</p>
</div>

Recommendation: Use JSON-LD. It's easier to implement and doesn't require changing your HTML structure.

Testing your schema markup

After implementing schema markup, test it:

  1. Google Rich Results Test: https://search.google.com/test/rich-results
  2. Schema.org Validator: https://validator.schema.org/
  3. Bing Webmaster Tools: https://www.bing.com/webmasters/

These tools will show you if your schema is valid and how it will appear in search results.

Schema markup checklist

Homepage:

  • LocalBusiness schema with name, address, phone, website
  • BreadcrumbList schema
  • Speakable schema for key content

Service pages:

  • LocalBusiness schema with service area
  • FAQPage schema if you have Q&A content
  • Speakable schema for key answers
  • BreadcrumbList schema

FAQ pages:

  • FAQPage schema with all questions and answers
  • Speakable schema for answers
  • BreadcrumbList schema

Neighborhood pages:

  • LocalBusiness schema with neighborhood service area
  • FAQPage schema if you have Q&A content
  • BreadcrumbList schema

Common schema mistakes

MistakeProblemSolution
Invalid JSONSchema won't workValidate with Google Rich Results Test
Missing required fieldsAI systems can't understandInclude name, address, phone for LocalBusiness
Duplicate schemaConfuses AI systemsUse one schema per page
Outdated informationAI systems cite wrong infoKeep schema in sync with your website
Wrong schema typeAI systems misunderstandUse LocalBusiness for businesses, FAQPage for Q&A
tip

Start with LocalBusiness schema on your homepage and service pages. Add FAQPage schema to pages with Q&A content. These two schema types will have the biggest impact on your AI visibility.

See also

Docs by Docsio