Schema markup is the single highest-leverage technical fix for AI search visibility. It tells engines like ChatGPT, Claude and Gemini explicitly what your business is, what you sell, where you operate, and which questions you answer — instead of leaving them to infer it from your homepage copy.
Schema.org defines hundreds of types. You don't need most of them. For 95% of businesses, the five types below cover everything AI engines actually use when deciding who to cite. Skip the rest until you've got these working.
1. Organization (or LocalBusiness)
This is the foundation. It tells the AI what entity the website belongs to. Add it once, on every page (or at minimum the homepage), and it propagates across the rest of your structured data.
Use Organization if you're a national or online-only business. Use LocalBusiness (or one of its 30+ subtypes like HairSalon, Plumber, Restaurant) if you serve a specific physical location — it gives AI engines a clean signal for "near me" and location-shaped queries.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme Roofing Ltd",
"url": "https://acmeroofing.co.uk",
"logo": "https://acmeroofing.co.uk/logo.png",
"description": "Family-run pitched-roof specialists serving Leeds and Bradford since 1998.",
"founder": { "@type": "Person", "name": "Jane Smith" },
"telephone": "+44-113-555-0123",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Trade Park Way",
"addressLocality": "Leeds",
"postalCode": "LS1 4AB",
"addressCountry": "GB"
},
"sameAs": [
"https://facebook.com/acmeroofing",
"https://www.linkedin.com/company/acme-roofing"
]
}
</script>
Two things matter: the sameAs array (your social profile URLs — confirms the entity exists across the web) and the address block if applicable. Both are heavy AI authority signals.
2. FAQPage
If you have any page with questions and answers, mark it up as a FAQPage. This is the schema type AI engines quote most directly — partly because the question/answer structure mirrors how customers ask LLMs queries.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does a re-roof take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A typical pitched re-roof for a 3-bed semi takes 3–5 working days, weather permitting. Larger or steeper roofs can take 7–10."
}
},
{
"@type": "Question",
"name": "Do you provide free quotes?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes — free, no-obligation quotes within 48 hours for any address inside our Leeds/Bradford coverage area."
}
}
]
}
</script>
One quiet rule: the questions and answers in your schema must match what's visibly on the page. Hidden FAQs marked up only in schema get flagged as spam.
3. Product or Service
If you sell discrete products with prices, use Product. If you sell services without fixed prices, use Service. Both with as much detail as possible — name, description, area served, price range.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "Pitched roof installation",
"provider": { "@type": "LocalBusiness", "name": "Acme Roofing Ltd" },
"areaServed": "West Yorkshire",
"description": "Full-roof installation with 25-year material guarantee. Concrete and clay tiles, slate options available.",
"offers": {
"@type": "Offer",
"priceCurrency": "GBP",
"priceRange": "£4,500 – £15,000",
"availability": "https://schema.org/InStock"
}
}
</script>
Even without exact prices, priceRange is enough to let AI engines surface you for "how much does X cost" queries — a particularly high-intent category.
4. BreadcrumbList
Often overlooked but quietly important. BreadcrumbList tells the AI how a page sits inside your site hierarchy. It helps engines understand topical relationships and gives them a clean way to cite the right page (e.g. "Acme Roofing > Services > Slate Roofs" rather than just the homepage).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://acmeroofing.co.uk/" },
{ "@type": "ListItem", "position": 2, "name": "Services", "item": "https://acmeroofing.co.uk/services" },
{ "@type": "ListItem", "position": 3, "name": "Slate Roofs", "item": "https://acmeroofing.co.uk/services/slate-roofs" }
]
}
</script>
5. Review and AggregateRating — with one big warning
If you have real, verifiable customer reviews on your site (or pulled from Trustpilot, Google Business, etc.), marking them up with Review and AggregateRating is one of the strongest credibility signals AI engines respond to.
The warning: do not invent reviews. Adding schema for ratings or reviews that don't appear on the page is a textbook Google manual-action trigger and an instant AI-engine distrust signal. If you don't have real reviews, skip this until you do.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme Roofing Ltd",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5"
}
}
</script>
What about the other 20+ schema types?
Skip them until the five above are solid. Event, Recipe, Course, JobPosting and similar are useful if your business has that exact content type — otherwise they add complexity without payoff.
Common mistakes
- Duplicating schema across multiple plugins. WordPress sites often have Yoast, RankMath, schema-only plugins and a theme all injecting Organization at once. Pick one source of truth.
- JSON-LD vs Microdata vs RDFa. All three work, but JSON-LD is what Google and AI engines prefer. Use it exclusively unless you have a specific reason not to.
- Marking up things that aren't on the page. Schema must mirror visible content. Hidden review schema is spam.
- Forgetting to update schema when you redesign. If you rebuild the site and the old schema is now wrong, AI engines will surface stale, contradictory data about you. Audit after every redesign.
What to do next
- Audit your current schema with Google's Rich Results Test.
- Add the five types above, in the order listed.
- Re-test until everything is green.
- Wait 14–21 days for AI engines to re-crawl, then run an AI visibility check to see the impact.
Want us to check your schema for you?
Top Level App audits your structured data along with everything else AI engines look at — and tells you exactly which schemas are missing, broken or contradictory. In plain English.
See plans — from £49/mo
TOP LEVEL APP