Schema Markup for AEO: 12 JSON-LD Snippets for 2026

Why Schema Markup Is the Backbone of AEO

Schema markup (JSON-LD structured data) is the explicit contract between your website and AI extraction systems. Without it, AI systems must infer what your content is, who wrote it, and what type of answer it contains. With correct schema, they know with certainty — which directly increases citation rates in Google AI Overviews, Bing Copilot, and Perplexity. All 12 snippets below should be placed in your page's <head> section inside a <script type="application/ld+json"> tag.

Validate every snippet at search.google.com/test/rich-results before going live. Replace all placeholder values in brackets with your actual data.

Snippet 1: FAQPage Schema

Why it matters for AEO: FAQPage schema is the single highest-impact structured data type for AI Overview inclusion. It explicitly marks question-answer pairs so AI systems can extract individual Q&As without needing to parse surrounding content. Add this to every service page, how-to article, and comparison post that includes a FAQ section.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is [your specific question here]?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Your complete, specific answer here — at least 40 words, written in plain language, directly addressing the question without hedging."
      }
    },
    {
      "@type": "Question",
      "name": "How does [second question]?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Your second answer here."
      }
    }
  ]
}
</script>

Snippet 2: HowTo Schema

Why it matters for AEO: HowTo schema marks up step-by-step processes so AI systems can extract individual steps in response to "how do I..." queries. Google AI Overviews frequently display numbered step lists from pages with HowTo schema, even when the overall page isn't ranking #1. Include estimatedCost and totalTime when accurate — they improve Rich Result eligibility.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to [Your Process Title]",
  "description": "A concise description of what this process achieves.",
  "totalTime": "PT30M",
  "estimatedCost": {
    "@type": "MonetaryAmount",
    "currency": "INR",
    "value": "0"
  },
  "step": [
    {
      "@type": "HowToStep",
      "position": 1,
      "name": "Step 1 Name",
      "text": "Detailed instruction for step 1. Be specific — vague instructions reduce AI extraction confidence.",
      "url": "https://yoursite.com/page#step-1"
    },
    {
      "@type": "HowToStep",
      "position": 2,
      "name": "Step 2 Name",
      "text": "Detailed instruction for step 2.",
      "url": "https://yoursite.com/page#step-2"
    }
  ]
}
</script>

Snippet 3: Article / BlogPosting Schema

Why it matters for AEO: Article schema declares editorial identity — who wrote the content, when, and on what authority. AI systems use datePublished and dateModified to assess freshness, and they use the author entity to evaluate E-E-A-T. Missing or incorrect dates cause AI systems to treat content as potentially stale, reducing extraction rates for time-sensitive topics.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Your Article Headline Here (Under 110 Characters)",
  "description": "Your meta description — a complete sentence summarising the article.",
  "datePublished": "2026-01-15T09:00:00+05:30",
  "dateModified": "2026-01-22T09:00:00+05:30",
  "author": {
    "@type": "Person",
    "name": "Your Full Name",
    "url": "https://yoursite.com/about"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Your Business Name",
    "url": "https://yoursite.com",
    "logo": {
      "@type": "ImageObject",
      "url": "https://yoursite.com/logo.png",
      "width": 512,
      "height": 512
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://yoursite.com/your-article-url/"
  },
  "image": {
    "@type": "ImageObject",
    "url": "https://yoursite.com/images/article-image.jpg",
    "width": 1200,
    "height": 630
  },
  "articleSection": "Your Section Name",
  "keywords": ["keyword1", "keyword2", "keyword3"]
}
</script>

Snippet 4: SpeakableSpecification Schema

Why it matters for AEO: SpeakableSpecification explicitly identifies which sections of your page contain the best text for voice assistant and AI answer extraction. Without it, AI systems must guess which passage best answers a query. With it, you point them directly to your strongest, most extractable content. Use the cssSelector property to target specific CSS classes or IDs that mark your answer-first paragraphs.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": "Your Page Title",
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".article-intro",
      ".direct-answer-block",
      "h2",
      "h3"
    ]
  },
  "url": "https://yoursite.com/your-page-url/"
}
</script>

Snippet 5: LocalBusiness Schema

Why it matters for AEO: LocalBusiness schema feeds Google's Knowledge Graph entry for your business and influences how AI systems describe you in location-based queries ("IT consultants in Trivandrum," "digital marketing agency near me"). Use the most specific @type possible — ITConsultant, ProfessionalService, MarketingAgency — rather than the generic LocalBusiness type. Include geo coordinates for maximum Knowledge Graph accuracy.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ProfessionalService",
  "name": "Your Business Name",
  "url": "https://yoursite.com",
  "logo": "https://yoursite.com/logo.png",
  "image": "https://yoursite.com/images/office.jpg",
  "telephone": "+91-XXXXXXXXXX",
  "email": "contact@yoursite.com",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Your Street Address",
    "addressLocality": "Thiruvananthapuram",
    "addressRegion": "Kerala",
    "postalCode": "695001",
    "addressCountry": "IN"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 8.5241,
    "longitude": 76.9366
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "09:00",
      "closes": "18:00"
    }
  ],
  "priceRange": "₹₹",
  "areaServed": ["Kerala", "Tamil Nadu", "Karnataka"],
  "sameAs": [
    "https://www.linkedin.com/in/yourprofile",
    "https://twitter.com/yourhandle"
  ]
}
</script>

