Skip to content
Enjoy 20% off for 12 months on all plans. Use promo code: HYPERGROWTHClaim it

Lesson 2 of 3: LocalBusiness schema

Local business schema: what it is and how to add it

The structured data that tells Google exactly what and where you are, and how to validate it.

6 min readIntermediateUpdated 2026-10-26

Take a dental practice in Swansea. A patient reads the homepage easily: the name is in the logo, the address in the footer, the phone in the header, the hours on a photo of the door. A crawler can't be sure of any of that. The markup puts the same facts in one short, labelled statement, so nothing has to be inferred from layout.

What structured data does, and what it doesn't

Structured data describes what a page is about, using Schema.org, a vocabulary the search engines share. Google recommends the JSON-LD format: a script tag holding labelled values, invisible to visitors. In effect, a LocalBusiness block says "this page is for a business called X, of type Y, at this address, on this number, open at these times."

Google lists Local business in its search gallery of types that can produce an enhanced result. Its guide says results may display a Knowledge Graph card with a business's details, such as hours. Note the limit. Valid markup makes a page eligible for that treatment. It doesn't entitle you to it, and Google nowhere describes the markup as lifting a page's position. Think of it as removing ambiguity, not as a lever.

It doesn't replace your Business Profile either. The map pack ranks the profile. The markup makes your website's description of the business agree with the profile in a form that can't be misread.

The properties Google requires and the ones worth adding

Google's LocalBusiness documentation requires only two properties: the business name and a postal address. It recommends the telephone, the website URL, geographic coordinates, opening hours as an openingHoursSpecification and a price range. Restaurants add a menu URL and cuisine. Include every recommended property you can state truthfully and keep current. An hours block a year out of date does more harm than no block.

Two recommended properties come with a catch. Google's guide marks aggregateRating and review as recommended only for sites that collect reviews about other local businesses. If you rate your own business on your own page, that's self-serving review markup, which Google's review snippet guidelines rule ineligible. Leave both out unless you run a directory or a review platform.

Pick the most specific type Schema.org offers. LocalBusiness is the parent. Under it sit Dentist, Plumber, Restaurant, HairSalon and many more, all listed on the Schema.org LocalBusiness page. A specific type tells Google what you do as well as where you are. Here's a complete block for a fictional plumber:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Harbour Plumbing",
  "url": "https://www.harbourplumbing.example/",
  "telephone": "+44 113 496 0123",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Quay Street",
    "addressLocality": "Leeds",
    "postalCode": "LS1 0AA",
    "addressCountry": "GB"
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "08:00",
    "closes": "17:30"
  }]
}
</script>

Copy every value from your Business Profile. If the block disagrees with the profile, Google sees the mismatch on every crawl.

Where to put it and how to validate it

Put the block on the page that stands for the business. For a single location, that's the homepage. A business with several branches gives each branch its own page and its own block, describing that branch only. One stacked block listing every branch tells Google less than a clear page per location. A service-area business with no public storefront shouldn't invent a street address to satisfy the required property. Describe the areas served with areaServed and leave the address out, as the profile does.

The block belongs in the HTML the server sends, not injected by a script after the page loads. Google renders JavaScript, but a late or conditional script can be missed, and the block is small enough that the risk isn't worth taking. Most platforms have a theme setting or plugin that writes it. Check what it actually emits. Defaults often produce a bare LocalBusiness with the site title and nothing else.

Validate again after every change to your details and after any theme or plugin update. Updates are when blocks silently disappear.

The mistakes that make it worthless

Most broken LocalBusiness markup fails in a few predictable ways:

  • A generic LocalBusiness with the site title as the name and no address, which satisfies nothing.
  • A phone number or address updated on the page but never in the block. Google's general structured data guidelines require markup to describe content visible on the page, so a contradiction is a policy problem as well as a consistency one.
  • The same block, with the same city, copied onto every location page, so each page claims to be the head office.
  • An aggregateRating added "for the stars", which is self-serving and ineligible.
  • FAQPage blocks added by a plugin in hope of a result. According to its search updates log, Google ended FAQ results in May 2026, so there's nothing to expect.

Once you've seen them, each is a quick fix, and the validator shows all of them.

Frequently asked questions

What is a local business schema?

It's a JSON-LD block, written in the Schema.org LocalBusiness vocabulary, that sits in your page's HTML. It labels your business name, type, address, phone and hours so Google reads them directly. Visitors never see it.

What is a business schema?

Business schema is the general idea of marking up an organization's details as structured data. LocalBusiness is the version for a business with a physical location or service area, and it has specific subtypes such as Dentist and Plumber. Pick the most specific one that fits.

Does local SEO still work?

Yes, but the markup isn't what makes it work. The map pack ranks your Business Profile, and schema only makes your site agree with that profile. Google doesn't describe the markup as a ranking boost, so treat it as a clarity step on top of the profile work.

What is an example of a local business?

A dental practice in Swansea, a plumber in Leeds, a restaurant or a hair salon. Each has a place customers can find, or an area it serves. Each also has a matching Schema.org type, so the plumber in the example above uses Plumber rather than the generic LocalBusiness.

What to take away

  • LocalBusiness structured data is a JSON-LD statement of your name, address, phone, hours and type. It removes ambiguity for Google, but it doesn't lift rankings by itself or replace your Business Profile.
  • Google requires only name and address. It recommends telephone, URL, coordinates, hours and price range, and treats rating yourself through aggregateRating as ineligible.
  • Use the most specific Schema.org type, copy every value from the profile, and give each location its own page and block in the server-rendered HTML.
  • Validate after every change to your details or theme, because blocks drift and disappear silently.

Next

With your business details consistent and machine-readable, make the page itself usable where local searches happen: Speed and mobile for local sites.

Free tools this lesson uses

Saved in this browser only.

Chapter 6: Send Google the local signals it wants

All 10 chapters