What is Local Business Schema?
Local Business Schema is structured data using the Schema.org LocalBusiness type or one of its more specific subtypes. It describes a business that serves customers from a physical location, within a local area or through a hybrid of the two.
Examples include:
- shops and restaurants;
- hotels and leisure venues;
- dentists, solicitors and accountants;
- plumbers, electricians and cleaning services;
- garages and repair businesses;
- salons, gyms and healthcare practices;
- branches of a larger company.
LocalBusiness is a subtype of Organization and Place. It can therefore describe both the business entity and the place where it operates.
Common properties include:
name,urlandimage;telephoneandaddress;geocoordinates;openingHoursSpecificationandpriceRange;areaServedwhere relevant;departmentandsameAsfor official profiles.
The markup should describe a genuine operation represented on the page. It should not be used to manufacture virtual locations or make a nationwide website appear local to every town.
What does LocalBusiness structured data help with?
It identifies the business and location
A company can have several branches with the same brand name. LocalBusiness structured data associates one branch with its own address, phone number, URL, hours and coordinates.
It clarifies practical customer information
Opening hours, telephone numbers and location details are facts people may need before visiting or contacting the business. Structured data expresses them in a consistent form machines can process.
It can support eligible search experiences
Google can use Local Business structured data when understanding local businesses and may show business information in Search or Maps experiences. The page and markup must meet the applicable requirements, and a particular presentation is never guaranteed.
It improves consistency at scale
A multi-location template can generate accurate markup for hundreds of branches from one location database. A crawler can then find missing or inconsistent records across the estate.
It supports machine-readable local identity
AI-powered search and discovery systems need to distinguish locations, service areas and opening times. Accurate structured data can reduce ambiguity, particularly when the same brand operates in several places.
LocalBusiness, Organization and Google Business Profile
These components are related but perform different jobs.
Organization describes the wider entity
Organization can represent the parent company, charity, institution or online business behind the website. Its full object normally belongs on the homepage or About page.
LocalBusiness describes a local operation
LocalBusiness represents the storefront, office, practice or locally operating service. A multi-location company can have one Organization object and a distinct LocalBusiness object for each branch.
The objects can be connected with a stable relationship such as parentOrganization when appropriate.
Google Business Profile manages the listing
A verified Google Business Profile lets an eligible local business manage its appearance in Google Search and Maps, including its address or service area, category, hours, phone number, photographs and reviews.
Website markup does not create, verify or control that profile. Local Business Schema complements it by publishing structured facts on the business's own website.
Keep all three aligned
The website, structured data and Business Profile should agree about material facts:
- business name and branch URL;
- phone number;
- customer-facing address or service area;
- ordinary opening hours;
- whether the location is open, moved or permanently closed.
Minor formatting differences are normal. Conflicting businesses, locations or hours create a real customer problem and make machine interpretation less reliable.
How to choose a LocalBusiness subtype
Use the most specific Schema.org subtype that accurately describes the business. Examples include Restaurant, Store, Dentist, LegalService, AccountingService, Electrician, Plumber, AutoRepair, HairSalon, HealthClub and Hotel.
A restaurant should normally use Restaurant rather than the broad LocalBusiness. A dental practice can use Dentist where that accurately represents the location.
Do not choose a subtype solely because it contains a valuable keyword. The type describes what the entity is, not every service it would like to rank for.
When one business genuinely belongs to several supported types, Google's guidance allows an array of types. It does not support using additionalType as a substitute for that purpose in Local Business rich-result markup:
"@type": ["Electrician", "Plumber", "Locksmith"]Use several types only when each one is factually true of the same operation. A long list of loosely related categories weakens clarity.
Which local business details should you include?
name
Use the real-world business or branch name. Do not append services, towns or promotional text unless they are genuinely part of the public name.
url
Use the canonical URL for the location or business page. For a multi-location site, this is normally the specific branch page rather than the generic homepage.
address
Use a nested PostalAddress containing the applicable parts of the real customer-facing address: streetAddress, addressLocality, addressRegion where applicable, postalCode and addressCountry. The information should match the visible page and the way the business represents the location publicly.
telephone and geo
Use a number that reaches that individual business or location, including the international country and area code. GeoCoordinates can supply latitude and longitude; check that the pin represents the real entrance or location, not the centre of a postcode or the head office of the chain.
openingHoursSpecification
Use structured opening and closing times for each applicable day. Represent seasonal or exceptional periods carefully.
image, priceRange and sameAs
Use a representative image that can be crawled and viewed. A short relative range such as ££ can indicate general pricing where it is meaningful. Link only official profiles for that same business or location; do not mix the parent company's profile with a branch-specific entity without considering the relationship.
A Local Business Schema JSON-LD example
This example describes a fictional London dental practice:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://example.com/locations/london/#business",
"name": "Example Dental London",
"url": "https://example.com/locations/london/",
"image": "https://example.com/images/example-dental-london.jpg",
"telephone": "+44-20-7946-0123",
"priceRange": "££",
"address": {
"@type": "PostalAddress",
"streetAddress": "10 Example Street",
"addressLocality": "London",
"postalCode": "EC1A 1AA",
"addressCountry": "GB"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.51561,
"longitude": -0.09193
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:30",
"closes": "17:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "13:00"
}
],
"parentOrganization": {
"@id": "https://example.com/#organization"
}
}
</script>Replace every example detail with verified information. Coordinates, phone numbers and opening times need particular care because customers may rely on them directly.
The @id gives the branch a stable identity within the structured-data graph. It is separate from the parent organisation's identifier.
How to mark up opening hours
Opening hours are easy to publish and easy to let become stale.
Standard hours
Group days with identical hours into one OpeningHoursSpecification object:
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday"],
"opens": "09:00",
"closes": "17:00"
}Google accepts full Schema.org day URLs and shorter day names. Keep one consistent style across the implementation.
Overnight hours, closures and seasonal changes
For a period running past midnight, the closing time can be earlier than the opening time within the same specification. Google's example represents Saturday 18:00 until Sunday 03:00 as one Saturday opening period.
Google documents 00:00 to 23:59 for an all-day opening and 00:00 to 00:00 for a full-day closure. Use these values only when they accurately describe the business.
validFrom and validThrough can define a period for seasonal hours or a closure. Update temporary schedules after the period ends.
Coordinate exceptional hours with the visible page and Google Business Profile. A customer should not see three different answers for a bank holiday.
Appointment-only operations
Do not invent normal opening hours for a business that only works by appointment. Represent the visible operating model accurately and use the applicable type-specific guidance.
How to handle multiple locations and departments
Give each location its own page
A useful branch page should contain location-specific information such as:
- name and address;
- local telephone number and opening hours;
- services or facilities;
- travel, parking and accessibility information;
- photographs, map and directions;
- the relevant LocalBusiness object.
A list of town names with nearly identical copy is a weak substitute for genuine location pages.
Give each location a unique identity
Use a stable location URL and @id. Do not reuse the head-office identifier for every branch.
Connect the parent organisation
Use a relationship such as parentOrganization when the branch belongs to the wider company. Keep the brand and branch name consistent with how customers recognise the location.
Mark up departments separately when needed
Some businesses contain departments with their own hours or phone numbers, such as a pharmacy within a department store. Google's guidance supports the department property. Provide the department's distinct details and use an appropriate subtype.
Avoid doorway-style location pages
Structured data cannot make a low-value doorway page useful. Each indexable location page should help someone visit, contact or choose that actual operation. Represent each location consistently with the parent entity in Organization Schema, then verify the output using a schema validator.
How to handle service-area businesses
A service-area business visits or delivers to customers and does not necessarily receive them at its operating address. Examples include plumbers, cleaners and mobile repair services.
Protect private addresses
Google Business Profile guidance says a business that does not serve customers at its address should remove that address from the public profile and use a service area instead.
Do not expose a private home address in Schema markup simply to fill an address property. Structured data should agree with visible, appropriate public information.
Describe the real service area
Schema.org provides areaServed for the geographic area where a service is available. Use real towns, regions or defined areas that the business genuinely serves.
Do not list dozens of distant cities merely to create local relevance. The service-area description should agree with the website and Business Profile.
Distinguish hybrid businesses
A hybrid business receives customers at a staffed storefront and also travels or delivers to them. It can publish the real address and describe the service area when both are accurate.
Treat Business Profile and Schema rules separately
Business Profile eligibility and service-area settings are controlled in Google Business Profile. Schema.org markup on the website cannot create an eligible storefront or verify a service area.
For a business without a public address, review the current requirements for any desired Local Business search feature before assuming that general Schema.org validity means rich-result eligibility.
Can a local business add review Schema?
A business may show genuine reviews to visitors, but Google does not display self-serving review snippets for LocalBusiness, Organization or their subtypes when the reviewed entity controls the page.
This restriction also applies when a business embeds reviews about itself through a third-party widget. The widget does not make the markup independent.
Do not add an AggregateRating to the business homepage or location page merely to show stars for the business's own reviews in organic results.
The rule differs for sites that collect reviews about other local businesses. Those publishers need to follow Google's review-snippet guidelines and ensure the review content and markup are genuine, visible and about the correct entity.
Review markup on the website is also separate from reviews in Google Business Profile. Removing self-serving Schema does not remove legitimate Business Profile reviews.
Local Business Schema for LLMs and AI visibility
Local questions often require precise entity and location information:
- Is the business open now?
- Which branch is closest?
- Does the company serve this postcode?
- What number reaches the local office?
- Is this location a shop, clinic or service-area operator?
Local Business Schema can state those facts explicitly. It can connect one branch with its address, coordinates, hours, subtype and parent organisation.
For stronger AI and local entity clarity:
- use the real-world business and branch name;
- give each location a stable URL and
@id; - publish current phone numbers and hours;
- keep the website and Business Profile aligned;
- use accurate coordinates and public address information;
- describe real service areas without keyword-driven expansion;
- connect branches to the correct parent organisation;
- remove closed, moved or duplicate locations promptly.
The content still needs to be crawlable, indexable and useful. Structured data cannot guarantee that an LLM will mention the business, that an AI assistant will recommend it or that it will rank in the local pack.
How to test Local Business Schema
Test the code during development
Use the Rich Results Test for Google's supported Local Business feature requirements and the Schema Markup Validator for the broader object.
Test the live location page
Confirm that the rendered page contains the correct branch object and that Google can fetch it. Check the response code, canonical and robots directives.
Verify the real-world facts
Compare the name, address, phone number, coordinates and opening hours with the visible location page, contact or store-finder information, current Google Business Profile and internal location database.
Test edge cases
Include a normal storefront, a branch with different weekend hours, a temporarily closed location, a department with separate contact details, a service-area or hybrid business, and a moved or recently rebranded branch.
Follow every URL
Check the location URL, images, menu where applicable and official profile links. A validator can accept a URL that leads to an error or the wrong branch.
How to audit LocalBusiness markup across a website
Build the expected location list
Start with the current operational location database. Identify the canonical page and Business Profile for each site, branch or service area.
Compare locations with detected markup
Find live location pages without LocalBusiness markup, closed locations still publishing active markup, the same @id reused across branches, one head-office address copied onto every page, missing or default telephone numbers, hours that differ between the visible page and JSON-LD, and pages using the broad type where a useful subtype exists.
Check technical eligibility
Review response codes, redirects, canonical targets, indexability and crawl depth. A branch hidden behind broken store-finder links may have valid markup but poor discovery.
Audit linked resources
Find broken images, menus, maps and official profiles. Check whether old domains or redirected URLs remain inside the objects after a migration.
Group issues by template or region
One regional template may format postcodes incorrectly. One franchise feed may omit weekend hours. Segment the errors so the responsible source can be fixed.
Sample real-world accuracy
Automated crawling finds structural patterns. Human review confirms that a branch exists, receives customers at the published address and keeps the displayed hours.
Audit local business details with Clearcrawl
Clearcrawl shows the location information published by the live site, including old pages and conflicting templates that may not appear in the current CMS list.
Use the crawl to discover the full affected set. Use the Business Profile, source records and a human review to confirm that each real-world fact is current.
How to fix and verify Local Business Schema
- 01Establish the active location record
Confirm the operation's name, subtype, URL, phone, public address or service area, coordinates and hours.
- 02Separate the parent and branches
Give the wider organisation and each local operation distinct identities. Connect them deliberately rather than copying one object everywhere.
- 03Correct the source data
Update the location database, CMS and Business Profile. Resolve moved, merged and permanently closed branches before editing the JSON-LD.
- 04Repair the template
Generate the correct subtype,
@id, NAP details and hours for each location. Handle departments, exceptional hours and absent optional data deliberately. - 05Test representative cases
Validate a normal storefront, special-hours branch, department and service-area example where applicable.
- 06Publish and inspect the live output
Check the rendered JSON-LD and visible page. Follow the image and profile links and verify the map coordinates.
- 07Recrawl the location section
Compare coverage and issue counts with the baseline. Confirm that closed or duplicate pages have been handled appropriately.
- 08Monitor operational changes
Repeat the check after holiday schedules, office moves, new branches, closures, rebrands or store-finder migrations.
Common mistakes
Online-only companies and general organisations do not become local businesses simply because they publish an address. Choose the type that reflects the operation.
Each real location needs its own identity and details. Repeated head-office data misdescribes the local pages.
Do not expose a home or non-customer address simply to complete the markup. Represent service-area businesses accurately and protect private information.
Keep visible hours, structured data and Business Profile information aligned, including seasonal and holiday changes.
Google does not show review snippets for a business marking up reviews about itself, including reviews embedded through a third-party widget.
LocalBusiness markup can clarify facts and support eligibility. It does not guarantee map rankings, rich results, LLM citations or AI recommendations.
Frequently asked questions
What is Local Business Schema?
Local Business Schema is structured data using LocalBusiness or a more specific subtype. It describes a local operation through details such as its name, URL, telephone number, address, coordinates and opening hours.
Does Local Business Schema improve local rankings?
It can help search engines understand the business and its location, but it is not a guaranteed ranking factor or shortcut into the local pack. Accurate pages, a verified Business Profile and wider local-search signals still matter.
Should every business location have separate Schema markup?
Yes, each genuine location represented on the website should have its own accurate identity and location-specific details. A dedicated, useful branch page is normally the clearest implementation for a multi-location site.
Can a service-area business use LocalBusiness Schema?
It can describe a genuine local service operation, but it should not expose a private address or invent storefront details. Keep the visible service area and Google Business Profile accurate, and check current feature requirements for the intended use.
Does Local Business Schema help AI visibility?
It can provide AI-powered systems with clearer machine-readable location, contact and opening-hours information. That can reduce entity ambiguity, but it does not guarantee an LLM mention, citation or recommendation.
ClearcrawlCrawl the branch network behind the store finder
Find missing local markup, copied addresses, stale hours and location pages pointing to the wrong canonical URL. Fix the source, validate representative branches and crawl again to confirm the complete location set.
7 free days. See what Clearcrawl can find, then choose the plan that fits your site.
Learn more about Local Business Schema
- Local Business structured data — Google Search Central
- Organization structured data — Google Search Central
- Guidelines for representing a business on Google — Google Business Profile Help
- Manage service areas — Google Business Profile Help
- Self-serving review rich results — Google Search Central
- OpeningHoursSpecification — Schema.org
- Optimising for generative AI features — Google Search Central