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:
name: exactly as it appears on your Google Business Profile, not a keyword-stuffed variant.- address, telephone, geo: matching your site footer, your profile, and your directory listings. That consistency is the same discipline good local SEO has always demanded; schema just makes it machine-checkable.
openingHoursSpecification: update it when your hours change, holidays included.areaServed: the cities or regions you cover.sameAs: links to your Google profile and social accounts, which helps machines merge your scattered mentions into one entity.
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?
- Markup that contradicts the page. Machines cross-check, so mismatched hours or addresses undo the trust the markup was meant to build.
- Template leftovers. Agency-built sites sometimes ship with another client's name or city still in the JSON-LD. Read your own markup once.
- Generic Organization when a specific LocalBusiness subtype exists and fits.
- FAQPage markup on pages with no visible FAQs, which claims content the page doesn't show.
- 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.