Skip to content
Picshaw
Request an AI auditCall Picshaw

Guides & insights

Local Schema Markup: A Practical Guide for Local Businesses

Local Schema Markup: A Practical Guide for Local Businesses ! Geometric illustration of structured business information Local schema markup is a block of structured data on your website that states your business name, address, phone number, hours and services in a format search engines read without guessing.

Published · Updated

Local Schema Markup: A Practical Guide for Local Businesses

Geometric illustration of structured business information

Local schema markup is a block of structured data on your website that states your business name, address, phone number, hours and services in a format search engines read without guessing. You add it as JSON-LD code, test it with free tools, and keep it matched to what the page and your Google Business Profile say. It can make your business easier to understand and eligible for richer results. It does not, on its own, make you rank or get cited by AI tools. This guide shows what to mark up, gives a working example, and explains where schema stops helping.

Picshaw
picshaw.com
Make Your Business Easier to Understand
Picshaw audits website structure and content to identify obstacles that make local businesses harder to discover in AI-powered searches.
Visit Picshaw

TL;DR

  • Local schema markup (LocalBusiness and its subtypes) tells search engines your business details in a machine-readable way. It supports eligibility for rich results; it does not guarantee them.
  • Use JSON-LD, put it on the page it describes, and make every value match the visible page and your Google Business Profile.
  • Add Service markup, linked to your business with the provider property, so your offerings and service area are explicit.
  • For AI search, schema may help systems parse your content, but studies find no proven causal effect. Clear content and real authority still do the heavy lifting.
  • Test with the Rich Results Test and the Schema Markup Validator, then recheck whenever hours, phone or services change.

Table of Contents

What local schema markup actually is

Schema.org is a shared vocabulary for describing things on the web. LocalBusiness is the type for a particular physical business or branch, such as a plumber’s office, a law practice or a restaurant. Structured data is the code that uses that vocabulary on a page.

According to Google’s Local Business documentation, this markup lets you tell Google about details like business hours, departments and reviews, and it makes a page eligible for richer presentation in search. The word is eligible. Google decides what to show.

The practical value is clarity. A human reads your footer and understands that you are an HVAC company in Pasadena open weekdays. A crawler sees text. Markup removes the guesswork by labeling each detail: this is the name, this is the phone, these are the hours.

Is schema markup still relevant?

Yes, with realistic expectations. Google says its systems use structured data it finds on a page to understand the content and to power certain search features, and it recommends JSON-LD as the easiest format to implement and maintain in most cases. That remains the baseline for local sites.

What has changed is how much people expect from it. Schema is a clarity layer, not a ranking lever. A Semrush guide to local business schema notes that it reinforces business information and can help search engines match a business to relevant local queries. Reinforces is the right verb. If your site is thin or your Google Business Profile is inconsistent, markup will not rescue it.

Which type to use: LocalBusiness and its subtypes

Pick the most specific type that honestly describes you. Schema.org has subtypes under LocalBusiness, including Plumber, Electrician, HVACBusiness, LegalService, RealEstateAgent, HomeAndConstructionBusiness and ProfessionalService. A specific type beats the generic parent because it narrows what the entity is.

A few rules we follow:

  • Service-area businesses (a roofer who travels to customers) should still mark up a real business address if the public can see one, and describe the area they cover with areaServed. If you hide your address on your Google Business Profile, think twice about publishing it in markup.
  • Consultants and small agencies often fit ProfessionalService or a more specific subtype. If nothing fits, LocalBusiness itself is acceptable.
  • Multiple locations need one page per location, each with its own markup. Google’s guidance for multi-location businesses is a dedicated page for each branch with unique LocalBusiness markup tailored to that location’s details. If you run several offices, our guide to SEO for multiple locations covers the page structure around it.

The properties worth including

Google’s documentation lists the properties it supports for local business markup, including name, address, telephone, url, geo, openingHoursSpecification and, for sites that review other local businesses, aggregateRating. Here is how to think about them.

