<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nexus SEO</title>
    <description>The latest articles on DEV Community by Nexus SEO (@nexusseo).</description>
    <link>https://dev.to/nexusseo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4191682%2Fc7f4c1cc-7260-4125-b57e-d003de3a0e69.png</url>
      <title>DEV Community: Nexus SEO</title>
      <link>https://dev.to/nexusseo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nexusseo"/>
    <language>en</language>
    <item>
      <title>LocalBusiness structured data for a South African business: a practical JSON-LD walkthrough</title>
      <dc:creator>Nexus SEO</dc:creator>
      <pubDate>Sun, 18 Oct 2026 07:39:34 +0000</pubDate>
      <link>https://dev.to/nexusseo/localbusiness-structured-data-for-a-south-african-business-a-practical-json-ld-walkthrough-19i8</link>
      <guid>https://dev.to/nexusseo/localbusiness-structured-data-for-a-south-african-business-a-practical-json-ld-walkthrough-19i8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; for a South African business site, a good LocalBusiness block needs only two things to be valid for Google, &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;address&lt;/code&gt;, but it's only &lt;em&gt;useful&lt;/em&gt; when every value matches what's visible on the page and on the Google Business Profile: a full &lt;code&gt;PostalAddress&lt;/code&gt; with &lt;code&gt;addressCountry: "ZA"&lt;/code&gt;, the phone number in international format (+27, without the leading 0), opening hours in 24-hour time, and the most specific business type you can find. Leave out review stars about yourself, because Google won't show them.&lt;/p&gt;

&lt;p&gt;Below is a walkthrough with a copy-paste example, plus the South Africa-specific details that tend to go wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What Google actually requires
&lt;/h2&gt;

&lt;p&gt;Google's &lt;a href="https://developers.google.com/search/docs/appearance/structured-data/local-business" rel="noopener noreferrer"&gt;Local Business structured data documentation&lt;/a&gt; lists only two required properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt;: the business name&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;address&lt;/code&gt;: a &lt;code&gt;PostalAddress&lt;/code&gt;, with "as many properties as possible"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recommended properties include &lt;code&gt;telephone&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;geo&lt;/code&gt;, &lt;code&gt;openingHoursSpecification&lt;/code&gt;, &lt;code&gt;priceRange&lt;/code&gt; and &lt;code&gt;department&lt;/code&gt;. (&lt;code&gt;menu&lt;/code&gt; and &lt;code&gt;servesCuisine&lt;/code&gt; only matter for food businesses.)&lt;/p&gt;

&lt;p&gt;Two things the docs also say, which are worth remembering before you promise anyone "rich results":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the &lt;strong&gt;most specific subtype&lt;/strong&gt; you can (e.g. &lt;code&gt;Plumber&lt;/code&gt;, &lt;code&gt;Electrician&lt;/code&gt;, &lt;code&gt;Dentist&lt;/code&gt;) rather than plain &lt;code&gt;LocalBusiness&lt;/code&gt;. If several apply, you can give &lt;code&gt;@type&lt;/code&gt; as an array. Google notes that &lt;code&gt;additionalType&lt;/code&gt; isn't supported.&lt;/li&gt;
&lt;li&gt;Google &lt;strong&gt;does not guarantee&lt;/strong&gt; that structured data will produce any special display in search.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. A complete example (Durban plumber, fictional)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Plumber&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Example Plumbing Durban&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.example.co.za/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;telephone&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+27315550123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.example.co.za/images/van.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;address&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;PostalAddress&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;streetAddress&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12 Example Road&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;addressLocality&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Pinetown&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;addressRegion&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;KwaZulu-Natal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;postalCode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;3610&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;addressCountry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ZA&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;geo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GeoCoordinates&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;latitude&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;29.81234&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;longitude&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;30.85678&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openingHoursSpecification&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;OpeningHoursSpecification&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dayOfWeek&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Monday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Tuesday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Wednesday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Thursday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Friday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;opens&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;08:00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;closes&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;17:00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;OpeningHoursSpecification&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dayOfWeek&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Saturday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;opens&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;08:00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;closes&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12:00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;priceRange&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;R500-R2500&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sameAs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.facebook.com/example&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.linkedin.com/company/example&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The business, address and numbers are made up. Replace every value with your own, and test before deploying (see step 5).&lt;/p&gt;

