Schema markup is the structured-data layer that tells search engines and AI tools what your content is, not just what it says. In 2026, with AI Overviews extracting answers directly from schema and ChatGPT search relying on entity recognition, schema has stopped being a “nice to have” and become foundational SEO infrastructure for SA local businesses.
This is the cheatsheet. Copy-paste, edit for your business, validate, ship.
TL;DR: Every SA local business needs at minimum LocalBusiness, Organization, BreadcrumbList, FAQ, and Article schemas in 2026. The JSON-LD blocks below are SA-formatted (ZAR currency, +27 phone, en-ZA language). Validate with Google’s Rich Results Test before deploying.
Why Schema Matters More in 2026
Three shifts have made schema higher-leverage than ever:
- AI Overviews extract directly from schema. When Google’s Gemini answers “best plumber Sandton”, it reads LocalBusiness schema with
geo,aggregateRating, andareaServedto populate the answer. - ChatGPT and Perplexity ingest structured data. Schema accelerates entity recognition for LLMs. A site with clean Organization, Person, and sameAs schema is recognised as an entity faster than one without.
- Rich results are still meaningful for clicks. Star ratings, FAQ accordions, price snippets, and breadcrumbs in SERPs continue to drive higher CTR.
If your site has no structured data in 2026, you are invisible to a growing share of search traffic regardless of where you “rank”.
How to Deploy These Schemas
Three valid methods:
- Rank Math (free or Pro). Schema Generator with custom JSON-LD support. The most common SA WordPress route.
- Yoast SEO Premium. Built-in for Article and Organization; manual JSON-LD blocks for the rest.
- Manual via header script. Paste raw JSON-LD into a Code Snippets plugin or
wp_headhook. Most control, most maintenance.
After deployment, always validate with Google’s Rich Results Test and Schema.org’s Schema Markup Validator. One typo can invalidate the entire block.
1. Organization Schema (every page, in the header)
This is the foundational identity schema. Place it in your site-wide header, not per page.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://yourdomain.co.za/#organization",
"name": "Your Business Name",
"legalName": "Your Business Name (Pty) Ltd",
"url": "https://yourdomain.co.za/",
"logo": "https://yourdomain.co.za/wp-content/uploads/logo.png",
"image": "https://yourdomain.co.za/wp-content/uploads/hero.jpg",
"description": "Short, accurate description of what your business does and where.",
"telephone": "+27115551234",
"email": "[email protected]",
"address": {
"@type": "PostalAddress",
"streetAddress": "10 Example Road",
"addressLocality": "Sandton",
"addressRegion": "Gauteng",
"postalCode": "2196",
"addressCountry": "ZA"
},
"areaServed": {"@type": "Country", "name": "South Africa"},
"founder": {"@type": "Person", "name": "Founder Name"},
"foundingDate": "2020-01-01",
"sameAs": [
"https://www.linkedin.com/company/yourbusiness/",
"https://www.facebook.com/yourbusiness",
"https://www.instagram.com/yourbusiness/",
"https://twitter.com/yourbusiness",
"https://www.youtube.com/@yourbusiness"
]
}
2. LocalBusiness Schema (on your homepage and contact page)
LocalBusiness extends Organization with location-specific signals. Use the most specific subtype available: Plumber, Dentist, Restaurant, BeautySalon, etc.
{
"@context": "https://schema.org",
"@type": "Plumber",
"@id": "https://yourdomain.co.za/#localbusiness",
"name": "Your Business Name",
"image": "https://yourdomain.co.za/wp-content/uploads/storefront.jpg",
"url": "https://yourdomain.co.za/",
"telephone": "+27115551234",
"priceRange": "R650 - R5000",
"address": {
"@type": "PostalAddress",
"streetAddress": "10 Example Road",
"addressLocality": "Sandton",
"addressRegion": "Gauteng",
"postalCode": "2196",
"addressCountry": "ZA"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": -26.107567,
"longitude": 28.056320
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "13:00"
}
],
"areaServed": [
{"@type": "City", "name": "Sandton"},
{"@type": "City", "name": "Bryanston"},
{"@type": "City", "name": "Rosebank"},
{"@type": "City", "name": "Randburg"}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
Find your business’s latitude and longitude on Google Maps (right-click the location). Confirm priceRange matches reality. The aggregateRating must reflect actual reviews. Fabricated ratings violate Google’s structured data guidelines and risk manual action.
3. Service Schema (one per service page)
Each service you offer should have its own Service schema, typically embedded on the service page.
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://yourdomain.co.za/services/geyser-repair/#service",
"serviceType": "Geyser Repair",
"name": "Geyser Repair in Sandton",
"description": "Same-day geyser repair across Sandton, Bryanston, and Rosebank. Licensed SA plumbers. 12-month workmanship guarantee.",
"provider": {"@id": "https://yourdomain.co.za/#localbusiness"},
"areaServed": [
{"@type": "City", "name": "Sandton"},
{"@type": "City", "name": "Bryanston"}
],
"offers": {
"@type": "Offer",
"priceCurrency": "ZAR",
"price": "650",
"priceSpecification": {
"@type": "PriceSpecification",
"priceCurrency": "ZAR",
"minPrice": "650",
"maxPrice": "3500"
},
"availability": "https://schema.org/InStock"
}
}
4. FAQ Schema (any page with discrete Q&A)
FAQ schema is the highest-leverage schema type for AI Overviews extraction in 2026. Every blog post, service page, and pillar page should have one.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does a geyser repair cost in Sandton?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Standard geyser repair in Sandton starts at R650 for a thermostat replacement and ranges to R3,500 for a full element-and-thermostat job on a 150L geyser. Solar geyser repairs are quoted separately."
}
},
{
"@type": "Question",
"name": "Do you offer same-day geyser repair in Johannesburg?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Same-day service is available for callouts logged before 14:00 across Sandton, Bryanston, Rosebank, and Randburg, weather permitting."
}
},
{
"@type": "Question",
"name": "What guarantee do you provide on a geyser repair?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A 12-month workmanship guarantee on all repairs and a 24-month manufacturer warranty on parts supplied."
}
}
]
}
Rules: questions must be questions people actually ask. Answers must be self-contained and accurate. Do not include promotional language in answers. Google will demote the schema.
5. Article Schema (every blog post)
{
"@context": "https://schema.org",
"@type": "Article",
"@id": "https://yourdomain.co.za/blog/post-slug/#article",
"headline": "Exact H1 of the article",
"description": "Same meta description as the page",
"image": "https://yourdomain.co.za/wp-content/uploads/hero.jpg",
"datePublished": "2026-06-09",
"dateModified": "2026-06-09",
"author": {
"@type": "Person",
"name": "Author Name",
"url": "https://yourdomain.co.za/team/author-slug/",
"sameAs": ["https://www.linkedin.com/in/authorslug/"]
},
"publisher": {"@id": "https://yourdomain.co.za/#organization"},
"mainEntityOfPage": "https://yourdomain.co.za/blog/post-slug/",
"inLanguage": "en-ZA"
}
The author object should be a real person with a profile page, not the brand. Author EEAT signals are increasingly weighted in 2026.
6. BreadcrumbList Schema (every page except homepage)
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://yourdomain.co.za/"},
{"@type": "ListItem", "position": 2, "name": "Services", "item": "https://yourdomain.co.za/services/"},
{"@type": "ListItem", "position": 3, "name": "Geyser Repair", "item": "https://yourdomain.co.za/services/geyser-repair/"}
]
}
7. Review Schema (individual reviews on review pages)
Use only when you have permission and the review is genuine.
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {"@id": "https://yourdomain.co.za/#localbusiness"},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {"@type": "Person", "name": "Themba M."},
"reviewBody": "Same-day geyser repair in Bryanston. Arrived in under 2 hours, fair quote, clean work. Will use again."
}
8. Product Schema (for e-commerce, single product page)
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Solar Geyser Conversion Kit 200L",
"image": "https://yourdomain.co.za/wp-content/uploads/product.jpg",
"description": "Complete 200L solar geyser conversion kit, suitable for Highveld winter conditions.",
"sku": "SGC-200",
"brand": {"@type": "Brand", "name": "Your Brand"},
"offers": {
"@type": "Offer",
"url": "https://yourdomain.co.za/product/sgc-200/",
"priceCurrency": "ZAR",
"price": "12450",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {"@id": "https://yourdomain.co.za/#organization"}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "23"
}
}





