Technical · how-to

Schema markup for AI search: the 5 types that actually matter.

Most guides list 25 schema types and leave you paralysed. Five of them move the needle for AI search citation. Here's what to add, what to skip, and the JSON-LD you can copy.

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.

The two-minute schema audit Paste your URL into Google's Rich Results Test. If you see Organization, BreadcrumbList and at least one of FAQPage/Product/Service detected — you're in the top quartile of sites for AI readability. If nothing is detected, this article describes your highest-impact fix.

Common mistakes

What to do next

  1. Audit your current schema with Google's Rich Results Test.
  2. Add the five types above, in the order listed.
  3. Re-test until everything is green.
  4. 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