Skip to content
EN
Free · 30 minConsultation →
05 Pricing Prices and packages 07 About me Who I am, how I work
Language
PLPolskiEN (US)EnglishEN (CA)Englishcoming soonRUРусскийcoming soonITItalianocoming soonESEspañolcoming soonDEDeutschcoming soonFRFrançaiscoming soon
01 Services
Not sure where to start?Short quiz, 1 minute. I’ll suggest what will bring you customers fastest.→
02 Industries All →
03 Cities All →
60cities and towns 14up to 500 mi from Kansas City 24further, over Zoom
Remote across the US, calls on Zoom
04 Case studies All →
06 Knowledge All →
Blog · SEO

Local business schema markup

What LocalBusiness schema markup does for a small business, a copy-ready JSON-LD example, the properties worth filling in and how to test it.

Web design layout of a business homepage with headline, call button, prices, work photos and a short form

Local business schema markup is a small block of structured data, usually in JSON-LD format, that tells search engines in a machine-readable way who your business is: its name, type, address, phone, hours, website, service area and more. It doesn't change how your page looks to visitors. It helps Google and other systems read your key details accurately and connect your website with your Google Business Profile and other listings.

It won't push you to the top of the map pack by itself. But it's quick to add, it removes ambiguity, and it's one of those foundations that strong local sites almost always have in place.

What schema markup is, in plain English

Schema.org is a shared vocabulary that Google, Bing and other search engines agreed on for describing things: businesses, products, events, articles, people. "Structured data" means using that vocabulary in your page code. JSON-LD is the format Google recommends: a script block in the page that doesn't affect the visible content.

For a local business, the main type is LocalBusiness, with many more specific subtypes, for example Dentist, Plumber, HVACBusiness, AutoRepair, Restaurant, LegalService, BeautySalon or RealEstateAgent. Use the most specific one that fits.

A copy-ready example

Here's an example for a fictional plumbing company. Replace every value with your real details:

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Riverbend Plumbing",
  "url": "https://www.example.com/",
  "telephone": "+1-555-010-0199",
  "image": "https://www.example.com/images/team-van.jpg",
  "logo": "https://www.example.com/images/logo.png",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "245 Oak Street, Suite 3",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 39.80, "longitude": -89.65 },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "07:00", "closes": "18:00"
  }],
  "areaServed": ["Springfield", "Chatham", "Rochester", "Sherman"],
  "priceRange": "$$",
  "sameAs": [
    "https://www.facebook.com/example",
    "https://www.yelp.com/biz/example"
  ]
}

Place it in a <script type="application/ld+json"> tag, usually on the home page and the contact page. Multi-location businesses should put markup for each location on that location's own page.

Which properties matter most

Property Why it matters
@type Tells Google what kind of business you are; choose the most specific subtype
name Must match your real name and your Google profile exactly
address Same format as your profile and listings
telephone The main number customers call
openingHoursSpecification Lets systems answer "open now" questions correctly
url Your canonical website address
areaServed Important for businesses that travel to customers
sameAs Links to your official profiles elsewhere, connecting the dots
geo Precise location for storefront businesses
image and logo Real photos and your logo

Optional extras: hasOfferCatalog to list services, department for businesses with distinct departments, and paymentAccepted. Don't add properties you can't keep accurate.

How to test it

Two free tools:

  1. Google's Rich Results Test shows whether Google can read your structured data and whether the page is eligible for any rich result types.
  2. The Schema Markup Validator at schema.org checks the markup against the full vocabulary, including properties Google doesn't use for rich results.

After publishing, Search Console reports some structured data types in its Enhancements section and flags errors there.

