Local Business Schema for U.S. SMBs: Copy Code, Match Google

LocalBusiness schema is a block of structured data that tells search engines your business name, address, phone number, and hours in a format they can read without guessing. Your first step is simple: add validated JSON-LD to your homepage or contact page, then make every detail match your Google Business Profile exactly. Test it before you publish, and again after.


TL;DR:

  • Choose the narrowest accurate Schema.org type: use a fitting subtype such as Dentist, LocalBusiness when none fits, and Organization for businesses without physical locations.
  • Businesses with multiple storefronts should create a location page and distinct business identifier for each address, rather than combining locations in one entity.
  • Service area businesses should leave nonpublic home addresses out of markup and list the same cities or postal codes as their profile, not a radius.
  • Structured data can reduce ambiguity and support rich result eligibility, but it does not directly improve rankings or replace a complete, verified business profile.
  • Run both the Schema Markup Validator and Google’s Rich Results Test, then retest the live page after publishing and whenever site or business details change.

King Digital Marketing Agency
Make Local Search Work Harder
King Digital helps Albuquerque businesses improve local visibility with tailored SEO strategies, including technical SEO and Google Business Profile optimization.

Visit King Digital

Table of Contents

What LocalBusiness schema is and when to use it

Think of LocalBusiness schema as a digital business card written for machines. Instead of making a crawler infer your phone number from a paragraph of text, you hand it the answer in a labeled format. The vocabulary comes from Schema.org, which publishes the LocalBusiness type along with sample encodings, including JSON-LD snippets showing a name, address, description, and telephone.

Schema.org arranges its types in a hierarchy. LocalBusiness sits beneath Organization, and it also unlocks a set of properties built for physical, place-based entities, as described in the Schema.org type hierarchy. Under LocalBusiness you will find dozens of more specific subtypes, such as Restaurant, Dentist, LegalService, and AutoRepair.

The rule we follow is simple: pick the most specific type that honestly describes the business.

  • Use a specific subtype when one fits. A family dental office should use Dentist, not the generic parent, because the subtype carries properties that match what the business actually does.
  • Use LocalBusiness when no subtype matches closely, such as a consultancy with a storefront that does not fit a defined category.
  • Use Organization when the entity has no physical location customers can visit or be served from, such as a purely online brand.
  • Avoid stacking multiple unrelated types on the same entity. One accurate type beats three vague ones.

Where the markup belongs

Search Engine Land recommends placing Organization and LocalBusiness schema on the homepage or contact page. For most small businesses, that is the right starting point. If you run several locations, give each one its own location page with its own markup, rather than cramming every address into a single block on the homepage.

A practical placement order looks like this:

  1. Homepage: your primary business entity.
  2. Contact page: the same entity, reinforced with contact details.
  3. Individual location pages: one entity per physical location.

Do not paste the same block onto every page of the site. Markup should describe what the page is about, and a blog post about gutter cleaning tips is not about your business address.

Why LocalBusiness schema matters for local SEO

Schema works like a translator. Search engines are good at reading pages, but they still make guesses, and a guess about your phone number or closing time can end up wrong. According to Search Engine Land’s schema guide, structured data provides machine-readable context that reduces that ambiguity and supports knowledge graph entries and eligibility for rich results.

That is the honest scope of the benefit. Schema clarifies. It does not command.

What schema does well

  • Reduces ambiguity. When your phone number appears in a footer, a header, and a testimonial, schema tells crawlers which one is the official contact line.
  • Supports eligibility for enhancements. Clean, valid markup is a prerequisite for certain rich result features and helps Google connect your site to the right entity.
  • Reinforces consistency. It gives search engines a second, structured copy of the details that appear on your Google Business Profile, so the two can corroborate each other.

What it does not do

Schema is not a direct ranking factor, and no markup block will lift a weak local page into the top three on its own. If your site has thin content, few reviews, and an unverified profile, schema will not rescue it. Treat it as a clarity layer that sits on top of solid fundamentals: a verified profile, accurate listings, useful pages, and real customer reviews.

