A local business schema guide gives South African website owners the structured data code that tells Google exactly what your business is, where it is, and when it is open — the same data that populates knowledge panels, Map Pack listings, and rich snippets in search. For SEO in South Africa, where Google accounts for the vast majority of all searches and most of those happen on mobile, getting this right gives any SA business that depends on foot traffic or local enquiries a genuine structural advantage over competitors who skip it.

Structured data sits between your website and Google's understanding of it. Your Google Business Profile communicates directly with Google, but your local SEO on-site signals — including LocalBusiness schema — confirm and amplify that information. Without schema, Google infers your hours, address, and business type from page text alone. With it, you hand Google a verified, machine-readable description that reduces ambiguity and improves your eligibility for Local Pack placement.

Quick Answer

A local business schema guide helps SA website owners add LocalBusiness JSON-LD to their site — the code that tells Google your business name, address, telephone, and hours in a format it can read without guessing. Google requires two properties: name and address (as a full PostalAddress object). Recommended additions — telephone, geo coordinates, openingHoursSpecification, and aggregateRating — increase your eligibility for knowledge panels and Map Pack features. Validate your finished markup with Google's Rich Results Test before publishing.

Not Sure What Your Site's Schema Is Missing?

Send us your website URL and we will pull a quick structured data audit showing exactly which LocalBusiness properties are absent, malformed, or mismatched against your Google Business Profile.

Request a Free Schema Audit

Why Your Local Business Schema Guide Matters in South Africa

The case for LocalBusiness structured data becomes clear when you look at how South Africans actually search. DataReportal's Digital 2026 South Africa report puts the country at 51.7 million internet users — and that number grows year on year. Google commands an overwhelming share of all South African searches, meaning virtually every customer who types "plumber near me in Randburg" or "hair salon open now Cape Town" goes through a single engine that reads structured data to decide who appears in the Map Pack.

The conversion numbers show why Local Pack placement is worth the effort: 42% of local-intent searchers click on Map Pack results, and 76% of people who search for a nearby business visit that business within 24 hours. A listing that appears in the three-pack with accurate hours, a star rating, and a click-to-call number has a material advantage over a standard blue link with no supplementary data.

Despite this, the majority of websites globally still have no schema markup in place. That adoption gap represents a genuine opening for SA businesses willing to implement the markup correctly. This local business schema guide covers what you need, in order, to close that gap for your own site.

The Local Pack Numbers Worth Knowing

42% of local-intent searchers click Google Map Pack results. 76% of near-me searchers visit a physical business within 24 hours. 28% of local searches result in a purchase. LocalBusiness schema is the website-side signal that reinforces your eligibility for those placements — without it, Google relies on inference rather than confirmed data from your own site.

The Two Required Properties for LocalBusiness Schema

Google's official LocalBusiness structured data documentation lists two required properties: name and address. Both look obvious, but the address property requires care — it must be a PostalAddress object, not a plain text string.

For a South African business, that PostalAddress looks like this:

"address": {
  "@type": "PostalAddress",
  "streetAddress": "45 Main Street",
  "addressLocality": "Johannesburg",
  "addressRegion": "Gauteng",
  "postalCode": "2001",
  "addressCountry": "ZA"
}

The addressCountry value must be the ISO 3166-1 alpha-2 country code — "ZA" for South Africa, not the text string "South Africa". Getting this wrong is a silent failure: Google may still parse the address, but loses precision for geo-targeting.

The name property must match your Google Business Profile name exactly — word for word, including punctuation. Inconsistencies between your schema and GBP create conflicting signals that undermine both.

Beyond the required minimum, Google lists recommended properties that expand what your search listing can display. Each one you add increases eligibility for richer results and reduces reliance on inferred data.