Snippet 6: BreadcrumbList Schema

Why it matters for AEO: BreadcrumbList schema provides AI systems with hierarchical context — where this page sits in your site's content architecture. This helps AI systems understand the topical relationship between your pages and contributes to topical authority signals. It also enables breadcrumb Rich Results in Google SERPs, which increases organic CTR by an average of 15–20% for pages that have them.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://yoursite.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog",
      "item": "https://yoursite.com/blog/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Your Current Page Title",
      "item": "https://yoursite.com/blog/your-article/"
    }
  ]
}
</script>

Snippet 7: Product Schema

Why it matters for AEO: Product schema is underused by service businesses. If you offer productised services with fixed pricing — a monthly SEO audit package, a website development package — Product schema enables review stars, price display, and availability signals in SERPs. AI systems use Product schema to extract specifications when answering comparison queries like "which agency offers the best SEO package in Kerala."

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Your Service Package Name",
  "description": "Specific description of what this package includes.",
  "brand": {
    "@type": "Brand",
    "name": "Your Business Name"
  },
  "offers": {
    "@type": "Offer",
    "priceCurrency": "INR",
    "price": "15000",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "url": "https://yoursite.com/services/your-service/"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "47",
    "bestRating": "5",
    "worstRating": "1"
  }
}
</script>

Snippet 8: Review Schema

Why it matters for AEO: Review schema provides social proof signals that AI systems use when synthesising comparative answers. When someone asks ChatGPT or Perplexity "is [business] reliable," AI systems with access to web content will surface pages with structured review data. Individual Review schema (for a specific client testimonial page) increases the probability of that testimonial being cited in AI-generated trust assessments. Always use real, verifiable reviews — fabricated ratings violate Google's structured data guidelines and can trigger manual actions.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Review",
  "itemReviewed": {
    "@type": "ProfessionalService",
    "name": "Your Business Name",
    "url": "https://yoursite.com"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "5",
    "bestRating": "5"
  },
  "name": "Short Review Title",
  "author": {
    "@type": "Person",
    "name": "Client Name"
  },
  "reviewBody": "The full text of the genuine client review. The more specific and detailed, the more useful it is for AI citation purposes.",
  "datePublished": "2025-11-10"
}
</script>

Snippet 9: Event Schema

Why it matters for AEO: Event schema is critical for any business running webinars, workshops, training sessions, or in-person events. AI systems increasingly answer "upcoming events in [city]" queries by extracting Event schema data from indexed pages. Event schema also enables Rich Results with date, location, and ticket availability displayed directly in SERPs — significantly increasing CTR for event pages. Ensure eventStatus and eventAttendanceMode are set correctly, as Google validates these and incorrect values prevent Rich Result eligibility.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Your Event Name",
  "description": "Detailed description of what attendees will learn or experience.",
  "startDate": "2026-03-15T10:00:00+05:30",
  "endDate": "2026-03-15T13:00:00+05:30",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type": "VirtualLocation",
    "url": "https://yoursite.com/events/your-event/"
  },
  "organizer": {
    "@type": "Person",
    "name": "Your Name",
    "url": "https://yoursite.com"
  },
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "INR",
    "availability": "https://schema.org/InStock",
    "url": "https://yoursite.com/events/register/"
  }
}
</script>

Snippet 10: VideoObject Schema

Why it matters for AEO: VideoObject schema makes your video content extractable by AI systems and eligible for video Rich Results in Google SERPs. If you publish tutorial, explainer, or testimonial videos on your site or via YouTube, VideoObject schema helps AI systems answer "how to" queries by pointing to your video content. Include the thumbnailUrl property — without it, Google cannot generate video thumbnails in Rich Results, reducing the eligibility of the markup.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Your Video Title",
  "description": "Detailed description of what the video covers — at least 150 characters for maximum Rich Result eligibility.",
  "thumbnailUrl": "https://yoursite.com/images/video-thumbnail.jpg",
  "uploadDate": "2026-01-10T09:00:00+05:30",
  "duration": "PT8M30S",
  "contentUrl": "https://yoursite.com/videos/your-video.mp4",
  "embedUrl": "https://www.youtube.com/embed/YOUR_VIDEO_ID",
  "publisher": {
    "@type": "Organization",
    "name": "Your Business Name",
    "logo": {
      "@type": "ImageObject",
      "url": "https://yoursite.com/logo.png"
    }
  }
}
</script>

Snippet 11: Course Schema