Schema also does not replace your Google Business Profile. Google’s own guidelines for representing your business stress that exact consistency between your website, your profile, and your physical signage matters, and discrepancies can hurt how you appear in local packs or on Maps. The profile remains the authoritative source for your physical presence, hours, and service area. Your markup should mirror it, never contradict it. If you want help getting the profile side right, our guide to Google Business page management covers how we keep those details accurate.

Business Details Matched Across Three Sources

Here is a way to hold both ideas at once: a verified profile is the storefront with the lights on, and schema is the clearly labeled sign above the door. You need both, and neither works if the address on the sign is wrong.

Essential LocalBusiness properties to include

Start with a short list of properties that carry the most weight, then add more only when they are true and useful. Search Engine Land lists the essentials as name, legalName, url, logo, address (PostalAddress), contactPoint, description, and sameAs links to social profiles.

Here is a prioritized checklist, with the reason each one matters:

  • @type: the most specific subtype that fits. This decides which extra properties you can use.
  • name: your business name, spelled exactly as it appears on your Google Business Profile.
  • url: the canonical address of the page or site representing the business.
  • address: a PostalAddress object with streetAddress, addressLocality, addressRegion, postalCode, and addressCountry. Fill in every component rather than writing the whole address as one string.
  • telephone: one primary number in a consistent format, matching your profile.
  • openingHoursSpecification: structured hours using dayOfWeek, opens, and closes. Use a consistent time format.
  • description: one or two plain sentences about what you do.
  • logo and image: absolute URLs to files that actually exist.
  • sameAs: links to your verified social profiles and major listings, so engines can connect the entities.
  • @id: a stable identifier, usually your homepage URL plus a fragment such as “#business”, so other markup on your site can refer back to the same entity.
  • contactPoint: useful when you have a distinct line for support or sales.

A few structural notes save headaches. PostalAddress should be a nested object, not a flat text line. Hours should use one openingHoursSpecification object per set of days, and a day with no hours should simply be left out rather than marked with a placeholder. Telephone should include the country code if you want to remove all doubt.

Subtype properties are the bonus

Choosing a specific @type unlocks properties that the generic type does not offer. A Restaurant can describe servesCuisine and a menu link. Other subtypes add their own vocabulary. This is the practical reason to avoid defaulting to the parent type: it gives you more accurate, more descriptive markup at no extra cost. If you run a restaurant, the partner guide on restaurant website SEO and Google Maps profiles shows how menu pages and profile details work together with this kind of subtype markup.

The one claim to remember

Schema markup is a translator, not a ranking factor. Search Engine Land describes it as machine-readable context that reduces ambiguity, and it helps with knowledge graph entries and rich result eligibility even though it does not directly raise rankings.

Keep that in mind when someone promises dramatic results from markup alone.

JSON-LD examples and templates you can copy and adapt

JSON-LD is the format we recommend because it sits in a single script block, separate from your visible HTML, which makes it far easier to edit and audit. Every example below uses placeholder business details, so replace each value with your own real information before publishing.

Template 1: Simple storefront

This is the minimum viable block for a business with a street address.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://www.example.com/#business",
  "name": "Example Hardware Co.",
  "url": "https://www.example.com/",
  "telephone": "[your business phone number]",
  "description": "Family-owned hardware store serving homeowners and contractors.",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[your street address]",
    "addressLocality": "Albuquerque",
    "addressRegion": "NM",
    "postalCode": "[your postal code]",
    "addressCountry": "US"
  }
}
</script>

Template 2: Detailed location with hours, contact point, and sameAs

Use this version when you want a fuller picture.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "@id": "https://www.example.com/#business",
  "name": "Example Family Dental",
  "url": "https://www.example.com/",
  "logo": "https://www.example.com/images/logo.png",
  "image": "https://www.example.com/images/office.jpg",
  "telephone": "[your business phone number]",
  "description": "General and cosmetic dentistry for families.",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[your street address]",
    "addressLocality": "Albuquerque",
    "addressRegion": "NM",
    "postalCode": "[your postal code]",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
      "opens": "[opening time]",
      "closes": "[closing time]"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Friday",
      "opens": "[opening time]",
      "closes": "[closing time]"
    }
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "[your business phone number]",
    "contactType": "customer service"
  },
  "sameAs": [
    "https://www.facebook.com/examplefamilydental",
    "https://www.linkedin.com/company/examplefamilydental"
  ]
}
</script>

