All examples use JSON-LD (the only format Google recommends in 2026).
Place inside <script type="application/ld+json"> in <head> or
before </body>.
Google deprecated these in June 2025. Stop emitting them and remove existing instances. They no longer produce rich results.
ClaimReview (was a fact-check signal)CourseInfoEstimatedSalaryLearningVideoSpecialAnnouncementVehicleListingBook actions (ReadAction, BuyAction on Book)Pages cited 58% more often by ChatGPT vs basic Article schema. Use when the page is built around ONE primary question.
{
"@context": "https://schema.org",
"@type": "QAPage",
"mainEntity": {
"@type": "Question",
"name": "What is the best framework for a public website in 2026?",
"text": "Should I use React SPA, Next.js, or Astro for a public-facing website in 2026?",
"answerCount": 1,
"acceptedAnswer": {
"@type": "Answer",
"text": "For public-facing websites, Astro is the 2026 default because it ships static HTML by default, preserves SEO/GEO signals, and allows React/Vue/Svelte islands only where interactivity is needed. React SPAs are only appropriate for authenticated, non-indexed surfaces.",
"dateCreated": "2026-04-21",
"upvoteCount": 0,
"author": {
"@type": "Person",
"name": "Author Name",
"url": "https://example.com/about"
}
}
}
}
Only valid when the page visibly contains all listed questions and answers. Google will penalise pages with FAQ schema that doesn't match visible content.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does shipping take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Standard shipping takes 2 to 5 business days in France."
}
},
{
"@type": "Question",
"name": "Do you offer refunds?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes — refunds are available within 30 days of purchase."
}
}
]
}
62% of searches in 2026 involve voice. Speakable flags the passage best suited for voice readout and AI summary.
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Article headline",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".article-summary", ".tldr"]
}
}
Or via xpath for non-CSS-targetable content:
"speakable": {
"@type": "SpeakableSpecification",
"xpath": ["/html/head/title", "//div[@class='tldr']"]
}
The single most important pattern for non-local content. Couples content to a real author with verifiable credentials.
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Exact title of the article",
"description": "One-sentence summary matching meta description.",
"image": ["https://example.com/images/hero-1x1.jpg", "https://example.com/images/hero-4x3.jpg", "https://example.com/images/hero-16x9.jpg"],
"datePublished": "2026-04-15T09:00:00+02:00",
"dateModified": "2026-04-21T14:30:00+02:00",
"author": {
"@type": "Person",
"@id": "https://example.com/about#author-jane",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe",
"image": "https://example.com/images/jane-doe.jpg",
"jobTitle": "Senior Plumber",
"description": "Master plumber with 15 years of experience in Paris region.",
"knowsAbout": ["plumbing", "boiler repair", "leak detection"],
"alumniOf": "Lycée Professionnel Diderot",
"award": ["Qualibat RGE certification", "Artisan de l'année 2024 Essonne"],
"worksFor": {
"@type": "Organization",
"@id": "https://example.com/#org"
},
"sameAs": [
"https://www.linkedin.com/in/jane-doe-plomberie",
"https://twitter.com/janedoeplumbing",
"https://www.wikidata.org/wiki/Q123456789"
]
},
"publisher": {
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "Business Name",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/article-slug"
}
}
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to reset a Chaffoteaux Talia Green boiler",
"description": "Step-by-step reset procedure for the Talia Green combi boiler.",
"totalTime": "PT5M",
"estimatedCost": {"@type": "MonetaryAmount", "currency": "EUR", "value": "0"},
"tool": [{"@type": "HowToTool", "name": "None"}],
"step": [
{
"@type": "HowToStep",
"name": "Locate the reset button",
"text": "The reset button is on the front panel, marked with a flame icon.",
"url": "https://example.com/guides/reset#step1",
"image": "https://example.com/img/step1.jpg"
},
{
"@type": "HowToStep",
"name": "Press and hold for 3 seconds",
"text": "Press the reset button until the red light turns off.",
"url": "https://example.com/guides/reset#step2"
}
]
}
Gives AI the hierarchical position of the page. Nearly universal to add, low cost.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Accueil", "item": "https://example.com/"},
{"@type": "ListItem", "position": 2, "name": "Services", "item": "https://example.com/services"},
{"@type": "ListItem", "position": 3, "name": "Dépannage chaudière", "item": "https://example.com/services/depannage-chaudiere"}
]
}
Must be consistent with GMB. Any divergence is a NAP inconsistency.
{
"@context": "https://schema.org",
"@type": "Plumber",
"@id": "https://example.com/#business",
"name": "Plomberie Dupont",
"image": "https://example.com/img/shopfront.jpg",
"url": "https://example.com",
"telephone": "+33123456789",
"priceRange": "€€",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 rue des Lilas",
"addressLocality": "Évry-Courcouronnes",
"postalCode": "91000",
"addressRegion": "Île-de-France",
"addressCountry": "FR"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 48.62939,
"longitude": 2.44199
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}
],
"areaServed": [
{"@type": "City", "name": "Évry-Courcouronnes"},
{"@type": "City", "name": "Corbeil-Essonnes"},
{"@type": "AdministrativeArea", "name": "Essonne"}
],
"sameAs": [
"https://www.facebook.com/plomberiedupont",
"https://www.instagram.com/plomberiedupont",
"https://www.pagesjaunes.fr/pros/12345",
"https://www.wikidata.org/wiki/Q999999999"
]
}
Use the most specific subclass of LocalBusiness available (Plumber,
Dentist, Restaurant, AutoRepair, etc.) — list at
https://schema.org/LocalBusiness under "More specific Types".
Separate from LocalBusiness when brand > single location.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "Company Name",
"legalName": "Company Name SAS",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"foundingDate": "2015-03-01",
"founders": [{"@type": "Person", "name": "Founder Name"}],
"numberOfEmployees": {"@type": "QuantitativeValue", "value": "12"},
"vatID": "FR12345678901",
"iso6523Code": "0199:123456789",
"sameAs": [
"https://www.wikidata.org/wiki/Q123456",
"https://www.linkedin.com/company/companyname",
"https://www.crunchbase.com/organization/companyname"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+33123456789",
"contactType": "customer service",
"availableLanguage": ["fr", "en"]
}
}
Use for data-heavy pages (statistics, research, public-data reports).
{
"@context": "https://schema.org",
"@type": "Dataset",
"name": "French boiler energy consumption by model, 2020-2025",
"description": "Average annual kWh consumption for 47 boiler models installed in France.",
"license": "https://creativecommons.org/licenses/by/4.0/",
"creator": {"@type": "Organization", "@id": "https://example.com/#org"},
"distribution": {
"@type": "DataDownload",
"encodingFormat": "text/csv",
"contentUrl": "https://example.com/data/boilers-2020-2025.csv"
}
}
Product — e-commerce (required for Merchant Center)Recipe — food sitesEvent — event listingsJobPosting — job boardsReview / AggregateRating — only when backed by verifiable public reviews (fraud risk otherwise)VideoObject — any embedded video (transcripts are critical for AI)DefinedTerm / DefinedTermSet — glossary pages, taxonomy (great for entity disambiguation)Course / EducationalOccupationalCredential — training/cert providersMedicalBusiness, PhysiologicalFeature, Drug — health (YMYL, demand extra rigour)Use @id to build a single graph across multiple JSON-LD blocks:
{"@context":"https://schema.org","@graph":[
{"@type":"Organization","@id":"https://example.com/#org","name":"..."},
{"@type":"WebSite","@id":"https://example.com/#website","publisher":{"@id":"https://example.com/#org"}},
{"@type":"WebPage","@id":"https://example.com/page#webpage","isPartOf":{"@id":"https://example.com/#website"}},
{"@type":"Article","mainEntityOfPage":{"@id":"https://example.com/page#webpage"},"author":{"@id":"https://example.com/about#author-jane"}}
]}
This is the pattern Yoast, RankMath, and modern headless-CMS plugins output. It lets AI engines traverse entities without duplicating them.