Property What to put in it Common mistake
name Your business name exactly as customers and your Google Business Profile know it Adding keywords like “Best Plumber Los Angeles”
address Full PostalAddress: street, city, state, ZIP Missing ZIP or using a different suite format than elsewhere
telephone The number customers actually call, with country code A tracking number that differs from the profile
url The canonical page URL Pointing to a redirected or http version
geo Latitude and longitude of the location Rounded coordinates that land in the wrong block
openingHoursSpecification Days and open and close times Stale holiday or seasonal hours
areaServed The cities or regions you serve Listing the whole state when you serve three neighborhoods
sameAs Links to your Google Business Profile, LinkedIn and other official profiles Linking to directory pages you do not control
image and logo Real, crawlable image URLs Blocked or broken files

Only mark up what is true and visible to users. Hiding details in code that the page never shows is the fastest way to a structured-data guideline problem. And do not mark up reviews you wrote yourself or ratings of your own business on your own pages; the documented aggregateRating use is for sites that review other local businesses.

A local business schema example in JSON-LD

Here is a working pattern for a fictional Los Angeles plumbing company. Replace every value with your own.

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "@id": "https://www.example.com/#business",
  "name": "Example Plumbing Co.",
  "url": "https://www.example.com/",
  "telephone": "+1-310-555-0142",
  "image": "https://www.example.com/images/storefront.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Example Street, Suite 4",
    "addressLocality": "Los Angeles",
    "addressRegion": "CA",
    "postalCode": "90001",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 34.0522,
    "longitude": -118.2437
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "08:00",
    "closes": "17:00"
  }],
  "areaServed": [
    {"@type": "City", "name": "Los Angeles"},
    {"@type": "City", "name": "Culver City"}
  ],
  "sameAs": [
    "https://www.linkedin.com/company/example-plumbing"
  ]
}

Three details matter more than they look. The @id gives the business a stable identifier you can reference from other markup on the site. The @type is the specific subtype, not the generic one. And the phone, address and hours must match the visible page character for character in meaning.

The code goes inside a script tag of type application/ld+json in the page’s head or body. If you use WordPress, Squarespace, Wix or Webflow, check what your theme or SEO plugin already outputs before adding more, so you do not publish two conflicting versions.

Service schema markup and service schema examples

LocalBusiness says who you are. Service markup says what you do. Per Google’s documentation, Service markup describes specific services an organization provides and connects each one to the business through the provider property. Schema.org’s Service type defines areaServed as the geographic area where the service is available, which can be an administrative area or a place.

Service, provider, and geographic coverage relationships

A compact example for one service, referencing the business by its @id:

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Water heater replacement",
  "serviceType": "Water heater installation",
  "description": "Removal of your old tank or tankless unit and installation of a new one, with permit handling where required.",
  "provider": {"@id": "https://www.example.com/#business"},
  "areaServed": {"@type": "City", "name": "Los Angeles"},
  "url": "https://www.example.com/water-heater-replacement"
}

Put this on the page that describes that service, not on the home page for every service at once. One service page, one Service block. That keeps the markup honest and tied to content a reader can see.

For consulting firms and agencies, the same pattern works: name the engagement type (for example, a strategy workshop), describe it in plain language, and point provider at the firm. Avoid stuffing a Service block with sales copy; a one or two sentence description is enough. Service pages that explain scope, process and service area in visible text are also the foundation for local landing pages that earn rankings.

How to test your markup and check what your site already has

Many sites already carry some schema, added by a theme or plugin. Check before you write anything new.

  1. View what exists. Paste your URL into Google’s Rich Results Test, or the generic Schema Markup Validator. Google’s structured data documentation recommends starting with the Rich Results Test to see which Google rich results a page can produce, and the Schema Markup Validator for general schema.org validation.
  2. Read the output. Look for your business type, name, phone, address and hours. Note duplicates: two different LocalBusiness blocks with different phone numbers is a common plugin conflict.
  3. Fix errors first, warnings second. Errors usually mean a required field is missing or malformed. Warnings point to optional properties.
  4. Compare to reality. Open your Google Business Profile, your contact page and your footer. Every detail should agree.
  5. Retest after changes. Any redesign, plugin update or hours change can break or duplicate markup.

If you also want to know why a page is not showing at all, schema is rarely the cause. Start with indexing and content; our practical diagnosis of why a site does not appear in Google walks through that order.

Schema, your Google Business Profile and the rest of local SEO

Schema is one signal among several. Your Google Business Profile, reviews, citations and on-page content all describe the same business, and consistency among them is what matters. Fresh profile activity such as Google Business Profile posts keeps that side of your presence current, while markup keeps your website’s side explicit.

