The Schema Markup a Local Business Actually Needs

A local business needs only a short list of schema types: LocalBusiness (or its most specific subtype) to establish who and where you are, Service for what you sell, FAQPage for the questions you answer on the page, and Person for the humans behind the work. If those four are correct and kept up to date, machines have 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. Most of that catalog isn't meant for you. It exists so that everyone from airlines to zoos can describe themselves in a shared vocabulary, and a plumber needs maybe five entries from it. Below are those five and what each one 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 most of what answer engine optimization comes down to: a machine that is unsure about your hours, your service area, or whether you are the same business mentioned on three directories will cite a business it is sure about instead.

Which type matters most?

LocalBusiness, or better, the most specific subtype that fits: Dentist, HVACBusiness, Electrician, Plumber, Restaurant, RoofingContractor, AutoRepair, 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. Don't invent 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 lets machines read the experience and expertise your site describes, and it takes one accurate paragraph per person.

Review markup

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, so mismatched hours or addresses undo the trust the markup was meant 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, which claims content the page doesn't show.
  5. Set-and-forget. Hours, staff, and services change, and markup nobody updates ends up publishing wrong information under your name.

Schema isn't a ranking trick. It gives machines your facts already labeled, so they don't have to infer them. If you want to know 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.

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 be confident they are looking at one business rather than several.
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 see.

Scan your own site

Everything on this blog is measured by the Speak Local scan. Run it on your own domain and it reads your pages the way Googlebot, GPTBot, ClaudeBot and PerplexityBot do, then scores what it finds.

Free, in under a minute. No account.  Or start a plan from $49/mo

Google SearchChatGPTPerplexityGeminiAI Overviews