&lt;h2&gt;
  
  
  3. South Africa-specific details
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Phone numbers.&lt;/strong&gt; Google asks for a &lt;code&gt;telephone&lt;/code&gt; that includes the country and area code. For a South African number written locally as &lt;code&gt;031 555 0123&lt;/code&gt;, drop the leading &lt;code&gt;0&lt;/code&gt; and add &lt;code&gt;+27&lt;/code&gt;: &lt;code&gt;+27315550123&lt;/code&gt;. The same goes for mobile numbers: &lt;code&gt;082 ...&lt;/code&gt; becomes &lt;code&gt;+2782...&lt;/code&gt;. Use the same number that appears on the page and on your Business Profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Country code.&lt;/strong&gt; Use the two-letter ISO code &lt;code&gt;ZA&lt;/code&gt; in &lt;code&gt;addressCountry&lt;/code&gt;, not "RSA" or "SA".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Province and suburb.&lt;/strong&gt; Put the province in &lt;code&gt;addressRegion&lt;/code&gt; (&lt;code&gt;KwaZulu-Natal&lt;/code&gt;, &lt;code&gt;Gauteng&lt;/code&gt;, &lt;code&gt;Western Cape&lt;/code&gt;...) and the town or suburb people actually search for in &lt;code&gt;addressLocality&lt;/code&gt;. South African postal codes are four digits. Write them exactly as they appear on the site and the Business Profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coordinates.&lt;/strong&gt; If you include &lt;code&gt;geo&lt;/code&gt;, Google wants at least five decimal places for latitude and longitude. South African latitudes are negative (southern hemisphere), and that sign is easy to lose when you copy coordinates around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price range.&lt;/strong&gt; &lt;code&gt;priceRange&lt;/code&gt; is free text and has to stay under 100 characters. A rand range such as &lt;code&gt;R500-R2500&lt;/code&gt; is clearer to readers than &lt;code&gt;$$&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hours.&lt;/strong&gt; Use 24-hour times (&lt;code&gt;"08:00"&lt;/code&gt;, &lt;code&gt;"17:00"&lt;/code&gt;). To mark a day as closed, Google's docs say to set both &lt;code&gt;opens&lt;/code&gt; and &lt;code&gt;closes&lt;/code&gt; to &lt;code&gt;"00:00"&lt;/code&gt;. You can also leave the day out.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Service-area businesses (you go to the customer)
&lt;/h2&gt;

&lt;p&gt;Many SA businesses, such as plumbers, electricians, cleaners and consultants working from home, hide their street address on Google Business Profile and show a service area instead.&lt;/p&gt;

&lt;p&gt;The rule in Google's &lt;a href="https://developers.google.com/search/docs/appearance/structured-data/sd-policies" rel="noopener noreferrer"&gt;general structured data guidelines&lt;/a&gt; is that markup should describe content that's visible to users on the page. So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the address &lt;strong&gt;isn't shown&lt;/strong&gt; on your site, don't put a full street address in the markup just to "help SEO". At most, use the locality, region, postal code and country you actually show.&lt;/li&gt;
&lt;li&gt;Schema.org has an &lt;code&gt;areaServed&lt;/code&gt; property for listing the areas you cover. It's valid schema.org, but it isn't in Google's list of supported LocalBusiness properties, so treat it as context, not as a ranking lever.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Things to leave out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Review stars about your own business.&lt;/strong&gt; Since 2019 Google hasn't shown review rich results for &lt;code&gt;LocalBusiness&lt;/code&gt; or &lt;code&gt;Organization&lt;/code&gt; when the business controls the reviews, which includes reviews embedded through a third-party widget (&lt;a href="https://developers.google.com/search/blog/2019/09/making-review-rich-results-more-helpful" rel="noopener noreferrer"&gt;Google Search Central blog&lt;/a&gt;). Marking up your own testimonials won't get you stars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyword-stuffed names.&lt;/strong&gt; Use the real business name. "Example Plumbing | 24/7 Emergency Plumber Durban North" isn't the business name, and it doesn't match your signage or your Business Profile.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One block listing every city you'd like to rank in.&lt;/strong&gt; Mark up each real location on the page about that location. A city you merely serve isn't a branch.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Test, deploy, check
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Paste the code or URL into Google's &lt;a href="https://search.google.com/test/rich-results" rel="noopener noreferrer"&gt;Rich Results Test&lt;/a&gt; and fix any critical errors.&lt;/li&gt;
&lt;li&gt;Also run it through the &lt;a href="https://validator.schema.org/" rel="noopener noreferrer"&gt;Schema Markup Validator&lt;/a&gt; to catch schema.org-level issues.&lt;/li&gt;
&lt;li&gt;Deploy, then use URL Inspection in Search Console to check that Google can see the rendered markup (for example, that it isn't blocked by robots.txt or added by a script Google can't run).&lt;/li&gt;
&lt;li&gt;Re-check whenever the phone number, address or hours change. Stale markup that disagrees with your Business Profile is worse than no markup.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;LocalBusiness markup won't rank a site by itself. What it does is state your business details in a machine-readable form, so they're consistent with your page and your Google Business Profile. Keep it short, accurate and specific.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I work with &lt;a href="https://nexusseo.co.za" rel="noopener noreferrer"&gt;Nexus SEO&lt;/a&gt;, a Durban-based SEO agency, and we set up this kind of markup for South African business sites. The example above is fictional, and everything in this post is based on Google's and schema.org's public documentation linked above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>json</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
