Schema Markup: How to Get Rich Snippets (with JSON-LD Examples)
Schema Markup is the single thing that puts your Rich Result in Google ahead of competitors — stars, prices, images, expanded FAQs in the SERP. Adding the right Schema type lifts CTR 20-40%.
This article covers:
- What Schema is
- 8 types that actually matter
- JSON-LD examples ready to copy
Schema Markup — Short Definition
Schema.org is a shared vocabulary that Google, Bing, and Yandex use to describe what’s on a web page.
Example: a page on your site is an article. Schema tells Google:
- Who wrote it
- When it was published
- Which image is the featured image
- What topic it covers
Google uses that to show Rich Results in the SERP.
Which Format to Use
Three formats exist:
- JSON-LD — recommended by Google (loaded as a
<script>in<head>) - Microdata — embedded in HTML (harder to maintain)
- RDFa — embedded in HTML
Always use JSON-LD — simpler and Google prefers it.
8 Schema Types You’ll Actually Use
1. Organization (every site needs this)
Add via BaseLayout so it appears on every page.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Southern Whale",
"url": "https://southernwhale.com",
"logo": "https://southernwhale.com/images/logo.webp",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+66-93-574-9544",
"contactType": "customer service",
"availableLanguage": ["Thai", "English"]
},
"sameAs": [
"https://line.me/ti/p/7rYm89C06d",
"https://www.facebook.com/southernwhale"
]
}
2. LocalBusiness (for any business with a physical location)
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "Southern Whale Phuket",
"address": {
"@type": "PostalAddress",
"streetAddress": "...",
"addressLocality": "Mueang Phuket",
"addressRegion": "Phuket",
"postalCode": "83000",
"addressCountry": "TH"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 7.8804,
"longitude": 98.3923
},
"telephone": "+66-93-574-9544",
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
},
"priceRange": "$$$",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "50"
}
}
3. Article / BlogPosting (for articles)
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Schema Markup Guide with Rich Snippet Examples",
"image": "https://southernwhale.com/images/blog/schema-markup-guide-2026.jpg",
"datePublished": "2026-05-16",
"dateModified": "2026-05-16",
"author": {
"@type": "Organization",
"name": "Southern Whale"
},
"publisher": {
"@type": "Organization",
"name": "Southern Whale",
"logo": {
"@type": "ImageObject",
"url": "https://southernwhale.com/images/logo.webp"
}
}
}
4. BreadcrumbList
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://southernwhale.com/" },
{ "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://southernwhale.com/blog/" },
{ "@type": "ListItem", "position": 3, "name": "What Is Schema Markup" }
]
}
5. FAQPage (for FAQ pages or FAQ sections in articles)
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is Schema Markup?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Schema is the vocabulary Google uses to understand your page..."
}
}
]
}
6. Product + Review + AggregateRating (for e-commerce)
{
"@context": "https://schema.org",
"@type": "Product",
"name": "...",
"image": [...],
"description": "...",
"brand": { "@type": "Brand", "name": "..." },
"offers": {
"@type": "Offer",
"price": "1500",
"priceCurrency": "THB",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "120"
}
}
7. Hotel + Offer (for hotel sites)
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "Pool Villa Karon",
"starRating": { "@type": "Rating", "ratingValue": "4" },
"amenityFeature": [
{ "@type": "LocationFeatureSpecification", "name": "Free WiFi" },
{ "@type": "LocationFeatureSpecification", "name": "Pool" }
],
"priceRange": "฿8000-฿20000",
"containsPlace": [
{
"@type": "Room",
"name": "Pool Suite",
"occupancy": { "@type": "QuantitativeValue", "maxValue": 2 }
}
]
}
8. Service (for service pages)
{
"@context": "https://schema.org",
"@type": "Service",
"name": "SEO Services",
"provider": {
"@type": "Organization",
"name": "Southern Whale"
},
"areaServed": [
{ "@type": "City", "name": "Phuket" },
{ "@type": "City", "name": "Krabi" }
],
"offers": {
"@type": "AggregateOffer",
"lowPrice": "40000",
"highPrice": "300000",
"priceCurrency": "THB"
}
}
How to Verify Schema Works
1. Schema.org Validator
https://validator.schema.org/ Enter URL or paste code → see errors and warnings.
2. Google Rich Results Test
https://search.google.com/test/rich-results Tests whether Google recognizes your Schema and will display a Rich Result.
3. Google Search Console
1-2 weeks after submitting Schema, check the Enhancements tab in GSC to see which Schemas Google captured.
Common Mistakes
- Schema that doesn’t match content — Google penalizes.
- Fake reviews — Google detects this and penalizes hard.
- Multiple conflicting Schemas — e.g., Organization + LocalBusiness with mismatched NAP.
- Schema on auto-generated pages Google won’t index — wasted effort.
- Mixing Microdata + JSON-LD — pick one.
How to Roll Out Schema on Your Site
Priority order:
- Organization / LocalBusiness (sitewide)
- BreadcrumbList (every detail page)
- Article (every blog post)
- FAQPage (every page with FAQs)
- Product / Service (depending on business type)
- Specific types: Hotel / Restaurant / Event / Course / Recipe
First implementation takes 2-4 hours. After that, you have a template to reuse.
Request Schema Implementation
Our SEO Audit service includes a Schema implementation plan for your site every time, and our dev team can implement it for you.
For new sites — we build with Astro/Next.js with Schema.org included from Day 1. See Web Development.