PropertyTypeWhat It Adds
telephoneTextEnables click-to-call in mobile search results
urlURLLinks schema to a specific, crawlable page
geoGeoCoordinatesPinpoints location; use at least 5 decimal places for accuracy
openingHoursSpecificationOpeningHoursSpecificationShows hours in knowledge panels and Map Pack
aggregateRatingAggregateRatingDisplays star ratings in search results
priceRangeTextRelative pricing indicator — enter a Rand range or symbol matching your actual tariffs
imageURLFeatured image in knowledge panels
descriptionTextShort business description for rich snippets
areaServedText or PlaceUseful for service-area businesses without a public storefront
currenciesAcceptedTextUse "ZAR" to confirm Rand-denominated transactions

South African phone numbers should use international format in the schema: "+27-11-555-0123" rather than "011 555 0123". The +27 country prefix is required for Google to recognise the number as callable from mobile.

On aggregateRating: Include this property only if your site hosts genuine customer reviews that produce the aggregate score. A hardcoded star rating without real review data violates Google's structured data guidelines and can result in a manual action that removes all your rich results.

Choosing the Right LocalBusiness Subtype for Your SA Business

Choose the most specific schema.org subtype that accurately describes your business — Google's documentation is explicit that a precise type (such as Dentist, HairSalon, or Plumber) gives Google a stronger entity signal than the generic LocalBusiness parent for category-based searches. The hierarchy has more than 80 subtypes, so there is almost always a closer match than the base type available.

SA Business TypeSchema Parent TypeMost Specific Subtype
Restaurant, café, fast foodFoodEstablishmentRestaurant, CafeOrCoffeeShop, FastFoodRestaurant
Hair salon, beauty salon, day spaHealthAndBeautyBusinessHairSalon, BeautySalon, DaySpa
Gym or health clubHealthAndBeautyBusinessHealthClub
Dentist or doctorMedicalBusinessDentist, Physician
Auto repair or car dealershipAutomotiveBusinessAutoRepair, AutoDealer
Plumber, electrician, contractorHomeAndConstructionBusinessPlumber, Electrician, GeneralContractor
Accountant, attorney, financial advisorProfessionalServiceAccountant, Attorney, FinancialService
Hotel, guesthouse, B&BLodgingBusinessHotel, BedAndBreakfast
Estate agentRealEstateAgent—
Retail storeStoreClothingStore, ElectronicsStore, FurnitureStore

If your business category does not map cleanly to any available sub-subtype, move up one level to the next most specific parent. Avoid an inaccurate subtype — Google's documentation recommends the most specific accurate type, and practitioners consistently report that a type mismatch between your schema and your GBP category sends conflicting entity signals that can work against you. How local SEO works in South Africa relies heavily on consistent, accurate entity signals across every data source Google can read.

Your South African JSON-LD Template (Copy-Paste Ready)

JSON-LD (JavaScript Object Notation for Linked Data) is Google's preferred format for structured data. Place the entire block inside a <script type="application/ld+json"> tag in your page's <head> or <body>. Below is a complete template adapted for a South African service business — swap in your own details:

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Acme Plumbing Johannesburg",
  "url": "https://www.acmeplumbing.co.za",
  "telephone": "+27-11-555-0123",
  "image": "https://www.acmeplumbing.co.za/images/storefront.jpg",
  "description": "Licensed plumbers serving Johannesburg, Randburg, and Sandton.",
  "priceRange": "[your price range, e.g. low – high in Rand]",
  "currenciesAccepted": "ZAR",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "45 Main Street",
    "addressLocality": "Johannesburg",
    "addressRegion": "Gauteng",
    "postalCode": "2001",
    "addressCountry": "ZA"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": -26.20227,
    "longitude": 28.04363
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "08:00",
      "closes": "17:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "08:00",
      "closes": "13:00"
    }
  ],
  "areaServed": "Johannesburg, Gauteng"
}

A few notes on this template:

  • @type is "Plumber" — a subtype of HomeAndConstructionBusiness. Replace with your own subtype from the table above.
  • GeoCoordinates — use Google Maps to find your precise coordinates. Copy at least 5 decimal places for accuracy.
  • openingHoursSpecification — add or remove day objects as needed. If you trade different hours on public holidays, add a separate object with validFrom and validThrough dates.
  • areaServed — include the suburbs or cities you cover. For service-area businesses (plumbers, electricians), this is especially important when you have no walk-in premises.

