Local Business Schema Markup: Setup and SEO Checklist
Implement accurate LocalBusiness JSON-LD, validate it with Google, and avoid misleading addresses or review markup for local service businesses.
Implement accurate LocalBusiness JSON-LD, validate it with Google, and avoid misleading addresses or review markup for local service businesses.
A local business website might clearly say where a company operates and when it answers the phone, but its structured data can still be missing, outdated or contradictory. LocalBusiness schema markup provides a machine-readable description of a business entity using properties such as name, location, URL and opening hours. It helps search systems understand the information already published on a site; it is not a shortcut to a guaranteed ranking or star rating.
This guide explains when LocalBusiness JSON-LD is appropriate, what Google expects, how to install and validate it, and what service-area businesses should do when a residential address must remain private. It is designed for U.S. contractors, storefront businesses, WordPress site owners and agencies responsible for accurate local SEO.
Structured data is a set of descriptive fields embedded in a page, often as a JSON-LD script. A LocalBusiness entity tells crawlers about a specific business and, when appropriate, its physical location. Google's LocalBusiness documentation describes supported types, properties, examples and the steps to test the markup.
A Google Business Profile is a separately managed listing that can appear in Maps and Search. LocalBusiness schema describes information on your website. Publishing schema does not create, verify, or repair your Business Profile. The site and profile should both represent the real business accurately, but neither channel replaces the other. If your existing listing is underperforming, see Google Business Profile ranking checks.
No. Google explicitly states that structured data enables eligibility for certain appearances, not a guarantee that the feature will display. A page can be valid and still lack a rich result because Google considers page quality, content relevance and other requirements. Treat schema as a clarity and eligibility task, not as a promise of a map-pack position.
Use the most specific valid LocalBusiness subtype when it accurately describes the establishment, such as Plumber for a plumbing company. Mark up a real physical location with its corresponding contact details and hours. Google's guidelines require an address in PostalAddress format for the LocalBusiness rich-result feature and recommend properties such as URL and telephone. Only include hours that match the actual schedule.
Many plumbers, cleaning companies and roofers visit customers instead of serving visitors at an office. Google Business Profile guidance tells such businesses to hide residential or non-customer-facing addresses from their public profile. That privacy expectation matters when creating publicly downloadable JSON-LD too. If there is no address appropriate for publication, do not place a guessed office, rented mailbox or private home address into markup. A truthful Organization entity with real public details may be safer than inventing a LocalBusiness address merely to pass a test. Consult Google's Organization documentation for organization-level properties.
For a company with two legitimate staffed locations, give each location its own accurate business data and URL where the site has a corresponding location page. Do not duplicate a single office address across invented city locations. Google supports defining each location as its own LocalBusiness entity; the content on each page should describe that specific location.
| Property | Use | Important check |
|---|---|---|
| name | Real business name | Do not add keyword-stuffed names |
| address | Physical PostalAddress for eligible locations | Never invent an address or expose one that should remain private |
| url | Canonical business or location page URL | Use a live URL representing the location |
| telephone | Primary customer-facing phone number | Use a valid business number with country code |
| openingHoursSpecification | Actual hours open or available for the location | Account for holidays and seasonal changes |
| geo | Real coordinates, if appropriate | Verify the location and precision |
Keep the information consistent with the public page. If the website says Monday to Friday, but the JSON-LD claims Sunday appointments, the markup is not a reliable description. If a business's address changes, update the page, its structured data, and applicable listings through the proper channels.
The following is a deliberately fictional example for explaining the format. The business name, address, telephone and domain are not a real client, and should never be copied unchanged into a production site. This example is only suited to an eligible business that publicly operates from a real address; a service-area-only operator must review the privacy and eligibility notes above.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Sample Plumbing Company (Fictional)",
"url": "https://example.com/",
"telephone": "+1-212-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Example Street",
"addressLocality": "Sample City",
"addressRegion": "NY",
"postalCode": "10000",
"addressCountry": "US"
},
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "17:00"
}
}
</script>JSON-LD is normally placed in a script of type application/ld+json inside the document's head or body. It is data, not a visible HTML address block. That does not make it private: anyone can inspect the page source. Do not confuse 'not visibly rendered' with 'not published.'
First inspect the source of the homepage and location page to see whether an SEO plugin or theme already emits Organization or LocalBusiness JSON-LD. If it does, update that existing graph or configuration instead of adding conflicting copies through another plugin or code snippet. Use a staging environment where possible, and confirm the output after caches are cleared.
Add JSON-LD through the site's supported SEO or head-management component, using real business data from a single source of truth. For server-rendered or prerendered sites, inspect the final HTML sent to crawlers rather than relying only on the editor preview. Confirm that the page's canonical URL and structured-data URL refer to the intended business page.
A single company-level Organization entry may belong on a global homepage, while a genuine location-specific LocalBusiness entry belongs on its location page. Repeating conflicting addresses across every blog post creates ambiguity. A local-business article that happens to mention Dallas does not make the publisher a Dallas location.
A structured-data testing tool cannot confirm whether a company genuinely operates at an address. Google notes that technical tests may not catch misleading or irrelevant markup. Pair automated validation with a human review of business records and page content.
After deployment, use Google Search Console URL Inspection to check the indexed or live page, crawl accessibility and relevant page information. Ensure the URL is not blocked by robots.txt or a noindex directive. Submit an updated sitemap when appropriate; crawling and indexing are not immediate. Google's general structured-data guidelines also explain why valid markup does not guarantee rich results.
A virtual office, mail drop or somebody's home may not qualify as the storefront described by the markup. Do not publish false locations. For service-area businesses without a storefront, follow the official Business Profile service-area rules and review whether Organization markup better fits the publicly available facts.
Google's review-snippet rules exclude self-serving star snippets for LocalBusiness or Organization pages controlled by the reviewed business, including embedded third-party review widgets. Do not add aggregateRating to create stars that are ineligible, misleading, or unsupported. Legitimate testimonials can still be presented visibly where appropriate, without deceptive structured-data claims.
Business names are factual fields, not a list of target keywords. A plumber called “Smith Plumbing” should not become “Smith Plumbing Best Emergency Drain Cleaning NYC Near Me” in JSON-LD. Write useful service copy on the page; keep business identity properties accurate.
Only mark up the entity relevant to that page. A blog post about local SEO should have its own appropriate article metadata and should not pretend to be the physical branch of every business used as an example.
If you operate across service areas without staffed branch locations, begin with the local SEO guide for service-area businesses. For recurring technical checks, see SEO tools for small businesses. Structured data should reinforce those fundamentals, not substitute for them.
No. Google Maps and Business Profile presence depend on separate eligibility, verification and ranking systems. Schema describes your website; it does not automatically create or verify a listing.
Google's current documentation lists the name and PostalAddress fields as required for its LocalBusiness feature. If you cannot publish an appropriate real address, do not manufacture one. Consider truthful Organization markup and the overall site experience instead.
Not necessarily. Give each page appropriate metadata about what it actually represents. Consistent organization data can be reused when relevant, while a location's specific facts should appear on the corresponding location page.
OneScale System can inspect the business information your website already publishes, check duplicate JSON-LD, review Search Console findings and prepare an implementation plan suited to your business model. Explore the local SEO services or book a strategy call. We will not promise stars, rankings or rich-result appearances that Google does not guarantee.
Official references reviewed November 3, 2026: LocalBusiness structured data, Organization structured data, review snippet rules, and Business Profile eligibility guidelines.

GoHighLevel Expert, WordPress Developer & Digital Automation Specialist
Part of the One Scale System team, helping small and local businesses grow with websites, CRM, automation, and digital marketing done for you.
Get a free professional website and a lead system that captures every customer — built and run for you.

Use Search Console, URL Inspection, PageSpeed Insights and enquiry records to choose useful SEO fixes without chasing disconnected scores.
8 min readTrack Google Business Profile website visits in GA4 with consistent UTM links, a setup checklist, lead-event tests and fixes for confusing reports.
10 min read
Map roofing SEO keywords to repair, replacement and commercial pages. Use a practical worksheet to check service fit, existing URLs and useful next steps.
6 min read