1,000+ citation sites ranked across 50+ countries & 45 industries Explore the directory →

LocalBusiness Schema Markup: The Complete Guide + Examples

LocalBusiness schema explained: the properties that matter, a copy-ready JSON-LD example, service-area and multi-location patterns.

On this page
  1. What LocalBusiness schema is, and what it is not
  2. The properties that matter
  3. A copy-ready example
  4. Service-area businesses
  5. Multi-location businesses
  6. Where it fits in the rest of your local SEO
  7. Validate it, then check it against your listings
  8. The mistakes we see most

Your website is the source search engines and AI assistants trust most when your business details disagree across the web, and LocalBusiness schema is how you make that source unambiguous. LocalBusiness schema is the machine-readable copy of your master NAP: the same name, address and phone you use on Google and on every citation, stated once in JSON-LD so nothing has to be inferred from your page layout. This guide covers what it is, the properties that matter, a copy-ready example, the service-area and multi-location patterns, and the mistakes that turn it into a liability.

What LocalBusiness schema is, and what it is not

Schema.org is a shared vocabulary for describing things on the web. LocalBusiness is the type for a business with a physical presence or service area, and it has dozens of more specific subtypes (Dentist, Plumber, Restaurant, RealEstateAgent, Locksmith), covered in LocalBusiness schema types. You add it to a page as a <script type="application/ld+json"> block; visitors never see it, crawlers and AI systems read it directly.

What it does: it states your entity’s facts without ambiguity. A crawler reading “Call us at (212) 555-0100” in a footer has to guess that the number belongs to the business and not to a partner; a crawler reading "telephone": "+1 212-555-0100" inside a LocalBusiness object does not.

What it does not do: it does not rank you by itself, it does not replace your Google Business Profile, and it does not fix inconsistent citations. It is one more copy of your NAP, on the most authoritative source you control, which is exactly why it must match the others. The short definition lives in our glossary entry for LocalBusiness schema; this guide is the how.

The properties that matter

Keep the block small and correct rather than large and speculative. In practice:

PropertyWhat it isNotes
@typeThe most specific LocalBusiness subtype that fitsDentist, not LocalBusiness, if you are a dentist
@idA stable identifier URL for the entityUsually your homepage plus #business
nameThe real-world business nameExactly as on your signage, Google profile and citations
addressA PostalAddress objectstreetAddress, addressLocality, addressRegion, postalCode, addressCountry
telephoneOne number, international formatThe same number as your listings, never a tracking number
urlThe canonical site URL
imageA photo of the premises or the logoGoogle recommends it for the local business rich result
openingHoursSpecificationHours per dayMust match Google and directories
geoGeoCoordinates with latitude and longitudeTake them from the entrance, not the car park
priceRangeA rough band such as a run of currency symbolsOptional
sameAsYour profile URLsGoogle profile, Facebook, Apple, Foursquare, industry directories
areaServedPlaces you serveService-area businesses, see below

Two properties deserve a warning. aggregateRating must reflect reviews that are genuinely on that page and collected under the platform rules; marking up ratings you do not display, or ratings copied from Google, violates structured-data policies. And sameAs is only useful when the profiles it points to carry the same NAP; pointing at a stale Yelp page hands the crawler a contradiction with a signpost.

A copy-ready example

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "@id": "https://www.example-dental.com/#business",
  "name": "Northside Dental",
  "url": "https://www.example-dental.com/",
  "image": "https://www.example-dental.com/images/office.jpg",
  "telephone": "+1 512-555-0134",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1200 North Lamar Blvd, Suite 210",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78703",
    "addressCountry": "US"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 30.2795, "longitude": -97.7534 },
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"], "opens": "08:00", "closes": "17:00" },
    { "@type": "OpeningHoursSpecification", "dayOfWeek": "Friday", "opens": "08:00", "closes": "13:00" }
  ],
  "sameAs": [
    "https://www.facebook.com/example-dental",
    "https://foursquare.com/v/example-dental"
  ]
}

Replace every value from your master NAP, not from memory. If your Google profile says “Suite 210” and the schema says “Ste 210”, you have just published a NAP inconsistency on the one source that was supposed to settle arguments.

Service-area businesses

If customers do not visit your address, you still need LocalBusiness schema, with two changes. Add areaServed, listing the same towns or region you declare on Google and Bing (each as a City or AdministrativeArea object, or a plain string), so the site and the profiles agree about where you operate. And decide, deliberately, whether to include the street address. Including it keeps your schema consistent with the address on record everywhere; omitting it keeps a home address off the page. Either is defensible; what is not defensible is a street address in the schema that differs from the hidden address on your profiles. The platform-by-platform rules are in service area business citations.