JSON-LD Placement Checklist

Add your LocalBusiness JSON-LD to every page that represents a physical location: your homepage, contact page, About page, and any dedicated location landing pages. One accurate block per location page — do not place multiple conflicting schema blocks on the same page.

Need Help Building the Right Schema for Your Business Type?

Tell us your business type and city, and we will map the correct schema subtype, check your GBP for data mismatches, and show you which properties you are currently missing.

Get My Schema Mapped

How to Add LocalBusiness Schema to Your Website

There are three practical routes for SA website owners, each suited to a different level of technical confidence.

Option 1: Rank Math or Yoast SEO (WordPress)

Both Rank Math and Yoast SEO have built-in local schema modules. In Rank Math, go to Rank Math → Titles & Meta → Local SEO and fill in your business details. The plugin generates the JSON-LD automatically and injects it into your site's <head>. Yoast's Local SEO premium add-on works similarly.

This is the fastest route if your site runs on WordPress, which the majority of SA business websites do. Check that the output matches your GBP data before calling the job done — plugin defaults sometimes omit geo coordinates or leave priceRange blank. If you would like help matching your markup to your Google Business Profile, our local SEO services start with a free audit and a retainer agreed upfront.

Option 2: Manual JSON-LD in Your Theme or CMS

Copy the template above into your preferred text editor, fill in your business details, then paste the entire block into your theme's <head> section (or a custom HTML widget on the relevant pages). On WordPress, you can add it to functions.php or via a plugin like Insert Headers and Footers. On Shopify, paste it into the theme.liquid layout file. This approach gives you the most control and works on any CMS.

Option 3: Google Tag Manager

Create a Custom HTML tag in GTM, paste your JSON-LD block inside it, and fire it on the relevant pages. GTM-injected schema is loaded via JavaScript after the initial page parse, which some SEO practitioners prefer to avoid — Google can process it, but a server-side <head> block is more reliable. Use GTM only if you cannot edit your site's template directly.

Good: Your schema name reads "Acme Plumbing Johannesburg", your GBP listing reads "Acme Plumbing Johannesburg", and your website header reads "Acme Plumbing Johannesburg". All three match. Google has a consistent signal.

Avoid: Your schema says "Acme Plumbing", your GBP says "Acme Plumbing JHB", and your website says "Acme Plumbing — Est. 2005". Three different name strings create conflicting entity signals that can suppress knowledge panel displays and reduce trust in your data.

Whenever your business information changes — new hours, relocated address, updated phone number — update your schema at the same time you update your GBP. Stale schema actively works against you because it creates a data conflict between your site and your GBP. The broader schema markup guide for South Africa covers this for other schema types too.

Validating Your LocalBusiness Schema: Three Essential Checks

Validate your LocalBusiness schema with three tools in sequence: Google Rich Results Test (for errors), Schema.org Validator (for standards compliance), and Search Console's Enhancements report (for real-world indexing results). A single malformed property can prevent rich results from appearing without any visible error on your site — testing in order catches different failure modes.

1. Google Rich Results Test

Go to search.google.com/test/rich-results and enter your page URL or paste your JSON-LD directly. The tool shows which rich results your page is eligible for, highlights any errors (red), and flags warnings (orange). Fix all errors before publishing. Warnings are advisory — address them where possible but they will not block rich result eligibility by themselves.

2. Schema.org Validator

The Rich Results Test checks Google-specific compatibility; the Schema.org Validator checks standards compliance. Run your JSON-LD through validator.schema.org to catch type errors or property mismatches that the Google tool might not surface. This is especially useful when you are using less common sub-subtypes that Google's test does not specifically support.

3. Google Search Console Rich Results Report

