Schema Markup Guide: Win Rich Snippets with JSON-LD

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://lin.ee/7KzlIEv",
"https://www.facebook.com/havefunseo"
]
}
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.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.
Want us to handle this for you?
We audit your site for free first. Send the URL and we will tell you where it is losing ground and what to fix in what order.