The order we suggest for a small Los Angeles business:

  1. Make the website clear: services, area, prices or price ranges where you can, a real contact path.
  2. Align the name, address and phone across the site and profile.
  3. Add LocalBusiness markup, then Service markup on each service page.
  4. Test, monitor and update.

If you want the wider picture, our page on local SEO for small service businesses covers what sits around markup.

Structured data for AI search and LLMs

This is where claims run ahead of evidence, so here is what the research supports.

  • A 2026 academic study on JSON-LD metadata and ChatGPT visibility found FAQPage and Product schema associated with visibility, but the authors do not claim it proves schema causes the visibility.
  • A cross-platform study by Fischman, Does Schema Markup Predict AI Citation?, found no measurable effect for schema presence, entity richness or schema-to-query alignment. It did find an advantage for Product or Review schema with populated attributes, which matters little for most local service firms.
  • Search Engine Land argues that LLM systems prioritize content relevance and topical authority, and that schema is no substitute for good content.
  • Search Atlas research reaches a similar conclusion: structured data does not make up for weak content or weak site authority when models choose sources.

The sensible reading: schema is cheap, harmless when accurate, and makes your facts unambiguous for any system that parses them. It is not a switch that puts you in an AI answer. What tends to matter more is a page that states plainly what you do, where, for whom and how to reach you. We go deeper on that in AI search visibility for local services and on the practical side in how to make your site eligible for ChatGPT search.

Perspective: schema is the last step, not the first

We see the same pattern in audits of local business sites. An owner has installed a schema plugin, the validator shows green, and the business still does not come up when someone asks an AI tool for a plumber or consultant in their part of LA. The markup was fine. The page it described was vague: no clear service list, no stated service area, a contact form buried three clicks deep.

Perspective: schema is the last step, not the first — overview diagram

Our view is that markup should describe a site that is already clear, not compensate for one that is not. That is why we start with the content and structure, and add structured data once the pages say what they mean. We also would not promise a client that schema will earn an AI citation, because the evidence does not support that promise. What we can promise is a cleaner foundation and specific next steps in plain language.

If you do one thing this week, check that your phone number, address and hours are identical on your site, your markup and your Google Business Profile. It takes twenty minutes and fixes more than most plugins do.

— Ash

Common mistakes to avoid

  • Marking up content users cannot see. Keep markup in step with the visible page.
  • Using the generic type when a specific one exists. Plumber beats LocalBusiness for a plumber.
  • Copying another company’s code. You will inherit its name, phone and mistakes.
  • Leaving stale data. Old hours or a retired phone number in code quietly contradict everything else.
  • Duplicate blocks. A theme and a plugin both outputting schema can conflict. Keep one source of truth.
  • Expecting a ranking jump. Treat any gain as eligibility and clarity, not a guarantee.

When to get help

Most owners can paste a JSON-LD block and test it. The harder part is deciding what the site should say, how service pages should be structured and how enquiries flow once someone lands. That is the work behind our AI Visibility Audit, which looks at your site’s structure and content and points to the specific obstacles holding back discovery in AI-powered search, with clear next steps. If the audit shows the site itself needs rebuilding, our website redesign packages start with the Website Refresh at $1,000 one-off, and the Growth Site starts from $2,500 one-off.

FAQ

What is local business schema markup?

It is structured data, usually JSON-LD, that labels your business name, address, phone, hours and related details using the schema.org vocabulary. Search engines use it to understand the page and may use it for richer results. It supports eligibility but does not guarantee any feature.

Do I need local schema markup if I have a Google Business Profile?

They do different jobs. Your profile feeds Google’s local results, while markup describes the business on your own website. Having both, with identical details, gives search engines a consistent picture.

How do I know if my website already has schema markup?

Run your page through the Rich Results Test or the Schema Markup Validator. Many themes and SEO plugins add some automatically, so look for duplicates or outdated values before adding more.

Does schema markup help me show up in ChatGPT or AI Overviews?

The evidence is mixed and does not show a causal effect. Schema can make your facts easier to parse, but content quality, clarity and site authority appear to matter more. Treat it as a supporting step, not a strategy on its own.

Sources

PPicshaw
Talk Through Your Search Visibility
Reach out to discuss how your website structure and content may affect how easily customers find and understand your business.