Integrity Marketing SEO

Guides · SEO

Schema Markup for Local Businesses: What to Add and How

Short answer: Schema markup is a block of structured data, usually written in JSON-LD, that tells search engines exactly what the facts on your page mean: this is the business name, this is the phone number, these are the services and the areas served. For a local business the types that matter are LocalBusiness (or a subtype like Plumber), Service, BreadcrumbList and FAQPage, and every value must match what visitors can see.

Done well, schema removes guesswork. Google, Bing and AI answer tools do not have to infer your opening hours from a footer or your service area from a paragraph. Done badly, with fake ratings or facts that do not match the page, it can earn you a manual penalty. Here is how to do it well.

What is schema markup?

Schema.org is a shared vocabulary that the major search engines agreed on. It defines types (LocalBusiness, Service, Organization, FAQPage) and the properties each type can have (name, telephone, address, areaServed).

Structured data is that vocabulary applied to your page. There are three formats, but only one is worth using:

Schema does not change how your page looks. It is an extra, machine-readable layer on top of it, and part of the technical SEO foundation every site needs.

Why does structured data matter for a local business?

Three practical reasons:

  1. Entity clarity. Search engines build a picture of your business from your site, your Google Business Profile and directory listings. Schema states your name, address and phone (NAP) in a format that is easy to match across those sources.
  2. Rich results. Some types make pages eligible for enhanced displays, such as breadcrumb trails in place of a raw URL. Eligibility is never a guarantee.
  3. AI answers. Tools such as Google's AI Overviews, ChatGPT and Perplexity pull facts from pages. Clean, consistent structured data is one more signal that your facts are reliable. Our guide to Google AI Overviews covers the content side.

Which schema types should a local business use?

TypePut it onWhat it describes
LocalBusiness subtypeHome page, contact page, location pagesName, address, phone, hours, areas served, logo
ServiceEach service pageOne service, who provides it, where
BreadcrumbListEvery page below the home pageThe page's position in your site structure
FAQPagePages with a visible Q&A sectionQuestions and answers shown on the page
OrganizationHome page (if no LocalBusiness)Brand name, logo, social profiles

Pick the most specific LocalBusiness subtype

Schema.org has subtypes for many trades: Plumber, Electrician, HVACBusiness, RoofingContractor, GeneralContractor, MovingCompany, AutoRepair, Dentist, LegalService and more. Use the closest match. A specific type tells search engines more than a generic one.

Service-area businesses

If you work at customers' homes and do not want your address shown, you can leave the street address out of the markup, just as you would hide it on your Google Business Profile. Use areaServed to list the cities or regions you cover, and keep that list the same as the one on your page and your profile.

A LocalBusiness JSON-LD example

This is a working pattern for a plumbing company's home page. Swap in your own details and remove any line you cannot back up with visible content.

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Example Plumbing Co.",
  "url": "https://www.exampleplumbing.com/",
  "telephone": "+1-555-010-0199",
  "logo": "https://www.exampleplumbing.com/logo.png",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 Main Street",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "areaServed": [
    { "@type": "City", "name": "Austin" },
    { "@type": "City", "name": "Round Rock" }
  ],
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "07:00",
    "closes": "18:00"
  }],
  "sameAs": ["https://www.facebook.com/exampleplumbing"]
}

Notes on the example:

What are the rules for review and rating schema?

This is where most local businesses get into trouble.

The same honesty rule applies everywhere. If your markup claims a service, an area or an opening time, the page must say it too.

FAQPage, Service and BreadcrumbList in practice

FAQPage

Google now shows FAQ rich results for very few sites, mostly well-known government and health sources. The markup is still a clear way to label questions and answers, which is useful for any system reading your page. Only use it when the questions and answers appear on the page in full.

Service

On a service page, a Service block names the service (for example "water heater repair"), the provider (your business) and areaServed. Keep one main service per page so the markup and the page say the same thing.

Breadcrumbs describe the path to the page, for example Home, Services, Drain Cleaning. Show the same breadcrumb trail visibly on the page. It helps visitors and gives search engines a clean picture of your site structure.

How do you add and test schema?

  1. Decide per template, not per page. Service pages, city pages and the home page each get a standard set of types.
  2. Add it through your platform. WordPress SEO plugins, most site builders and custom builds can all output JSON-LD. On custom sites, generate it from the same data that fills the page so the two cannot drift apart.
  3. Test one page of each template with Google's Rich Results Test and the Schema.org validator. Fix errors first, then warnings worth fixing.
  4. Monitor in Search Console. Enhancement reports show errors across every page using a template.
  5. Re-test after changes to your phone number, hours, address or site theme.

Common schema mistakes we see

A quick way to catch most of these: once a quarter, open your home page and one service page, run both through the Rich Results Test, and read the detected values line by line against what the page says.

Fix those and your structured data becomes what it should be: a clean, honest summary of facts that are already on the page. That is the same principle behind our wider SEO work.

Key facts

Schema markup is structured data that labels the facts on your page so search engines and AI tools can read them reliably. A local service business needs LocalBusiness (or a specific subtype), Service, BreadcrumbList and, where the page has real Q&A, FAQPage. Keep every value identical to what visitors see, never mark up reviews you collected yourself for star ratings, and test each template after changes.

Questions

Does schema markup improve rankings?

Schema is not a direct ranking boost. It helps search engines understand your business and pages, can make you eligible for richer results such as breadcrumbs, and gives AI tools clean facts to quote.

What is the best schema type for a local business?

Use the most specific LocalBusiness subtype that fits, such as Plumber, Electrician, HVACBusiness, RoofingContractor, Dentist or LegalService. If none fits, use LocalBusiness itself.

Can I add review stars to my own website with schema?

You can mark up reviews, but Google does not show star ratings for reviews a business collects and publishes about itself on its own site. Never invent ratings or mark up reviews that are not shown on the page.

Should I use JSON-LD or microdata?

Use JSON-LD. It is a single script block separate from your page layout, it is the format Google recommends, and it is far easier to maintain across templates.

How do I test schema markup?

Run the page through Google's Rich Results Test and the Schema.org validator. Then watch the enhancement reports in Google Search Console for errors across the whole site.

Terms in this guide: Structured data · Schema markup · Google Business Profile

Get a free proposal