Local Business Schema Markup: JSON-LD Guide + Example
By Nemanja Vukmirović, Lizzard Solutions. Last updated November 4, 2026.
A customer searches for your business and Google shows the wrong hours, or an AI assistant can't say where you are. Often the information is on your site, but only as text written for people, not as data a machine can read with certainty.
Local business schema markup fixes that. This guide explains what it is, which fields Google actually uses, and gives you a copy-ready JSON-LD example you can adapt in about 30 minutes, plus the mistakes that make Google ignore it.
TL;DR
- Local business schema markup is a small JSON-LD code block that tells search engines your name, address, phone, hours and location as structured data.
- Google requires only
nameandaddress. Hours, phone, URL and coordinates are recommended and worth adding. - Test the code with Google's Rich Results Test before and after publishing, and keep it identical to what visitors see on the page.
What Is Local Business Schema Markup?
Local business schema markup is structured data, usually written in JSON-LD, that describes a physical business using the schema.org LocalBusiness type: its name, address, phone, opening hours, coordinates and website. Search engines and AI tools read it to understand and display your business details accurately.
The vocabulary comes from schema.org's LocalBusiness definition, which search engines maintain together. JSON-LD is the format Google recommends for most sites: one <script> block in your page, separate from the visible HTML, so it doesn't change your design.
Key takeaway
Schema markup doesn't add new information. It labels the information you already show, so machines can't misread it.
Action for today: find the page on your site that shows your address and hours. That's where the markup will go.
Why Schema Markup Matters for Local Search and AI Answers
Google's local business structured data documentation says it can use this markup to show business details such as hours and departments in Search. It doesn't guarantee a rich result, but it removes guesswork about who you are and where you operate.
The same clarity helps AI assistants. When ChatGPT, Gemini or Perplexity summarise a business, consistent facts across your site, your Google Business Profile and directories make the answer more reliable. Our guide to the AI visibility check covers the wider picture.
| Without schema | With schema |
|---|---|
| Search engines guess hours from page text | Hours are stated in a fixed format |
| Address may be read from a footer or a map image | Address is split into street, city, postcode and country |
| Business type is unclear (clinic? shop? agency?) | A specific type such as Dentist or Plumber is declared |
| Social profiles look unrelated | sameAs links connect them to one business |
Action for today: search your business name on Google and note which details are missing or wrong.
Which Fields Google Uses: Required vs Recommended
According to Google, only two properties are required. The rest are recommended, and most small businesses should add them.
| Property | Status | What to enter |
|---|---|---|
name | Required | Your business name exactly as on signage and Google Business Profile |
address | Required | PostalAddress with street, city, postcode and country code (RS for Serbia) |
telephone | Recommended | Main customer number with country code |
url | Recommended | The working URL of this location's page |
openingHoursSpecification | Recommended | Days plus opening and closing times |
geo | Recommended | Latitude and longitude with at least 5 decimal places |
priceRange | Recommended | Short text such as "$", under 100 characters |
Google also advises using the most specific subtype available, such as Dentist, Restaurant or Plumber, instead of plain LocalBusiness. You can browse the subtypes on the schema.org page linked above.
Key takeaway
Name and address are the minimum. Hours, phone and URL are where customers notice mistakes, so add them too.
Action for today: write down your exact name, address, phone and hours in one place before touching any code.
Copy-Ready JSON-LD Example (Worked Example)
Here's a complete example for an imaginary dental studio in Niš. Every value is a placeholder. Replace each one with your real details, and delete any line you can't fill in correctly.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Example Dental Studio",
"url": "https://www.example.com/",
"telephone": "+381 18 000 000",
"image": "https://www.example.com/images/clinic.jpg",
"priceRange": "$",
"address": {
"@type": "PostalAddress",
"streetAddress": "Example Street 10",
"addressLocality": "Niš",
"postalCode": "18000",
"addressCountry": "RS"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 43.32000,
"longitude": 21.89000
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:00",
"closes": "20:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "14:00"
}
],
"sameAs": [
"https://www.facebook.com/example",
"https://www.instagram.com/example"
]
}
</script>How to adapt it in 5 steps
- Change
@typeto the most specific type that fits your business. - Replace name, URL, phone and image with your real values. Use the international phone format.
- Fill in the address fields separately. Use the two-letter country code, for example
RS. - Copy your coordinates from Google Maps (right-click your location) and keep five decimal places.
- Edit the opening hours. Closed days can simply be left out.
Watch out
The coordinates and phone number above are placeholders, not a real business. Never publish markup with example values left in.
Action for today: copy the example into a text file and replace the values with your own.
Where to Add the Code and How to Test It
Paste the script block into the <head> or <body> of the page that shows your business details, usually the homepage or contact page. On WordPress and similar systems, an SEO plugin or a header-scripts field usually does the job without editing templates.
- Run the URL or code through Google's Rich Results Test and fix every error it reports.
- Check general syntax with the Schema Markup Validator, which tests any schema.org type.
- In Google Search Console, use URL Inspection on the page and request indexing.
- Make sure the page isn't blocked by robots.txt or a noindex tag. Our post on AI crawlers and robots.txt shows how to check.
Key takeaway
A validator passing means the code is readable. It doesn't mean Google will show a rich result, and that's normal.
Action for today: run your page through the Rich Results Test now, even before you add markup, to see the starting point.
Common Schema Mistakes That Get Markup Ignored
Google's general structured data guidelines say markup must describe content that's visible to users. Most problems we see in audits come from breaking that rule or from copy-paste leftovers.
- Markup doesn't match the page. Hours in the code say 20:00 while the page says 18:00. Keep one source of truth.
- Self-written star ratings. Google recommends
aggregateRatingandreviewonly for sites that collect reviews about other businesses. Don't add your own rating to your own markup. - Wrong or generic type. Using
Organizationfor a shop with a physical address loses the local details. - Different name or phone than your Google Business Profile. Inconsistent details weaken trust across search and AI answers.
- Placeholder values left in. Example coordinates or phone numbers are surprisingly common after a template install.
A structured data check is part of every SEO audit for small business we recommend, alongside indexing, titles and speed.
Action for today: compare your name, address and phone on your site, your Google Business Profile and your markup, and fix any difference.
Checklist Before You Publish
- ☑ The most specific business type is used
- ☑ Name and address match your signage and Google Business Profile
- ☑ Phone uses the international format
- ☑ Opening hours match the visible page
- ☑ Coordinates have five decimal places
- ☑ No ratings or reviews about your own business in the markup
- ☑ No placeholder values left
- ☑ Rich Results Test shows no errors
If you'd like the whole site reviewed, start with our free website audit guide to see what else is worth checking.
Action for today: tick each box above, then publish.
Local Business Schema Markup: FAQ
What is local business schema markup?
Local business schema markup is structured data, usually JSON-LD, that describes a physical business with the schema.org LocalBusiness type: name, address, phone, opening hours, coordinates and website. Search engines and AI tools read it to understand and display your business details accurately instead of guessing them from page text.
Does schema markup improve Google rankings?
Google doesn't present structured data as a ranking boost. It helps Google understand your page and can make it eligible for richer displays of your business details, but Google doesn't guarantee any rich result. Treat it as accuracy and visibility work, not a shortcut to higher positions.
Where should I put LocalBusiness JSON-LD?
Put it on the page that shows your business details, usually the homepage or contact page, inside the head or body as a script block. For several locations, give each location its own page with its own markup and URL.
How do I test my schema markup?
Paste the page URL or the code into Google's Rich Results Test and fix every error. The Schema Markup Validator checks general schema.org syntax. After publishing, use URL Inspection in Google Search Console to confirm Google can read the page.
Local business schema markup takes about half an hour and makes your name, address, phone and hours unambiguous for Google and AI assistants. Use the example above, test it, and keep it in sync with your page. Not sure what your site already sends? Our SEO check includes structured data.
Want us to check your structured data?
Send us your website. We'll review your schema markup and SEO basics and reply with a free, no-obligation list of fixes.
Request a free check