Introduction
To add local business schema to your website, you place a short block of JSON-LD code on the page that describes your business, with at least your business name and full address, plus your opening hours, phone number, map coordinates and page URL. Then you test it in Google's Rich Results Test, publish it, and check the live page with the URL Inspection tool in Search Console.
I wrote this for owners who keep hearing about "schema" and want to know what it is, what goes in it and how to check it was done properly. It follows Google's own documentation for LocalBusiness structured data, and it is honest about what schema can and cannot do. It is not a shortcut to the top of Google, and no one can promise that it is.
What is local business schema?
Local business schema is structured data: a standard way of labelling facts on a page so search engines read them without guessing. The vocabulary comes from schema.org, where LocalBusiness is a type of Organization. Your contact page already says where you are and when you open; the schema says the same thing in a format a machine can parse.
Google explains that when people search for a business on Search or Maps, they may see a knowledge panel with its details, and that LocalBusiness structured data lets you tell Google about business hours, departments and more. Note the word "may". Google's documentation says plainly that it does not guarantee that features using structured data will show up in results. Treat schema as clear labelling, not a ranking lever.
Which properties does Google need?
Google's LocalBusiness guide lists only two required properties and a longer set of recommended ones. Required means your markup is not eligible for the feature without them. Recommended means Google uses them if they are there.
| Property | Status | What to put in it |
|---|---|---|
name | Required | Your business name, exactly as it appears on the page and your signage |
address | Required | A PostalAddress with street, locality, region, postal code and country; Google says the more of these you give, the better |
telephone | Recommended | Your main customer number, with country code and area code |
url | Recommended | The full URL of this location's page; it must be a working link |
geo | Recommended | Latitude and longitude, each with at least 5 decimal places |
openingHoursSpecification | Recommended | Days, opening and closing times, plus seasonal closures if needed |
department | Recommended | A nested entry for each department with its own hours or phone |
review, aggregateRating | Only for review sites | Only if your site collects reviews about other local businesses |
Google also recommends following the Organization fields, such as your logo, because LocalBusiness is a subtype of Organization.
Step 1: pick the most specific business type
Google asks you to use the most specific LocalBusiness subtype you can, such as Restaurant, DaySpa or HealthClub, rather than the generic type. Browse the subtypes listed under LocalBusiness on schema.org and pick the closest match: a bakery is a Bakery, a clinic might be a MedicalClinic, a clothes shop a ClothingStore. If nothing fits, plain LocalBusiness is fine.
If you genuinely do several things, list the types as an array, for example ["Electrician", "Plumber"]. Google notes that the additionalType property is not supported for this, so don't rely on it.
Step 2: write the JSON-LD block
Google accepts JSON-LD, Microdata and RDFa, and its general structured data guidelines recommend JSON-LD. It sits in one script tag, separate from your design, so a developer can add or change it without touching the layout. Here is a template for a single shop. Replace every value with your own real details; the name, phone and coordinates below are placeholders.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Bakery",
"name": "Your Bakery Name",
"image": ["https://www.example.com/photos/shopfront.jpg"],
"url": "https://www.example.com/",
"telephone": "+91-522-0000000",
"address": {
"@type": "PostalAddress",
"streetAddress": "Shop 4, Example Road",
"addressLocality": "Lucknow",
"addressRegion": "Uttar Pradesh",
"postalCode": "226001",
"addressCountry": "IN"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 26.84670,
"longitude": 80.94620
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"opens": "09:00",
"closes": "21:00"
}
]
}
</script>
A few details matter more than they look:
- Match the page. The address, phone and hours in the code must be the same ones a visitor sees on the page. Google's guidelines say not to mark up content that is not visible to readers.
- Coordinates to 5 decimal places. Google asks for at least that precision. Copy them from your pin on Google Maps rather than typing a rounded figure.
- Full phone format. Include the country code and area code, so the number works for someone calling from anywhere.
- One location per page. If you have two branches, give each its own page and its own block, with each
urlpointing to that branch's page.
Step 3: get opening hours right
Hours are where most markup goes stale. Google's guide covers the common cases:
- Different weekday and weekend hours: use two
OpeningHoursSpecificationentries, one per group of days. - Open past midnight: use a single entry where
closesis earlier thanopens, for example opening at 18:00 and closing at 03:00. - Open 24 hours: set
opensto 00:00 andclosesto 23:59. - Closed all day: set both
opensandclosesto 00:00. - Holiday or seasonal closure: add
validFromandvalidThroughdates. Leaving them out means the hours apply all year.
Day names can be written in short form, such as Monday, or as full schema.org URLs. Google accepts both. Whenever your hours change, change the page and the markup together. The general guidelines say Google won't show a rich result for time-sensitive content that is no longer relevant.
Free quote · reply within 24 hours
Want us to look at your rankings?
Send your site and the searches you want to win. You get a written plan and a fixed quote within 24 hours.
Step 4: add it to your site
Where it goes depends on how your site is built. Google says you can add LocalBusiness markup to any page, but it makes more sense on a page about your business, such as the home page of a single-location business or each branch's location page.
- WordPress: many SEO plugins have a local business section. Google itself notes that a plugin built into your CMS can be the easier route. Check the output afterwards, because plugins sometimes leave fields empty or default to the generic type.
- Shopify: themes often output Product and Organization markup but not LocalBusiness. A developer can add the script to the theme layout or to a page template for your store's physical location.
- Next.js or another custom site: render the JSON-LD in the page's HTML from the same data that fills your contact section, so the two never drift apart. Google also has guidance for generating structured data with JavaScript if your site builds pages in the browser.
If you sell products online as well, product markup is a separate job; our guide on why Shopify products are not showing on Google covers that side.
Step 5: test before and after publishing
Google's process has three checks, and each one catches different problems.
- Rich Results Test before you publish. Paste the code or the URL into Google's Rich Results Test and fix any critical errors. Google says fixing non-critical warnings can improve quality but is not needed for eligibility.
- URL Inspection after you publish. In Search Console, inspect the live page to see how Google sees it. The page must not be blocked by robots.txt, a
noindextag or a login. - Be patient. Google notes it can take several days after publishing for a page to be found and crawled. Submitting a sitemap helps keep Google informed of changes.
If the page itself is not indexed, schema will not help until that is fixed. Start with our checklist for a website that is not showing on Google.
Mistakes that make Google ignore your markup
The Rich Results Test checks syntax. It cannot check honesty, and that is where most real problems sit. Google's structured data guidelines warn that breaking the quality rules can stop correct markup from showing, or get it treated as spam, and the LocalBusiness guide says a violation can lead to a manual action.
- Marking up your own star rating. Google's review snippet documentation limits LocalBusiness and Organization ratings to sites that capture reviews about other businesses. Adding
aggregateRatingfor your own shop, built from testimonials you chose, is a self-serving review and won't earn stars. - Hidden or different details. An address in the code that is not on the page, or hours that differ from the ones shown, breaks the rule that markup must be a true representation of the page.
- Locations you don't have. Listing a city where you have no premises misrepresents your business. Google's guidelines say not to misrepresent your ownership, affiliation or primary purpose.
- Copy-pasted templates. Make sure no plugin sample business name or theme demo address is left in the output. Read every value before you publish.
Honest markup sits well alongside the other things that make a visitor trust you; our post on website trust signals covers those.
Frequently asked questions
Will local business schema improve my Google ranking?
No one can promise that. Schema helps Google understand your business details, and Google says it does not guarantee that structured data features will appear. Use it because it makes your details clear and consistent, not as a ranking tactic.
Do I need schema if I already have a Google Business Profile?
They do different jobs. Your Business Profile is managed in Google's own tools, while schema describes the details on your website. Keep the name, address, phone and hours identical in both so nothing conflicts.
Which page should carry the markup?
Google allows any page but suggests a page with information about your business. For one location, the home page or contact page works. For several branches, put each branch's markup on its own location page.
Can I add my Google reviews as star ratings in the schema?
Not for your own business. Google's review snippet rules only allow LocalBusiness ratings on sites that collect reviews about other businesses, so marking up your own ratings won't produce stars and breaks the guidelines.
How do I know it is working?
Run the live URL through the Rich Results Test and the URL Inspection tool. If both read the markup without critical errors, it is in place. Whether a rich feature appears is up to Google.
Conclusion
If you run a physical business, local business schema is worth adding: pick the most specific type, fill in your real name, address, phone, hours, coordinates and URL in JSON-LD, keep it identical to what the page shows, and check it with the Rich Results Test and URL Inspection. Leave out self-made star ratings and any location you don't have. If you would like us to add it properly as part of a new site or a fix to your current one, our website development services cover it, and we have delivered 100+ projects. Message us on WhatsApp at +91 73482 28167 and you get a fixed written quote within one working day.
Free quote · reply within 24 hours
Want a fixed price for your project?
Send your site and the searches you want to win. You get a written plan and a fixed quote within 24 hours.
Keep reading on SEO
- How much does it cost to build a SaaS MVP in 2026?What does a SaaS MVP cost to build in 2026? The factors that drive cost and time, what an MVP should leave out, and how to keep the first version small.
- Why visitors don't trust your website: 12 credibility signals that fix itWhy visitors don't trust your website, and 12 credibility signals that fix it: real proof, clear contact details, honest policies and reviews.
- Website Accessibility Checklist for Small BusinessesA website accessibility checklist for small businesses: the six fixes that catch most barriers, the new WCAG 2.2 checks, and how to test without guesswork.

