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.

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:
- Google's Rich Results Test shows whether Google can read your structured data and whether the page is eligible for any rich result types.
- 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
@idsuch as the page URL plus#business. Link them to the main organization withparentOrganizationif 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
areaServedwith the towns or counties you cover. - Restaurants. The
Restauranttype supports properties likeservesCuisine,menuandacceptsReservations. Keep the menu link pointing to a page that is actually up to date. - Medical and dental practices. Types such as
DentistorMedicalClinicexist. 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,AccountingServiceorFinancialService. Individual practitioners can also be described with aPersontype 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.
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.
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.