After your page has been recrawled (allow a few days), check Search Console under Enhancements → the relevant schema type. This report shows real-world performance: how many valid pages Google found, any errors discovered during indexing, and whether your schema has triggered rich result displays in actual searches. This is the only ground-truth view of whether your schema is producing results, not just passing a syntax test.

Validation in Order

Run Google Rich Results Test first (Google-specific errors), then Schema.org Validator (standards compliance), then monitor Search Console after recrawl. A page that passes all three checks has done everything on the website side — rich result appearance still depends on broader ranking and trust signals, but you have removed the technical blockers.

Multi-Location SA Businesses: One Schema or Many?

If your business has multiple branches — a retail chain across Gauteng, a restaurant group in Cape Town and Johannesburg, or a professional services firm with offices in Sandton and Pretoria — you need separate LocalBusiness schema on each location's individual page, not one block covering all locations.

Each location page gets its own JSON-LD with that location's specific name, address, telephone, geo coordinates, and hours. The name can follow a format like "Acme Plumbing — Sandton" and "Acme Plumbing — Pretoria" to distinguish the entities while keeping the brand name intact. Google's documentation explicitly supports nested department properties if you need to represent different departments within a single physical location.

A common mistake is placing one corporate-level schema block on the homepage and expecting it to cover all branches. It does not — Google associates that schema with the homepage URL only. Each branch needs its own page and its own schema. Improving your site's crawlability so those branch pages are properly indexed is a prerequisite for the schema to have any effect.

Multi-Location Schema Getting Complicated?

If you have more than two business locations and your schema implementation is inconsistent across them, we can audit the full set, identify which pages have missing or conflicting markup, and produce a corrected template for each branch.

Book a Multi-Location Audit

Why South African Businesses Choose Growth Pulse Media for Local SEO

We have run our own campaigns and built structured data implementations for businesses across Johannesburg, Cape Town, and Durban — which means we know the difference between a schema block that passes the Rich Results Test and one that actually moves the Map Pack needle. Technical SEO work like LocalBusiness schema is most effective when it sits inside a broader local search strategy: consistent NAP data across directories, a fully optimised Google Business Profile, and content that matches the search queries your customers actually use.

Growth Pulse Media takes a deliberately limited number of clients. When you engage us for SEO in South Africa, you get senior attention on your account — not a template rolled out by a junior analyst. We use Rank Math for schema implementation on WordPress sites, cross-check against GBP data as a first step, and validate with Google's own tools before any changes go live. If you want a qualified assessment of where your local search signals stand right now, the conversation starts on our contact page.

Who This Local Business Schema Guide Is NOT For

Purely online businesses with no physical location. LocalBusiness schema requires a real physical address. If you operate an ecommerce store, a SaaS product, or a fully remote service with no walk-in premises, LocalBusiness is not the right type — consider Organization schema instead, and focus on other trust signals for search visibility.

Businesses with inconsistent NAP data. If your business name, address, and phone number are different across your website, GBP, Hello Peter, Facebook, and local directories, adding schema on top of that inconsistency creates competing signals. Fix the NAP consistency problem first — schema amplifies what Google already knows about you, accurate or not.

Businesses expecting immediate Map Pack ranking changes. Schema tells Google what your business is — it does not override the proximity, relevance, and prominence factors that determine Local Pack position. You may see knowledge panel improvements quickly, but Map Pack placement takes weeks to months as Google recrawls and recalibrates. Set that expectation before you start. How long SEO takes in South Africa applies to structured data outcomes too.

Enterprise sites managed by a dedicated technical SEO team. If you already have an in-house SEO team or an agency handling your technical implementation, this walkthrough covers ground they will have addressed. The guide is written for SA SME owners and marketing managers who are managing their own schema for the first time and need a correct, SA-specific starting point.

Frequently Asked Questions About LocalBusiness Schema

Does LocalBusiness schema directly improve my Google ranking?

