Technical SEO
    Target: local business schema markup

    Local Business Schema Markup: A Correct JSON-LD Implementation Guide

    Learn how to implement LocalBusiness structured data accurately, connect locations and avoid common schema mistakes.

    Google Review AI Editorial TeamUpdated September 19, 202612 min read

    LocalBusiness schema is a machine-readable way to describe a real business and, when appropriate, its physical locations. It can help search systems interpret names, URLs, addresses, contact details and relationships that are already visible to users. The important word is describe. Structured data should not be treated as a hidden SEO channel where a company can add services, ratings, opening hours or locations that the page does not support. A correct implementation starts with a clean business entity model, chooses the most appropriate schema type, uses stable identifiers, matches visible facts, and is maintained whenever the business changes.

    What LocalBusiness structured data actually does

    Structured data gives search systems explicit labels for information that might otherwise require interpretation. A page may visibly show a restaurant name, street address, telephone number and opening hours. LocalBusiness markup can describe those same facts using defined properties. This can reduce ambiguity, especially when a site contains several locations or when the organization name differs from the branch name shown locally.

    Structured data does not replace the page. If the only place a customer can discover the address is inside JSON-LD, the implementation is incomplete. The visible page should remain the primary user experience. Likewise, adding a city, service or review score only to markup does not create legitimate relevance. Search engines publish guidelines about what structured data may describe and decide independently whether it contributes to any search feature.

    Think of schema as a factual interface between your content and machines. A clean interface is useful because it is predictable and maintainable. A deceptive interface creates technical debt and policy risk.

    Choose the right entity before choosing the type

    The first decision is not whether to use Dentist, Restaurant or ProfessionalService. It is which real-world entity the page represents. A corporate homepage may represent the parent organization. A location page may represent one branch. A practitioner page may represent a person. A service page usually represents a service or article topic rather than a second copy of the local business.

    Write down the entities and relationships before coding. For a five-location dental group, for example, the parent brand can be one organization and each clinic can be a distinct local entity with its own address, phone and hours. The implant service should not become a fake sixth business simply because it has a landing page.

    This entity-first approach prevents one of the most common schema problems: emitting a LocalBusiness object on every page with slightly different names, URLs and descriptions, which can make the site look like it contains dozens of separate businesses.

    Select the most specific appropriate LocalBusiness subtype

    Schema.org provides many LocalBusiness subtypes. Use a specific subtype when it accurately describes the business and is useful for the implementation. A dental practice can use Dentist, a hotel can use Hotel, and a restaurant can use Restaurant. When no precise subtype fits, LocalBusiness or another broader organizational type may be appropriate.

    Do not force a subtype because it sounds commercially attractive. A home-service company should not choose a type that misrepresents how it operates. Also remember that Schema.org vocabulary and search-engine feature support are not identical. A property can exist in Schema.org without being used for a particular Google search feature. Check current search documentation when eligibility matters.

    The type should remain stable unless the business itself changes. Constantly switching types to test rankings confuses governance and rarely addresses the real local SEO issues of relevance, prominence and accurate information.

    Use a stable identifier for every entity

    An identifier helps different pages refer to the same entity. A common pattern is a canonical URL plus a fragment, such as the homepage followed by an organization identifier, or a location URL followed by a local-business identifier. The exact naming convention matters less than consistency. Once selected, reuse the identifier when the same entity appears elsewhere in your structured data.

    For multi-location businesses, every branch should have its own stable identifier because each branch is a distinct place with different contact facts. The parent organization should have a separate identifier. Connect the relationships rather than making every location look like an unrelated company.

    Stable identifiers become particularly valuable during redesigns and content expansion. Templates can reference the same entity instead of silently creating duplicates. If URLs change during migration, plan redirects and identifier updates deliberately so the structured data continues to reflect the site's canonical model.

    Keep name, URL, address and phone aligned

    Core local facts should match what users see. Use the business name actually represented on the page rather than inserting extra service keywords. Use the canonical public URL for the entity. The address should describe the real customer-facing or operational location according to applicable platform rules. The phone should be a current public contact route for that location.

    Formatting can vary slightly between sources without creating a meaningful identity problem. Suite abbreviations and punctuation are less important than factual consistency. A wrong postcode, former phone number or duplicated location is a real problem. Schema should follow the corrected source of truth rather than preserve outdated data because it was already coded.

    For service-area businesses that do not receive customers at an address, avoid using structured data to create the appearance of a storefront. Model the business honestly and follow current platform guidelines about address visibility.

    Represent opening hours and temporary changes responsibly

    Opening hours are high-impact operational information. Encode normal hours only when they are maintained reliably. If different departments or services follow different schedules, the visible page needs enough explanation to prevent users from assuming the wrong availability. Holiday or exceptional hours may require other mechanisms or profile updates depending on the platform.

    Do not let structured data become the forgotten copy of business hours. If operations change on the website and Business Profile but the JSON-LD still says twenty-four hours, customers and machines receive conflicting evidence. Treat hours as shared operational data and update all surfaces through a controlled process.

    For businesses with frequent seasonal schedules, consider centralizing hour data in the site architecture so visible components and markup are generated from the same source. This reduces manual drift.

    Describe images, logos and official profiles carefully

    Use representative, accessible images that belong to the real business. Logos should identify the organization consistently. Structured data can reference image and logo URLs where appropriate, but the assets should remain stable and publicly accessible. Avoid using a promotional graphic as the only identity image if it changes every campaign.

    The sameAs property is often misunderstood. It should point to official or authoritative profiles that clearly represent the same entity, not to every directory listing found in a citation audit. A selective list of genuine social profiles, knowledge sources or authoritative organization pages is easier to maintain and less likely to create accidental identity connections.

    If a profile belongs only to one branch, do not automatically attach it to every location. Entity relationships should mirror reality.

    Handle ratings and reviews without inventing eligibility

    Ratings are sensitive because businesses naturally want star information to appear in search. Do not add aggregateRating or review properties simply because the data exists somewhere. The implementation must reflect visible, eligible content and follow current search structured-data policies. Self-serving review markup and unsupported ratings can create policy issues.

    If the page legitimately displays first-party review information, verify whether the structured-data type and search feature rules permit the intended use. Keep counts and values synchronized with the visible page. Do not copy a Google Business Profile rating into markup and present it as site-owned review data unless the rules and source attribution support that implementation.

    When in doubt, leave rating markup out. Accurate business identity and content are more important than chasing a decorative result.

    Connect parent organizations and locations

    A group with multiple branches should communicate hierarchy. The parent organization can be represented on corporate or home pages, while branch pages represent the local entities. Use visible language and internal links to show the relationship. Structured data can then reflect that relationship with appropriate organization properties rather than duplicating the parent data inside every location without distinction.

    Each location page should own its local facts. Address, local phone, hours, services, staff, accessibility and directions should not be scattered across unrelated pages. This makes the markup simpler because the structured data can summarize one coherent local page.

    If a location closes, update or retire the entity intentionally. Do not leave live markup on an archived page suggesting the branch still operates.

    Do not create hidden service-area locations with schema

    Some marketers try to add multiple LocalBusiness objects for cities a company serves, even when no real branch exists there. This is not a substitute for legitimate local presence. A service-area business can explain where it operates through useful coverage content, but schema should not invent addresses or entities.

    If the business has a real dispatch base that customers do not visit, represent it according to the site and platform rules. If it merely travels into a city, use service-area content, service descriptions and relevant local evidence. The difference matters because a place entity implies more than market availability.

    Honest modeling also improves lead quality. Search and answer systems are less likely to send users to a nonexistent office, and customers can understand whether the company actually serves their postcode.

    Validate JSON-LD in the deployment environment

    A code sample can be valid in isolation and still fail after deployment. Templating systems may escape characters, duplicate script blocks, inject empty fields or generate the wrong branch data. Test rendered production pages, not only local components. Use structured-data testing tools and inspect page source or rendered DOM to confirm the JSON-LD is present as expected.

    Validate a representative set: homepage, one location, one service, one article and any template with special markup. For a multi-location site, test several branches to catch data-binding errors. Build automated checks for required fields where possible.

    Revalidate after theme upgrades, migrations, CMS changes and major data imports. Structured data is code, and code can regress.

    Create a maintenance checklist for structured data

    Assign ownership. Marketing may own descriptions, operations may own hours, engineering may own templates and local managers may own branch facts. Define how a factual change flows through the site. When a phone number changes, the visible page, JSON-LD, profile and major listings should not depend on separate memory.

    Schedule periodic checks for broken image URLs, wrong canonicals, obsolete profiles, retired services, duplicate entities and malformed markup. Keep a simple change log for major location moves or rebrands. This helps future editors understand why identifiers and redirects exist.

    The strongest LocalBusiness schema implementation is not the one with the most properties. It is the one that remains accurate six months after launch.

    Test schema against business scenarios, not only syntax

    A validator can confirm that JSON-LD is syntactically valid while the business model is still wrong. Add scenario testing to technical QA. Ask what happens when a branch closes for a week, a phone number changes, a new location opens, one service is removed, or holiday hours override the normal schedule. Verify that the visible page and structured data update together and that old values do not remain in cached template fragments.

    For multi-location sites, compare several branches rather than testing only the flagship location. Confirm that each page emits the correct address, identifier, URL and local contact details. Also inspect canonical tags and internal links because schema can be technically perfect on a page that search engines should not index as canonical.

    Treat these checks as regression tests after deployments. The goal is not merely to pass a rich-results tool once; it is to preserve factual alignment as the site and business evolve.

    Frequently asked questions

    Does LocalBusiness schema improve local rankings directly?

    Structured data can help search systems understand page information, but it does not guarantee a ranking increase. Local visibility still depends on relevance, distance, prominence, content quality, profiles and other signals.

    Should LocalBusiness schema appear on every page?

    Not as a separate new entity on every page. You can reference the same business where relevant, but avoid creating duplicated or inconsistent business objects across templates.

    Can I add cities I serve as fake business locations in JSON-LD?

    No. Do not invent local entities or addresses. Service-area coverage should describe real operations without implying storefronts that do not exist.

    Is JSON-LD better than other formats?

    JSON-LD is widely used because it is easier to maintain separately from visible HTML, but the essential requirement is accurate, valid structured data that matches the page.

    How often should schema be checked?

    Check after every significant template or business-data change and perform periodic audits. Locations, hours, phones and URLs are especially likely to drift over time.

    Official sources

    Related guides

    Turn review management into a repeatable system

    Use Google Review AI to organize review replies, local visibility and reputation workflows from one place.

    Start free