Skip to content
Cleland & Co.

Local AI visibility

Published October 11, 2026 · 8 min read

Local business schema: a minimal example, what it changes, and how to test it

Local business schema explained: a minimal JSON-LD example for a service-area business, what the markup changes, common mistakes, and how to test it.

By for Cleland & Co.Published

About 8 min left

  • local business schema
  • local business schema markup
  • how to add local business schema
  • structured data
A cream punched card fixed with brass tacks over an ivory card, with green showing through some of the perforations.

The short answer

Local business schema is a short block of structured data, usually JSON-LD, that states your business name, address, phone, hours, and type in a form search engines can read. It helps Google understand facts already on the page. It does not promise a rich result, Google does not describe it as a ranking boost, and Google says no special schema is needed for its AI features. Keep it short, accurate, and identical to what the page and your Google Business Profile show.

Local business schema: the short answer

Local business schema is structured data, usually a short block of JSON-LD in a page's code, that states your business name, address, phone number, hours, and type in a vocabulary search engines can read. It helps Google understand facts that are already on the page.

It is not a ranking switch. Google does not promise that markup will produce any rich result, does not describe it as a ranking boost, and says no special schema is needed for its AI features. For most small businesses, the right amount is one accurate block on the page that shows your details, matching that page and your Google Business Profile word for word.

What is local business schema?

Schema.org is a shared vocabulary for describing things on the web. It defines the LocalBusiness (opens in a new tab) type as a particular physical business or branch of an organization, and describes a service area separately with the areaServed property. LocalBusiness has more specific subtypes: under HomeAndConstructionBusiness (opens in a new tab) you will find Plumber, Electrician, HVACBusiness, and RoofingContractor. Google's LocalBusiness documentation (opens in a new tab) asks for the most specific subtype available.

Google recommends JSON-LD (opens in a new tab), a block of code that sits in the page without changing what visitors see. For its local business feature, Google lists two required properties, name and address, and several recommended ones, including telephone, url, and openingHoursSpecification.

What local business schema markup changes, and what it does not

Common claimWhat Google's documentation supports
It helps search engines read your business detailsYes. Structured data gives Google explicit clues about what a page means.
It can feed business details in search resultsPossibly. Google says markup lets you tell it about hours, departments, and more, and that results may show a knowledge panel for the business.
It produces a rich result or knowledge panelNot reliably. Google's general guidelines (opens in a new tab) say it does not promise that structured data will appear in results.
It raises rankingsGoogle does not describe it that way. A structured data manual action removes rich result eligibility and, per Google, does not affect how the page ranks.
It is required for AI Overviews or AI ModeNo. Google's AI features page (opens in a new tab) says there is no special schema.org structured data you need to add.
It can show review stars for your own businessNo. Self-serving reviews are ineligible, as covered below.
It replaces or updates your Business ProfileNo. The profile is managed separately and should say the same thing.

Your Business Profile has its own fields; the Google Business Profile checklist covers them.

Check what your site already outputs

Before writing markup, find out what the page already declares. Some builders, themes, and SEO plugins generate it from business settings, and each can add its own block.

  1. Open the page that shows your business details, view the page source, and search for ld+json. Each match is one block of JSON-LD.
  2. Note how many blocks there are, which @type each one declares, and whether their name, phone, address, and hours agree with each other and with the page.
  3. Run the page through Google's Rich Results Test, covered in the testing steps below, to see what Google reads.

If an accurate block already exists, your job is maintenance, not writing. If the details are wrong, fix them in the setting that generates the block rather than adding a second block by hand. If the source search finds nothing, confirm with the Rich Results Test before writing a new block; the example below is a starting point.

A minimal JSON-LD example for a service-area business

This example is hypothetical: Brightwater Plumbing is fictional, and the domain and 555 phone number are placeholders. It describes a business that works at customers' homes and does not receive visitors at its own address.

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Brightwater Plumbing",
  "url": "https://www.example.com/",
  "telephone": "+1-217-555-0142",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "areaServed": [
    { "@type": "City", "name": "Springfield, IL" },
    { "@type": "City", "name": "Chatham, IL" }
  ],
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:30",
      "closes": "17:30"
    }
  ]
}

To adapt it, replace each value with what your page shows, using this field map:

PropertyWhat to putMust match
@typeThe most specific subtype that fits, such as Plumber rather than the generic LocalBusinessWhat the business actually does
nameYour real-world business nameThe name on the truck, the page, and the Business Profile. Google's profile guidelines (opens in a new tab) ask for the real-world name used consistently, and the markup should follow the same rule
urlThe page that represents the businessA working page on your own domain
telephoneThe main number customers callThe number printed on the page, not a different tracking number
addressOnly the address parts you show publiclyThe address on the page and profile; see the next section for service-area businesses
areaServedThe towns or areas you serve. Schema.org defines it (opens in a new tab) as the geographic area where a service is providedThe areas the page and profile already name
openingHoursSpecificationOne entry for each set of days that share the same hours, written as in the exampleThe hours shown on the page and profile

Three things are left out on purpose. There is no rating or review markup, because self-serving reviews are ineligible. There are no geo coordinates, because they would reveal a location the business has chosen not to publish. And there is no priceRange, an optional property Google says must be shorter than 100 characters; leave it out unless you can state a range that stays accurate.