Multi-location businesses

One LocalBusiness block per location, on that location’s page, each with its own @id, address, phone and hours. The homepage carries an Organization block for the brand and can list the locations as subOrganization or link to them. The mistake to avoid is the reverse: a single block with head office’s address on every location page, which tells crawlers that all your branches are one entity at one address. The per-location discipline (store IDs, one master record per unit) is the same one that governs citations; see franchise SEO.

Where it fits in the rest of your local SEO

Search engines and AI assistants decide how much to trust your business by checking whether its details agree across sources: your site, your Google profile, Apple and Bing, and the directories that cite you. Schema makes your site’s vote in that check explicit. That is why the order of work matters: write the master NAP first, put it on your Google profile and your citations, then encode the same values in schema. Done the other way round, the schema becomes the odd one out. Our guide to getting recommended by ChatGPT explains why agreement between sources is the signal assistants reward, and the industry guides under local SEO show where schema sits in each vertical’s plan.

Validate it, then check it against your listings

Two checks, in this order:

  1. Is the markup valid? Paste the page URL into a schema validator and fix every error and warning that concerns the LocalBusiness object. How to validate LocalBusiness schema walks through the tools and the common errors.
  2. Does it agree with the rest of the web? Run the free NAP checker with your website filled in. It parses every JSON-LD block on the page, reads the LocalBusiness or Organization name, address and telephone, and compares them with the open directories. It reports whether a LocalBusiness block exists at all, and where the site and your listings disagree.

Valid schema that contradicts your citations is worse than no schema, because it publishes the contradiction in the format machines trust most.

The mistakes we see most

  • Two blocks on one page. An SEO plugin emits one LocalBusiness object, the theme emits another, and they disagree. Pick one source. The WordPress specifics are in how to add LocalBusiness schema in WordPress.
  • Generic @type. LocalBusiness when Plumber exists. The subtype is a category signal; use the most specific one that is true.
  • Tracking numbers. A call-tracking number in the schema and the real number on Google is a phone mismatch on your own site.
  • Copied coordinates. geo taken from a city centre or a search result rather than the entrance. In one of our own client builds the coordinates supplied by the owner were more than two hundred metres off, on top of another shop; a directory built from them would have placed the business in the wrong building.
  • Marked-up ratings that are not on the page. A policy violation that can cost you rich results across the site.
  • Set once, never updated. A move, a rebrand or new hours change the schema too. Add it to the checklists in changing your business address and changing your business name.

Citation Builder does not write your website’s schema; it builds the directory citations that the schema must agree with, from one canonical NAP, and its free checker tells you whether the two match today. Check your NAP with your website included, then fix the schema or the listings, whichever is wrong.

Frequently asked questions

What is LocalBusiness schema?

Structured data, written as JSON-LD in your page's HTML, that states your business's name, address, phone, hours, category and location in a form machines read directly instead of guessing from the page text. It uses the LocalBusiness type from schema.org, or one of its more specific subtypes such as Dentist, Plumber or Restaurant. Search engines and AI assistants use it to verify the business entity behind the site.

Does LocalBusiness schema improve local rankings?

Not directly and not on its own. It makes your site's NAP unambiguous, which strengthens the cross-check search engines and AI assistants run between your site, your Google Business Profile and your directory citations. It can also make your page eligible for certain rich results. Treat it as the machine-readable copy of your master NAP, not as a ranking trick.

Which properties are required in LocalBusiness schema?

For Google's local business rich result, name and address are required and image is strongly recommended; telephone, url, openingHoursSpecification, geo and priceRange are recommended. For entity verification the practical minimum is name, a complete PostalAddress, telephone, url and the most specific @type that fits, all matching your Google profile and citations exactly.

Where on the site should LocalBusiness schema go?

On the page that represents the location: the homepage or contact page for a single-location business, and each location page for a multi-location one. It is fine to emit it site-wide as long as it is the same entity with the same @id everywhere. Never emit two different LocalBusiness blocks on one page, which is the classic plugin-plus-theme conflict.

Does the free NAP checker read my schema?

Yes. When you enter your website, the checker parses every JSON-LD block on the page, reads the LocalBusiness or Organization name, address and telephone, and compares them with what the open directories publish. It tells you whether a LocalBusiness block exists at all, and where the site disagrees with your listings.

Get these citations built for you

Citation Builder ranks the best citation sites for your country and industry, and builds your optimized citations.

Start free

Found this useful? Pin us in Google and our pages carry a preferred badge in your own Top Stories and AI results.

Add us as a preferred source on Google

Citation sites for your market

Every directory below is ranked from our live catalog, with the free ones marked.

Start free