The Schema Markup a Local Business Actually Needs

A local business needs a short list of schema types, not the whole catalog: LocalBusiness (or its most specific subtype) to establish who and where you are, Service for what you actually sell, FAQPage for the questions you answer on the page, and Person for the humans behind the work. Get those four right, keep them honest, and you have told machines nearly everything they need to recommend you.

Schema.org lists roughly eight hundred types, which is why most advice on the subject reads like a parts catalog. The catalog is not for you. It exists so that everyone from airlines to zoos can describe themselves in a shared vocabulary; a plumber needs maybe five entries from it. Here are the five, and what each one actually does.

Why does schema matter more than it used to?

Schema markup is structured data: labels in your page's code that tell machines, without ambiguity, what the content means. A human reads "Open Tue–Sat" and gets it. A machine does far better when you declare opening hours explicitly, because parsing prose is guesswork and parsing labeled data is not.

Search engines have used structured data for years to power rich results. What changed is who else is reading it. AI answer engines — ChatGPT, Perplexity, Google's AI Overviews — assemble answers from sources they can interpret with confidence, and clean structured data lowers the cost of being understood. That is the working core of answer engine optimization: a machine that is unsure about your hours, your service area, or whether you are the same business mentioned on three directories will quietly cite somebody it is sure about.

Which type does the heavy lifting?

LocalBusiness — ideally the most specific subtype that honestly fits: Dentist, Attorney, Electrician, Plumber, Restaurant, RoofingContractor, VeterinaryCare, and many more. Subtypes carry meaning a generic Organization does not, so pick the narrowest one that is true.

The properties worth filling in carefully:

What do Service, FAQPage, and Person add?

Service

One Service block per real service page: the service name, a plain description, the area served, and a provider property pointing back at your LocalBusiness. Resist inventing Service markup for things you mention in passing — if the service does not have a page, it does not need markup.

FAQPage

Use it only on pages that visibly show questions and answers, and make the markup match the visible text word for word. Google has tightened who gets FAQ rich results, but the markup still gives answer engines a cleanly parsed question-and-answer pair to lift.

Person

Mark up the owner and the practitioners: name, job title, credentials, and a sameAs link to a LinkedIn profile or a licensing listing. This is how the experience-and-expertise story your site tells becomes legible to machines, and it costs you one honest paragraph per person.

Reviews, carefully

Review and AggregateRating markup are only for reviews you collected and display on your own site. Republishing your Google star rating inside your own markup is against Google's guidelines and a reliable way to lose rich-result eligibility. When in doubt, leave rating markup off.

Where should the JSON-LD go?

Use JSON-LD — a small script block — rather than microdata woven into your HTML. It can sit in the head or the body; search engines do not care. Several blocks are fine, and you can connect them by giving each entity an @id and referencing it, so your Service points to your LocalBusiness instead of describing the business twice. Validate with Google's Rich Results Test and the Schema.org validator before shipping, and again after any theme change.

What are the common mistakes?

  1. Markup that contradicts the page. Machines cross-check. Mismatched hours or addresses erode exactly the trust you were trying to build.
  2. Template leftovers. Agency-built sites sometimes ship with another client's name or city still in the JSON-LD. Read your own markup once.
  3. Generic Organization when a specific LocalBusiness subtype exists and fits.
  4. FAQPage markup on pages with no visible FAQs — a classic honesty failure.
  5. Set-and-forget. Hours, staff, and services change; markup that fossilizes becomes misinformation with your name on it.

None of this is a ranking trick. Schema is simply the difference between making machines infer your facts and handing those facts over labeled. If you are curious what engines currently believe about your business — and where the markup gaps are — an audit through a visibility platform like Speak Local will surface them. The fix list usually starts with the four types above.

Speak Local
The Speak Local TeamWe measure how machines see local businesses — and write down what we learn.

Quick answers

Do I need schema markup if I already have a Google Business Profile?
Yes. Your Business Profile feeds Google's map results, but schema markup describes your website itself, and the two corroborate each other. Answer engines cross-reference your site, your profile, and directory listings; when all of them agree on your name, address, hours, and services, machines can treat your business as one confident entity instead of several uncertain ones.
Should I use JSON-LD or microdata for local business schema?
Use JSON-LD. Google explicitly recommends it, and it is far easier to maintain: the markup lives in one small script block instead of being woven through your visible HTML. That separation means a theme redesign will not silently break your structured data, and you can validate or update everything in one place without touching page layout.
Can schema markup hurt my rankings?
The markup itself will not hurt you, but dishonest markup can. Marking up reviews you did not collect, FAQ content that is not visible on the page, or details that contradict your site can cost you rich-result eligibility and, in serious cases, trigger a manual action. Keep every property truthful and matching what visitors actually see.