Template 3: Service-area or hybrid business

A plumber who travels to customers can describe the cities served with areaServed. The areaServed property accepts administrative areas, places, shapes, or plain text, and using City objects with a sameAs link helps disambiguate place names.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "@id": "https://www.example.com/#business",
  "name": "Example Plumbing Services",
  "url": "https://www.example.com/",
  "telephone": "[your business phone number]",
  "areaServed": [
    {
      "@type": "City",
      "name": "Albuquerque",
      "sameAs": "https://en.wikipedia.org/wiki/Albuquerque,_New_Mexico"
    },
    {
      "@type": "City",
      "name": "Rio Rancho",
      "sameAs": "https://en.wikipedia.org/wiki/Rio_Rancho,_New_Mexico"
    }
  ]
}
</script>

If the business hides its home address, leave the address out of the visible markup rather than publishing a street address that customers cannot visit.

Quick reference for the templates

Template Best for Key properties
Simple storefront Shops with a public address name, url, telephone, address
Detailed location Offices, clinics, restaurants hours, contactPoint, sameAs, logo
Service-area Mobile and home-service trades areaServed as City objects
Subtype example Any business with a fitting category Specific @type plus its own properties

Placement and deployment notes

Place the script block in the page head or just before the closing body tag. Put it on the canonical version of the page, so that duplicate or parameterized URLs do not publish conflicting copies. Keep the visible text on the page consistent with the markup: if the schema says you close at 5:00 PM and the page says 6:00 PM, you have created the exact ambiguity schema is meant to remove.

If you would rather generate blocks than hand-write them, an automated tool like the JSON-LD schema generator can produce the markup for you. Whichever route you take, still read the output line by line and validate it before it goes live.

Testing, validation, and troubleshooting structured data

Never publish markup you have not tested. Google’s documentation on structured data points to two complementary checks: the Rich Results Test, which tells you whether a page is eligible for search enhancements, and the Schema Markup Validator, which checks your usage against the Schema.org vocabulary itself. They answer different questions, so run both.

Here is the workflow we follow:

  1. Draft the markup using one of the templates above, with your real details.
  2. Run the Schema Markup Validator on the code snippet to catch vocabulary mistakes such as misspelled properties or wrong types.
  3. Run the Rich Results Test on the staging or live URL to confirm Google can read the block and see which features it supports.
  4. Compare every value against your Google Business Profile: name, address, phone, and hours.
  5. Publish, then retest the live URL, since caching or template changes can alter what ships.
  6. Check Search Console after Google recrawls the page, and watch the structured data reports for new warnings.

Common errors and the fix

  • Missing address components. Fill in the PostalAddress fields instead of a single text string.
  • Invalid or misspelled type. Types are case-sensitive, so “localbusiness” fails where “LocalBusiness” passes.
  • Mismatched formats. Times should be in 24-hour format, and phone numbers should stay consistent with what appears on the page.
  • Broken URLs. Logo and image links must point to real, publicly accessible files.
  • Markup that contradicts the page. Update both together, never one.

Pro Tip: Test the exact URL a customer would land on, not just the code snippet. A snippet can pass while the live page strips the script block, injects a duplicate, or serves an older cached copy.

Retest whenever you redesign the site, switch themes, install a plugin that touches your head section, or change business details. Structured data breaks quietly, and the Search Console report is your early warning.

Service-area and multi-location specifics

How you encode your location depends on how you serve customers. Google separates three situations, and your markup should match the one that is true for you.

  • Storefront: customers come to your address. Publish the full PostalAddress.
  • Service-area: you travel to customers and do not serve them at your address. Describe the areas you cover with areaServed and keep the home address out of public markup.
  • Hybrid: you do both. Google’s help page on managing service areas says hybrid businesses must show their physical address and be staffed by their team during stated hours.

