LocalBusiness schema markup: a JSON-LD guide for local SEO, hours, geo and multi-location pages
Required and recommended properties, a clean JSON-LD example, opening hours patterns, department markup, validation steps and the review rule.

LocalBusiness schema is JSON-LD markup that tells Google your business name, address, opening hours, telephone, website and related details. Google's documentation requires name and address and recommends properties such as openingHoursSpecification, geo, telephone, url and priceRange. Use the most specific subtype, keep every value identical to the visible page and your Business Profile, validate with the Rich Results Test and expect no guaranteed ranking boost.
- Google lists name and address as the required LocalBusiness properties, and recommends opening hours, geo coordinates, telephone, url, price range and others.
- Use JSON-LD, choose the most specific LocalBusiness subtype, and add only data that is visible and accurate on the page.
- Review and aggregateRating properties are for sites that collect reviews of other local businesses, not for marking up reviews of your own business.
- Geo coordinates need at least five decimal places, and telephone numbers should include the country and area code.
- Markup supports understanding and eligibility for features. It does not guarantee rankings, knowledge panels or carousels.
What is LocalBusiness schema, and what does it do for local SEO?
LocalBusiness is a Schema.org type that describes a physical business or organization serving a local area. Google reads it as structured data to understand your business details, such as hours, departments and contact information, which can support features like knowledge panels and local results in Search and Maps.
How does Google describe the purpose of the markup?
Google's local business structured data page says the markup tells Google about a business's hours of operation, departments within a business and reviews for the business, and that this can show up in features such as the knowledge panel and business carousels. Features and eligibility change, so treat the page as the authority and check its last update, which at the time of writing is September 8, 2026.
Does markup replace a Google Business Profile?
No. The Business Profile is the primary source for local pack presence, while the website markup is a supporting signal that confirms entity details. Google's page does not discuss the profile, so the practical advice here is to keep both consistent, as the checklist for Business Profile optimization describes.
Where does structured data fit in a local SEO plan?
Local visibility depends on relevance, distance and prominence, as the explanation of the local map pack shows. Markup helps with relevance and clarity by stating the entity facts in a machine-readable form. It sits alongside citations, reviews, content and links, and cannot compensate for missing fundamentals.
Will schema improve my rankings?
Google does not state that LocalBusiness markup is a ranking factor. It improves understanding and can make a page eligible for enhanced displays. Judge it by accuracy and consistency, not by a promised rank change.
Which businesses benefit most?
Single-location firms with a clear address, multi-location brands that need each location described precisely, restaurants and shops with opening hours, and service-area businesses that want their contact entity understood. Our local SEO and Google Business Profile services include schema as part of the foundation.
Does a service-area business without a storefront qualify?
It can use LocalBusiness markup with the address it publishes publicly. If you hide your address on your profile, avoid publishing a conflicting one in markup, and keep what you show consistent.
Which properties does Google require and recommend?
Google's page names two required properties, name and address, and a list of recommended ones that add useful detail. Include as many accurate recommended properties as you can support from visible page content.
What do the properties look like in a table?
| Property | Status in Google's guidance | Practical notes |
|---|---|---|
| name | Required | Use the real-world business name, as on signage and the profile |
| address (PostalAddress) | Required | Include street, locality, region, postal code and country |
| openingHoursSpecification | Recommended | Single object or array; supports seasonal and late-night hours |
| geo (latitude, longitude) | Recommended | At least five decimal places for each coordinate |
| telephone | Recommended | Include country and area code |
| url | Recommended | Must be a working link to the business's page |
| priceRange | Recommended | Short text under 100 characters, such as a currency symbol range |
| department | Recommended | Nested LocalBusiness entries for distinct departments |
| menu, servesCuisine | Recommended for food businesses | Menu URL and cuisine types |
| review, aggregateRating | Recommended only for sites that collect reviews of other local businesses | Do not mark up reviews of your own business |
Why is the review rule so important?
Google's guidance limits review and aggregateRating to sites that collect reviews of other local businesses. Marking up your own business's reviews, often called self-serving reviews, breaks the guidelines and can cost you rich results. Display genuine reviews on the page for customers, but do not wrap them in LocalBusiness review markup for your own entity.
What does "most specific subtype" mean?
Schema.org organizes LocalBusiness into subtypes such as Dentist, Plumber, Electrician, Restaurant, Store, LegalService, AccountingService, RealEstateAgent and HVACBusiness. Google recommends using the most specific type that fits, because it describes the business more precisely. You can list multiple types as an array, but Google says the additionalType property is not supported.
How do you choose between similar subtypes?
Pick the subtype that matches your primary business, and verify it exists on Schema.org. If none fits exactly, use the nearest parent, such as ProfessionalService or HomeAndConstructionBusiness, instead of inventing a type.
How should you format addresses and phone numbers?
Use PostalAddress with streetAddress, addressLocality, addressRegion, postalCode and addressCountry. Write the telephone with the country code and area code, for example in international format. Keep the characters identical to the visible page and to your profile, and match the pattern used in local citations, since consistency across the web supports entity recognition.
What if the business has several phone numbers?
Use the primary customer-facing number in markup, and match it to the one on the page and the profile. Mark departments with their own numbers inside department entries when they differ.
What does a correct JSON-LD example look like?
A correct example uses a specific subtype, includes required properties, adds recommended properties that are visible on the page and validates without errors. The sample below is illustrative: replace every value with your own.
What is a clean example for a single-location dentist?
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Brightside Family Dental",
"url": "https://www.example.com/",
"telephone": "+1-614-555-0142",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "120 Maple Street",
"addressLocality": "Columbus",
"addressRegion": "OH",
"postalCode": "43215",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 39.96118,
"longitude": -82.99879
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "08:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "08:00",
"closes": "13:00"
}
]
}
</script>
This sample is fictional. The business name, address, phone number and coordinates do not refer to a real practice.
Where does the code go?
In the HTML of the page that describes the business, usually the home page or the location page, inside a script tag of type application/ld+json. Google's documentation provides JSON-LD examples, and JSON-LD is the simplest format to maintain.
How do you handle opening hours properly?
Google describes several patterns. Group days with identical hours into arrays. For hours that cross midnight, such as a bar open until 2 a.m., use an opens value of the evening time and a closes value past midnight in the form documented. For open all day, use 00:00 to 23:59, and for closed all day, use 00:00 to 00:00. For seasonal closures and holiday hours, use validFrom and validThrough with dates in YYYY-MM-DD form. Always update the markup when real hours change.
Which hours mistakes are common?
Leaving old holiday hours in place, using the wrong time format, listing hours that differ from the page or the profile and forgetting that a split shift needs separate entries.
How should you add geo coordinates?
Provide latitude and longitude with at least five decimal places, taken from a reliable map source for the actual entrance or business location. Imprecise or rounded coordinates reduce usefulness. For service-area businesses without a public storefront, think carefully before publishing precise coordinates for a private address.
Can you get coordinates from the profile?
You can read them from a map for the same location, then verify that the pin matches the address.
How do you mark up multiple locations and departments?
Give each location its own page and its own LocalBusiness markup, and describe departments as nested entities. Avoid putting every location's details on one page with one block of markup.
What is the right pattern for multi-location brands?
Create a unique, useful page for each real location, with its own address, hours, telephone, map and local content, and add LocalBusiness markup describing only that location. Link the location pages from a store locator or hub page, and keep names consistent with each location's profile. Our multi-location SEO service builds this structure, and the same warnings about thin or duplicated pages apply, as the analysis of scaled content abuse explains.
Should a brand have a parent Organization markup too?
Yes, on the home page, describing the organization with its name, logo and contact points, while each location page carries its own LocalBusiness markup.
How does department markup work?
Use the department property to nest a LocalBusiness for a distinct department, for example a pharmacy inside a supermarket. Google says to name it "{store name} {department name}", such as a store name followed by Pharmacy, and to use the brand name alone if the department has its own brand. Give each department its own hours and telephone if they differ.
Is department markup needed for a normal clinic?
Usually not. Use it when a department has distinct hours, contact details or a distinct brand.
What about service-area businesses?
Use the address you publish, or omit address fields you do not want public only if your profile also hides them, and describe the areas you serve in visible page content. Keep consistent details across the site, markup and profile, as the discussion of falling calls with stable rankings shows how inconsistent details quietly cost contacts.
Can you list service areas in markup?
Schema.org offers areaServed, which can describe regions. Google's page does not list it as a recommended property, so use it for clarity, and rely on visible content and profile settings for the main signal.
How do you implement and deploy LocalBusiness markup safely?
Generate the JSON-LD from the same data that fills the visible page, test it before release and monitor it afterwards. A single source of truth prevents the most common failure, which is markup that drifts away from what customers see.
Which implementation methods work?
Hand-written JSON-LD on a small site, a CMS or SEO plugin that outputs markup from fields, a template that builds markup from a location database or a tag manager that injects it. Hard-coded values go out of date, so prefer templates tied to data. If you inject markup with scripts, confirm that Google sees it in the rendered HTML, as the guide to Googlebot, rendering and the DOM explains.
Is tag manager injection acceptable?
It can work, but static server-rendered markup is more dependable, because it does not rely on script execution or a container being published correctly.
How do you validate it?
Google says to validate with the Rich Results Test and then check the page with the URL Inspection tool. Use the Rich Results Test for syntax and eligibility, and the URL Inspection tool to see what Google actually rendered and indexed. Also use the Schema Markup Validator for general Schema.org checks, and review the enhancement reports in Search Console after deployment.
What errors appear most often?
Missing required properties, invalid time formats, telephone numbers without a country code, coordinates with too few decimals, a url that does not resolve, unsupported properties such as additionalType and markup describing content that is not on the page.
How do you keep markup and profile consistent?
Treat the website, the Business Profile, the main citations and the markup as one data set. When hours, phone number, address, name or services change, update all of them in one checklist. The practical value of consistency appears in measurement, as the framework in measuring SEO in the AI era helps you tie changes to calls, directions and enquiries.
Who should own the data?
One named person, usually the marketing or operations lead, with a monthly check and a review after every change of hours or location.
Which guidelines and risks should you respect?
Follow Google's Search Essentials, the general structured data guidelines and any feature-specific guidance. Google says violations may lead to a manual action, so accuracy matters more than volume of markup.
What counts as a violation?
Marking up content that is not visible to users, marking up misleading or fake details, using the wrong type to gain features, adding self-serving reviews and publishing details that conflict with the page. Markup should describe what visitors can see. If a property cannot be shown honestly, leave it out.
What happens after a manual action?
Search Console reports it. Fix the markup, document the changes and submit a reconsideration request, as the discussion of site reputation abuse and manual actions describes for related policy issues.
What about restricted carousels and features?
Google notes that some features, such as the restaurant carousel, are limited to selected providers. Adding markup does not guarantee participation. Do not buy services that promise carousel placement through markup alone.
Can you rely on markup for knowledge panels?
Knowledge panels draw on many sources. Markup helps, but cannot guarantee a panel or control its contents.
How does this relate to trust and quality?
Accurate, consistent business data is part of showing that a business is real and reliable, a theme developed in the guide to E-E-A-T for local professionals. Combine markup with visible credentials, named staff, genuine reviews and honest content.
Is it worth the effort for a small site?
Yes. It takes an hour or two to implement correctly, costs nothing and reduces ambiguity about who you are and where you operate.
Which LocalBusiness subtype fits your industry?
Schema.org offers dozens of LocalBusiness subtypes. Choosing the closest accurate one gives search systems a clearer picture of what you do, and it keeps your markup aligned with your Business Profile category and your page content.
Which subtypes suit common local industries?
| Industry | Typical subtype | Notes |
|---|---|---|
| Dental practice | Dentist | Add department entries for orthodontics only if distinct hours or contacts exist |
| Law firm | LegalService or Attorney | Choose the one that matches how you describe the firm |
| Accountant or tax adviser | AccountingService | Pair with Person markup for named professionals on team pages |
| Plumber, electrician, roofer | Plumber, Electrician, RoofingContractor | Service-area firms should mirror their public address choices |
| Heating and cooling | HVACBusiness | Describe emergency hours accurately |
| Restaurant or cafe | Restaurant, CafeOrCoffeeShop | Add menu URL and servesCuisine |
| Retail shop | Store or a specific store subtype | Use department markup for in-store services |
| Salon, spa, med spa | HealthAndBeautyBusiness, BeautySalon, DaySpa | Keep claims about treatments factual |
| Real estate agency | RealEstateAgent | Use the office address and hours |
What if your business spans two types?
Google says you can list multiple types as an array. Keep the primary type first and make sure each type genuinely applies.
How do industry pages and markup work together?
The markup should echo the vocabulary of the page: the service names, the professionals, the place names. A dental page that discusses implants, cosmetic dentistry and emergency care should reflect the same entities in headings and copy, as the services for dental SEO, legal SEO and financial advisor SEO do in their own structures. Markup alone cannot make thin copy relevant.
Should named professionals have Person markup?
Where you display real team profiles with credentials, Person markup can describe them. Do not invent staff or credentials, and keep details verifiable.
How do you keep name, address and phone consistent across the web?
Create one master record for each location and update every surface from it: website, markup, Business Profile, citations, social profiles and feeds. Consistency removes ambiguity about which business is which and prevents costly mismatches.
What belongs in the master record?
The exact business name, street address in a fixed format, suite or unit number, telephone number in international format, primary website URL, opening hours including holidays, category, services, payment methods, geo coordinates and any department details. Store it in a spreadsheet or a location database, with a change log and a named owner.
How do you handle suite numbers and abbreviations?
Choose one format, such as "Street" or "St.", and use it everywhere. Small variations are usually tolerated, but needless differences invite confusion in listings and data aggregators.
How do you audit consistency?
Search for your business name and phone number, list every profile and directory that appears, compare each field with the master record and record mismatches. Fix the highest-visibility surfaces first: the Business Profile, the website and the leading directories. The walkthrough on building local citations explains where to look and how to correct duplicates.
What if an old address still appears somewhere?
Update it, or contact the owner of the listing. If a duplicate profile exists, merge or remove it through the platform's process.
How does consistency connect with reviews and calls?
Wrong numbers and hours cost real contacts, and mismatched details make it harder to attach reviews to the correct entity. After a change of address or number, test the live listing and the website, and track calls to confirm that nothing broke. The approach in the guide to Google reviews strategy assumes a stable, accurate entity to attach reviews to.
How often should you re-audit?
Every quarter for active businesses, and immediately after any move, rebrand or change in hours.
How do you measure the effect of LocalBusiness markup?
Track validation status, enhancement reports, impressions and clicks for location pages, Business Profile actions such as calls and directions and enquiries from local searches. Compare against a baseline and note dates.
Which reports help?
Search Console's enhancement reports show detected items and errors. The Performance report shows impressions and clicks for location pages and local queries. Business Profile performance data shows calls, direction requests and website clicks. Analytics and call tracking add conversion data. Record the date of each markup change.
How soon will you see results?
Google needs to recrawl the page, which can take days to weeks. Visible changes in displays are not guaranteed, and benefits are typically about clarity and consistency, not dramatic movement.
How do you separate markup effects from other changes?
Change one thing at a time where possible, keep a log and compare with pages that have not changed. Be honest in reports about what you can and cannot attribute, as in the discussion of how long SEO takes.
What if nothing changes?
That is normal. Markup supports understanding, and results depend on relevance, distance, prominence, reviews and content. Keep the data accurate and invest in the larger signals.
What does a LocalBusiness markup project look like in practice?
This is a fictional example that illustrates the method. The outcomes are invented.
What was the situation?
A fictional three-location physiotherapy group had no structured data. The website showed old opening hours at two sites, the Business Profile phone number differed from the website at one, and the group page listed all three addresses in a single paragraph.
What did the audit find?
Hours and phone numbers conflicted across the site, profile and two directories. Location pages were thin, with copied text. The home page had no organization markup, and an SEO plugin had added a generic LocalBusiness block with the wrong address.
What did they change?
They corrected the hours and phone numbers everywhere, gave each location a unique page with its own team, parking details and local content, generated Physiotherapy-appropriate markup from a location database with name, address, geo, telephone, url and hours, added Organization markup on the home page, removed the faulty plugin block, validated every page with the Rich Results Test, inspected samples in Search Console and logged the dates. They then tracked calls, direction requests and enquiries for three months, noting that the changes were part of a wider clean-up and that the effect of markup alone could not be isolated.
What was the lesson?
The real gain came from consistent data. The markup made that consistency explicit and easy for machines to read.
Which LocalBusiness schema mistakes should you avoid?
Most errors come from copying templates, neglecting updates and marking up what visitors cannot see. All are preventable with a short checklist.
What are the most frequent mistakes?
Using the generic LocalBusiness type when a specific subtype exists, copying another business's markup and forgetting to change values, marking up your own reviews, using wrong time formats, leaving outdated holiday hours, inconsistent business names, duplicate markup from a plugin and theme, one block for several locations and markup that does not match the visible page.
Which mistake is the easiest to detect?
Duplicate or conflicting blocks. View the rendered source, count the JSON-LD blocks and check that they agree.
How do you build a durable routine?
Add markup checks to your release checklist, run a monthly validation crawl, review hours before holidays and after any move and keep a record of changes. A broader technical review, such as the technical SEO audit checklist, includes structured data checks.
How do titles and links support the markup?
Clear page titles, discussed in the guide to title links and rewrites, and consistent entity names in internal links, covered in the guide to internal linking and anchor text, reinforce the same facts that the markup states.
How does LocalBusiness markup support AI-generated local answers?
AI features that describe places and recommend businesses draw on public information, including profiles, reviews and website content. Clear, consistent entity data on your site makes it easier for those systems to describe your business accurately, even though no markup can guarantee a mention.
What can you control?
You can make your business name, address, services, hours and contact details unambiguous and identical across the website, markup and profile. You can publish helpful service pages with clear headings and honest descriptions. You can answer common customer questions in plain language. These actions help search systems and people alike, as the guide to AI Overviews and AI Mode explains.
Does markup make you more likely to be cited?
Google has not said so. It reduces ambiguity, and pages must still be crawlable and indexable to be eligible for any feature.
What can you not control?
Which businesses a generated answer chooses, how it summarizes reviews or when it shows local suggestions. Test relevant local prompts manually, record what appears and fix inaccuracies at the source, using the approach in the framework for measuring SEO in the AI era.
What if an answer shows wrong hours or details?
Correct the data on your site and profile, check citations for conflicting entries and use the platform's feedback options. Allow time for systems to refresh.
How does AH SEO Agency help with local structured data?
We audit your site, profile and citations for conflicting details, choose the right subtypes, build markup from a single data source, validate it and monitor the effect on calls and directions. We follow Google's documentation and avoid markup that breaks its guidelines.
Where do you start?
Start with local SEO support, ask for a technical review through technical SEO or request a free SEO audit that checks your local data.
Summary: how do you use LocalBusiness schema well?
Use JSON-LD with a specific subtype, include name and address plus accurate recommended properties, mirror the visible page and the Business Profile, avoid self-serving reviews, validate and maintain it.
- Google requires name and address and recommends hours, geo, telephone, url, price range and more.
- Geo needs five or more decimals, and telephone numbers need country and area codes.
- Review markup is for sites that review other local businesses.
- Validate with the Rich Results Test and inspect with the URL Inspection tool.
- Consistency across site, profile and markup is the real win.
Related guides
Local SEO explained: how the Google map pack works
How the Google map pack ranks businesses: relevance, distance and prominence explained, what you can influence and a practical plan to improve local visibility.
Read the guideLocal SEOGoogle Business Profile optimization checklist: step by step
A field-by-field Google Business Profile checklist: name, categories, hours, services, photos, reviews and maintenance, with the mistakes that cause suspensions.
Read the guideLocal SEOLocal citations: what they are and which ones matter
What local citations are, whether they still matter, which ones are worth having and how to audit, clean up and maintain your listings for consistent local SEO.
Read the guide
Local SEOReview recency and sentiment: what Google says, what studies suggest and what to do
What Google confirms about reviews and local ranking, what is only correlation about recency and sentiment, and how to collect and answer reviews honestly.
Read the guideFrequently asked questions
Which LocalBusiness properties are required by Google?
Google's local business structured data guidance lists name and address as required. It recommends openingHoursSpecification, geo, telephone, url, priceRange, department and, for food businesses, menu and servesCuisine.
Can I mark up reviews of my own business?
No. Google says review and aggregateRating properties are for sites that collect reviews of other local businesses. Marking up your own reviews as self-serving can lose rich results. Show genuine reviews on the page without that markup.
What format should I use?
JSON-LD placed in the page HTML is the format Google's examples use and the simplest to maintain. Use the most specific LocalBusiness subtype, and note that additionalType is not supported.
How precise must geo coordinates be?
Google says latitude and longitude should each have at least five decimal places.
How do I test my markup?
Validate with the Rich Results Test, then check the page with the URL Inspection tool to see what Google rendered. Review Search Console enhancement reports after deployment.
Does LocalBusiness schema improve my local ranking?
Google does not describe it as a ranking factor. It helps Google understand your business details and can support eligibility for features, but it does not guarantee rankings, knowledge panels or carousels.
Not sure where your site stands?
Send us your website and we will tell you what we would fix first, including if SEO is not your best next step.