Mistakes to avoid

  • Details that don't match the visible page or your profile. Markup should describe what's really on the page and in your listings.
  • Marking up reviews of your own business in the hope of getting stars in results. Google doesn't show them for self-serving local business reviews.
  • FAQ markup for rich results. Google limited FAQ rich results to a small set of authoritative government and health sites, so most businesses won't see them. The questions on your page still help readers.
  • Copying a template and forgetting to change values, so your markup says you're open on Sundays when you're not.
  • Different schema on every page with conflicting details. Keep one consistent business entity.
  • Plugins that add duplicate or contradictory markup. Check the page source if you use more than one SEO plugin.

Schema for different kinds of local businesses

The basic block above works for most businesses, but a few situations need extra thought:

  • Several locations. Give each location its own page with its own markup: its address, phone, hours and a unique @id such as the page URL plus #business. Link them to the main organization with parentOrganization if you want to show the relationship. Don't put five addresses into one LocalBusiness block on the home page.
  • Service-area businesses. If your Google profile hides your street address, don't publish it in the markup either. Use the locality, region and postal code, plus areaServed with the towns or counties you cover.
  • Restaurants. The Restaurant type supports properties like servesCuisine, menu and acceptsReservations. Keep the menu link pointing to a page that is actually up to date.
  • Medical and dental practices. Types such as Dentist or MedicalClinic exist. Describe the practice and its services accurately, and avoid claims in markup that wouldn't be allowed in your visible text or ads.
  • Professional services. Law firms, accountants and financial advisors can use LegalService, AccountingService or FinancialService. Individual practitioners can also be described with a Person type linked to the business.

Who should add it

If your site runs on a common platform, an SEO plugin may add basic LocalBusiness markup with a settings form. Check what it outputs with the testing tools, because plugin defaults are often generic or incomplete. On a custom site, your developer can generate the markup from the same data your pages display. Either way, the person who updates your hours and phone number should know the markup exists, so a change on the page doesn't leave old data behind in the code.

Where schema fits in local SEO

Schema is one piece of a wider consistency puzzle: your Google profile, Apple and Bing listings, directories and website all need to tell the same story. Markup makes your website's version of that story easy to read. It also helps AI tools describe your business correctly; see how to get recommended by ChatGPT and other AI assistants.

If you're working through the technical side of your site, the technical SEO checklist lists schema alongside the other foundations. On sites I build, structured data is generated from the same fields you edit in the CMS, so your hours and phone number never fall out of sync. It's part of my technical SEO work, and every business website I build, from $2,800, includes it by default.

Free · 30 minutes

Let’s talk
about your business

Before the call I review your website and ads. After the call you get an action plan and a price range in writing.

Tom Goldman, one-person marketing agency for US small businesses, friendly head-and-shoulders portrait
Author
Tom Goldman

12+ years in online marketing, 100+ clients. I build websites, Google Ads and Meta ads campaigns, CRMs and automations for small and mid-sized businesses. About me →

FAQ

Schema markup
questions

Does schema markup improve my rankings?

Not directly. Google has said structured data isn't a general ranking boost. It helps Google understand your pages and can make them eligible for certain rich results. For a local business, its main value is accuracy: it confirms your name, address, phone, hours and type of business in a format machines read reliably, which supports your other local signals.

Can I add review stars to my own website's search results?

Not with reviews about your own business shown on your own site. Google stopped showing star ratings in results for self-serving reviews of local businesses and organizations. You can still show reviews on your pages for visitors; just don't expect stars in Google's results from them, and never mark up reviews that aren't real.

Do I still need schema if I have a Google Business Profile?

The profile is your main source of truth for Google Maps. Schema on your website is a second, consistent statement of the same facts, read when Google crawls your site, and it's also available to other search engines and AI tools. It takes little effort to add, so most local businesses should have both.

Which schema type should a service-area business use?

Use the most specific LocalBusiness subtype that fits, such as Plumber or HVACBusiness, and add areaServed with the cities, counties or zip codes you cover. If your address isn't public, you can still include locality, region and postal code without the street address, consistent with how your Google profile is set up.

Want schema added
to your site?

I'll check what structured data your site has now, fix errors and add LocalBusiness markup that matches your Google profile. Message me with your website address; reply within one business day.