Why it matters for AEO: If you offer training, certification programmes, or online courses, Course schema enables dedicated Rich Results that appear for education-related queries. AI systems use Course schema to answer queries like "best digital marketing courses in Kerala" or "online SEO training for Indian businesses." The hasCourseInstance property is particularly important — it provides the schedule and format details that AI systems need to make authoritative recommendations about course suitability.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Your Course Name",
  "description": "Comprehensive description of course content, learning outcomes, and who it is designed for.",
  "provider": {
    "@type": "Person",
    "name": "Your Name",
    "url": "https://yoursite.com"
  },
  "hasCourseInstance": {
    "@type": "CourseInstance",
    "courseMode": "online",
    "duration": "P4W",
    "startDate": "2026-02-01",
    "endDate": "2026-02-28",
    "offers": {
      "@type": "Offer",
      "price": "4999",
      "priceCurrency": "INR",
      "availability": "https://schema.org/InStock",
      "url": "https://yoursite.com/courses/enroll/"
    }
  },
  "educationalLevel": "Intermediate",
  "inLanguage": "en-IN"
}
</script>

Snippet 12: Service Schema

Why it matters for AEO: Service schema is the correct type for professional services that aren't productised with fixed pricing. It allows you to describe your service offering with provider information, service type, and area served — all signals that AI systems use when answering recommendation queries. Service schema is separate from LocalBusiness schema and should be added to individual service pages in addition to the LocalBusiness schema on your homepage.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Your Service Name",
  "description": "Specific description of what the service delivers and who it is for — avoid generic marketing language.",
  "provider": {
    "@type": "Person",
    "name": "Your Name",
    "url": "https://yoursite.com"
  },
  "serviceType": "Digital Marketing",
  "areaServed": {
    "@type": "State",
    "name": "Kerala"
  },
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Service Packages",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Basic Package"
        }
      }
    ]
  }
}
</script>

Validating and Monitoring Your Schema Implementation

After implementing any of the above snippets, validation is non-negotiable. Broken JSON syntax or missing required properties silently prevent schema from working — Google does not display an error on your page, it simply ignores the markup.

Use this validation workflow:

  1. Rich Results Test (search.google.com/test/rich-results): Paste your page URL or the raw JSON-LD code. The tool shows which Rich Result types you're eligible for, lists any errors (which prevent eligibility), and highlights warnings (which reduce eligibility). Fix all errors before deployment; address warnings as a secondary priority.
  2. Schema.org Validator (validator.schema.org): For more detailed technical validation, including deprecated property warnings and property type mismatches that the Rich Results Test doesn't flag.
  3. Google Search Console Enhancements: After Google re-crawls your pages (typically one to two weeks after deployment), the Enhancements section of Search Console shows page-level validation status for each schema type. Check this monthly and address any new errors promptly — Google's schema requirements occasionally update, and previously valid markup can become invalid after algorithm changes.

For Indian businesses using WordPress, the Rank Math SEO plugin (free version) generates Article, FAQ, HowTo, LocalBusiness, and BreadcrumbList schema automatically for pages where you configure it — significantly reducing manual implementation effort. Its schema output is generally Rich Results Test-compliant, but always verify after configuring, as plugin-generated schema can conflict with manually added schema blocks.

Frequently Asked Questions

Where exactly in the HTML should JSON-LD schema be placed?

JSON-LD schema should be placed inside a script tag with type="application/ld+json" in the page's head section, between the opening and closing head tags. Placing it in the head (rather than the body) ensures it is parsed before the page renders, giving crawlers immediate access to the structured data without waiting for body content to load. Multiple schema types can be added as separate script blocks in the head — there is no penalty for having multiple JSON-LD blocks on a single page, and it is preferable to merging all types into one block, which increases the risk of JSON syntax errors breaking the entire schema.

How do I validate that my JSON-LD schema is working correctly?

Use Google's Rich Results Test at search.google.com/test/rich-results as the primary validation tool. Enter your page URL or paste your JSON-LD code directly and the tool will identify any syntax errors, missing required properties, and recommended properties you haven't included. Additionally, check Google Search Console's Enhancements section (under the relevant schema type) after implementation — it typically shows validation results within one to two weeks of Google re-crawling your page. Schema.org's own validator at validator.schema.org provides more detailed technical validation including warnings about deprecated properties.

Can I use multiple schema types on the same page?

Yes, and for most pages you should. A blog post about a how-to process should have Article schema (for editorial identity), HowTo schema (for the step-by-step process), FAQPage schema (for the FAQ section), and BreadcrumbList schema (for navigation context) — all as separate JSON-LD script blocks in the head. Google processes each schema block independently, so an error in one block doesn't invalidate the others. The combination of multiple schema types on a single page signals comprehensive, well-structured content and increases the range of Rich Result types your page is eligible for.

Does schema markup directly improve Google rankings?

Schema markup is not a direct ranking factor — Google has confirmed this. Its value is indirect but significant: it enables Rich Results (FAQ accordions, HowTo steps, review stars in SERPs) which measurably improve click-through rate, it helps Google AI Overviews identify and extract your content accurately, and it provides explicit E-E-A-T signals through author, publisher, and date properties that Google uses in quality assessment. For AEO purposes specifically, the impact is direct: pages with FAQPage and HowTo schema are included in AI Overviews at substantially higher rates than equivalent pages without schema, because the markup tells the AI system exactly what type of answer each section contains.