Schema is not a direct ranking factor for organic search results — Google has confirmed this. What it does is two things: it makes your business eligible for rich result features (knowledge panels, star ratings in search listings) that improve click-through rates, and it acts as a confirmatory entity signal that helps Google understand your business more precisely. Map Pack position still depends on proximity, relevance, and prominence — your distance from the searcher, how well your business matches their intent, and how well-known and authoritative your business is. Schema reinforces the relevance and entity-clarity signals; it does not override the others.

What is LocalBusiness schema and how does it work?

LocalBusiness schema is a block of JSON-LD code — a machine-readable description of your business — that you add to your website. Google reads it when it crawls your site and uses the data to populate knowledge panels, Map Pack entries, and rich snippets in search results. It works by giving Google structured, unambiguous information (name, address, hours, location coordinates) rather than leaving the engine to infer those details from your page text. Think of it as the formal introduction your website makes to Google Search.

What properties are required for LocalBusiness schema in South Africa?

Google requires two properties: name (your business name, matching your Google Business Profile exactly) and address (a PostalAddress object including streetAddress, addressLocality, addressRegion, postalCode, and addressCountry: "ZA"). Adding recommended properties — telephone in +27 format, geo coordinates, openingHoursSpecification, and aggregateRating — significantly expands what Google can display about your business in search results.

How do I know if my LocalBusiness schema is working?

Run your page through Google's Rich Results Test at search.google.com/test/rich-results immediately after publishing. This confirms there are no errors preventing rich result eligibility. After a few days, check Google Search Console under Enhancements for your schema type — this report shows how many pages Google has validated and whether any errors appeared during indexing. You may also notice your knowledge panel displaying more complete information, or star ratings appearing in your organic listings, once the schema has been processed.

Can I add LocalBusiness schema without touching code?

Yes. If your website runs on WordPress, plugins like Rank Math (free) and Yoast SEO (premium local add-on) generate and inject LocalBusiness JSON-LD automatically when you fill in your business details in their settings. Rank Math's Local SEO module handles all the required and recommended properties through a form interface — no manual JSON editing needed. Always verify the plugin's output with the Rich Results Test to confirm the generated schema is error-free before relying on it.

What is the difference between LocalBusiness schema and Google Business Profile?

Google Business Profile (GBP) is a standalone Google-managed listing that feeds information directly to Maps, Local Pack, and knowledge panels. LocalBusiness schema is website markup that tells Google what your website says about your business. They are complementary, not interchangeable — GBP is the primary signal for Map Pack placement, while LocalBusiness schema reinforces and confirms that data from your own website. The two should always be consistent: identical name, address, and phone number across both. A mismatch between your schema and your GBP creates a conflicting signal that can weaken both.

What happens if I use the wrong LocalBusiness subtype?

Using a subtype that doesn't match your actual business type (for example, using Restaurant for an accountancy firm) won't produce an error in validation tools — the JSON is still valid — but it sends an inaccurate entity signal to Google. This can result in your business being categorised incorrectly in Google's knowledge graph, which may affect which category-based searches you appear for. Always choose the most specific accurate subtype from the schema.org hierarchy, and make sure it aligns with the primary category in your Google Business Profile.

Get Your LocalBusiness Schema Right, First Time

Growth Pulse Media implements and validates LocalBusiness structured data for South African businesses — including subtype selection, GBP data matching, geo coordinate precision, and Search Console monitoring. We work with Rank Math on WordPress, manual JSON-LD on other platforms, and cross-validate every implementation before it goes live. No obligation — we will get back to you within 24 hours.

Talk to a Local SEO Specialist
Dirk van Greuning — Founder, Growth Pulse Media
Dirk van Greuning Founder, Growth Pulse Media

Founder of Growth Pulse Media and a specialist in South African search dominance. Dirk translates his experience in scaling South African businesses into high-velocity digital strategies for B2B and retail leaders. He writes about SEO, lead generation, and paid media from an operator's perspective — prioritising pipeline value over impressions.

Connect on LinkedIn