That same page sets the rule for how reach should be expressed: specify it by city, postal code, or another administrative area rather than a radius. A business can specify up to 20 service areas in its Google Business Profile, so keep your markup in line with that list rather than listing every neighborhood you have ever visited.

Keeping multi-city markup clean

  • Use City objects with a sameAs link so a place name like “Albuquerque” cannot be mistaken for another town.
  • Mirror the areas in your profile; do not add extra cities in schema that the profile does not list.
  • Prefer a reasonable, high-level administrative area to a long list of overlapping suburbs and neighborhoods.
  • Give each physical location its own page and its own LocalBusiness block with a distinct @id, instead of nesting every address in one entity.

More places in your markup does not mean more visibility. A short, truthful list is easier for engines to trust.

Best practices: consistency, placement, maintenance, and common pitfalls

Schema decays when it is treated as a one-time task. The businesses that benefit are the ones that keep it true.

  • Match your Google Business Profile exactly. Name, address, phone, hours, and category should read the same in both places. Our Google Business Profile audit checklist walks through the fields worth comparing.
  • Update schema when you change live information. New phone number, holiday hours, or a move means the markup changes the same day.
  • Use staging and version control. Test changes before they reach the live site, and keep a record of what changed and when.
  • Place markup once per entity, on the right page. Avoid duplicate blocks from a theme and a plugin both injecting the same data.
  • Remove contradictory or unnecessary properties. If a property is not true or not useful, leave it out.
  • Do not stuff areaServed. Excess cities add risk and little benefit.

Many of these mistakes also appear on our list of top local SEO mistakes, and fixing them tends to help more than the markup itself.

Pro Tip: Add a markup check to your standard checklist for any change to hours, phone, or address. If the update touches your website or profile, it should also touch your schema, in the same sitting.

Why we roll schema out in stages

We have seen schema projects go wrong in a predictable way: someone pastes a block site-wide, a plugin injects a second copy, and the page now says two different things. Our approach avoids that. We test the markup first, confirm it reads cleanly, and then roll it out to the relevant pages.

After launch, the work shifts to monitoring. We check for new warnings, retest after site updates, and audit the markup against the Google Business Profile. My opinion, after doing this for small businesses, is that most schema trouble is not a technical failure at launch. It is drift: a new phone number on the site and an old one in the markup, six months later. Treat schema as something you maintain, not something you install.

— Bernadette

How we can implement and maintain LocalBusiness schema for you

If you would rather hand this off, we do the technical work and the follow-through, so your markup stays accurate as your business changes. Our local SEO team handles it from audit to monitoring.

King Digital Marketing Agency

  • Schema implementation with the right subtype for your business
  • Google Business Profile audits to confirm every detail matches
  • Validation, ongoing monitoring, and reporting

An engagement can include auditing your current markup and profile, implementing corrected blocks, validating them with Google’s tools, and monitoring for drift. We offer transparent, data-driven strategies and direct communication, and you keep access to your accounts. To start, reach out through our digital marketing services page and tell us about your business.

FAQ

Can you give me an example of a LocalBusiness schema?

Yes. A basic example uses a JSON-LD script with @type set to LocalBusiness, plus name, url, telephone, and a nested PostalAddress. The Schema.org LocalBusiness page includes sample encodings, and the templates earlier in this guide show storefront, detailed, and service-area versions you can adapt.

Can schema markup hurt my website?

Schema will not harm a site when it is accurate and valid. Problems come from markup that is wrong, misleading, or contradicts the visible page and your Google Business Profile. Keep it truthful, test it with the Rich Results Test and Schema Markup Validator, and update it when your business details change.

What are the best local SEO strategies for small businesses?

Start with a verified and complete Google Business Profile, consistent business details across the web, and useful pages for each location or service. Add real customer reviews and clean structured data on top. Our guide to optimizing your Google Business Profile covers the practical steps.

Does LocalBusiness schema improve my rankings directly?

Not directly. Schema is not a ranking factor on its own, but it reduces ambiguity and supports eligibility for rich results and knowledge panel features. Think of it as a clarity layer that helps search engines understand a business that already has strong fundamentals.

Sources

Author