Address handling for service-area businesses

Google's Business Profile help tells service-area businesses to remove their address (opens in a new tab) if they do not serve customers there, and to set service areas by city, postal code, or another area. Google's structured data documentation, meanwhile, lists address as required and asks you to include as many address properties as possible, but does not mention service-area businesses or areaServed at all.

No Google structured data guidance resolves that tension, so this is a judgment call. The example follows two rules Google does state: do not mark up content that is not visible to readers, and keep markup a true representation of the page. Mark up the address parts you actually publish, list your service areas, and do not put a street address in code that you hide everywhere else. A testing tool may still report missing optional fields; accept that tradeoff knowingly.

If customers do visit your location, use the full street address exactly as it appears on the page and your profile. A storefront can also add the geo coordinates Google's LocalBusiness documentation lists as recommended, because its location is already public. In this hypothetical storefront version, the street is a placeholder:

"address": {
  "@type": "PostalAddress",
  "streetAddress": "100 Example Street",
  "addressLocality": "Springfield",
  "addressRegion": "IL",
  "postalCode": "62701",
  "addressCountry": "US"
}

How to add local business schema

If your site has no block yet, the markup goes inside a script element with the type application/ld+json, usually in the page head: through a custom code setting on a builder, a plugin field or theme setting on WordPress, or the page template on a custom site. Place it on the page that shows your details, usually the homepage or contact page. A business with several locations should describe each location on its own page.

Common local business schema mistakes

  • Review stars for your own business. Google's review snippet guidelines (opens in a new tab) say that when a business controls the reviews about itself, pages using LocalBusiness or Organization markup are ineligible for the star review feature. That includes reviews pulled in through an embedded widget, such as a Google or Facebook reviews widget.
  • Markup that disagrees with the page. A different phone number, old hours, or a name variation in the code is a mismatch. Google's AI features page recommends making sure structured data matches the visible text.
  • Markup that disagrees with your other listings. The page, the markup, the Business Profile, and directory listings should state the same facts. The local citations review covers why consistency across listings matters.
  • Duplicate blocks. A hand-written block added on top of one a theme or plugin already outputs. Repeat the source check above after publishing.
  • A generic type. LocalBusiness works, but a specific subtype that fits is better.
  • Forgotten updates. When hours, phone numbers, or service areas change, the markup has to change too.

How to test local business schema

  1. Run the Rich Results Test. Paste the page address into Google's Rich Results Test and fix any critical errors, as Google's LocalBusiness documentation recommends.

  2. Check the vocabulary. Run the same page through the Schema Markup Validator (opens in a new tab), which checks schema.org markup in general rather than Google's feature rules.

  3. Compare by eye. Put the markup, the visible page, and your Business Profile side by side. Name, phone, hours, and areas should match exactly.

  4. Inspect the live page. After publishing, use URL Inspection in Search Console to see how Google sees the page. If the page is not indexed yet, the new-site indexing checklist covers the usual blocks.

  5. Recheck after changes. Repeat these steps whenever hours, phone numbers, service areas, or the site template change, and once a year when you run your small business website audit, alongside its Business details check.

Cleland & Co.'s technical-readiness checklist gives a quick first look at one page. It checks whether the page's JSON-LD parses, whether it declares an Organization or LocalBusiness type, whether the page's JSON-LD includes address, phone, and hours fields when a LocalBusiness type is declared, and whether the business name (loosely matched) and phone in the markup appear in the text of the page's HTML, with scripts and styles removed. It does not validate markup against Google's rich result rules, check your Business Profile or directory listings, or measure whether AI answers mention you. For how local search is shifting more broadly, see local SEO in 2026.

References and boundaries

Primary references, not borrowed authority.

These sources inform the framing. They do not endorse Cleland & Co., validate a client outcome, or turn this guide into a certification standard.

Questions

Asked and answered.

Does local business schema improve rankings?
Not as far as Google says. Google does not describe structured data as a ranking boost, and it says a structured data manual action affects rich result eligibility, not how the page ranks. Add the markup so Google reads your details correctly, not as a ranking tactic, and judge it by whether the details are accurate rather than by position changes.
Do I need schema markup to appear in Google's AI Overviews?
No. Google says there is no special schema.org structured data you need to add for its AI features. It does recommend that any structured data you use matches the visible text on the page.
What is the difference between local business schema and a Google Business Profile?
Schema is code on your own website that describes the business. The Business Profile is a listing you manage in Google's own tools. Updating one does not update the other, so when your hours, phone number, or service areas change, change both and keep the details identical.
Can I add review stars for my own business?
Not in a way Google will show. Google says pages using LocalBusiness or Organization markup are ineligible for the star review feature when the business controls the reviews about itself, including reviews shown through an embedded widget. You can still show reviews to visitors on the page; just leave review and rating markup out of your own business's structured data.
What if I hide my address on my Google Business Profile?
Google's structured data documentation lists address as required but gives no specific guidance for service-area businesses. A reasonable approach is to mark up only the address parts you show publicly, such as city, state, and postal code, and describe coverage with the areaServed property. It is a judgment call, so make it deliberately.

Check what your page actually declares.

The free technical-readiness checklist looks at one page, including whether its JSON-LD parses and whether the name and phone in it appear on the page. Use it alongside Google's Rich Results Test.