LocalBusiness Schema

How to implement LocalBusiness schema, why Google supports far less than the full schema.org spec, choosing the right subtype, NAP consistency, and how it differs from a Google Business Profile.

First published: Jul 1, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #13 in Structured Data#38 in On-Page#184 in Technical SEO#249 on the site
1 evidence signal on this page

LocalBusiness schema (schema.org/LocalBusiness) describes a physical business to search engines. It's a subtype of Organization and Place, so the full spec inherits dozens of properties — but Google requires only two (name, address) and consumes about a dozen recommended ones. The wins come from using the most specific subtype (Restaurant, LegalService, DaySpa — not generic LocalBusiness), keeping NAP consistent across markup, your Google Business Profile, and directory citations, and getting the fiddly details right: geo coordinates need at least 5 decimal places, priceRange must stay under 100 characters. The two biggest traps: marking up your own star rating with aggregateRating/review (that's for sites reviewing OTHER businesses — self-serving reviews break Google's guidelines), and treating schema as a substitute for a Google Business Profile. They're separate systems, reconciled separately, and valid markup only makes you eligible — Google never guarantees a rich result.

TL;DR — LocalBusiness is a subtype of Organization and Place, so the full schema.orgSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. spec inherits dozens of properties — but Google requires only name + address and consumes ~12 recommended ones. The wins: use the most specific subtype (multiple types go in an array; additionalType isn’t supported), keep NAP consistent across your markup, Google Business Profile, and citations, and get the details right — geoGenerative Engine Optimization (GEO) is the practice of optimizing content and brand presence so AI-powered search engines and assistants — Google AI Overviews, ChatGPT, Perplexity — cite, recommend, or mention you when generating answers. Google's position is that it's still SEO. needs ≥5 decimal places, priceRange must stay under 100 characters. Don’t mark up your own aggregateRating/review (that’s for sites reviewing other businesses; self-serving reviews break the guidelines), and don’t treat schema as a Google Business Profile substitute — they’re separate, reconciled separately, and valid markup only makes you eligible.

Where it sits: a subtype of Organization and Place

The single most useful thing to understand about LocalBusiness is its position in the schema.org hierarchy. It’s a subtype of both Organization and Place, which is exactly why it can carry general company properties (name, logo, sameAs) and location-specific ones (address, geo, openingHoursSpecification). That dual inheritance is also why the full spec is so large — it pulls properties from two big parent types.

That matters for how you think about the wider Entity & Identity schema\"Entity & identity schema\" is a practitioner label — not an official Google or schema.org category, and not exhaustive of identity-capable schema.org types — for the three main types that declare who or what is behind a site: Organization, LocalBusiness, and Person. picture. A company-wide Organization entity (sitewide, on the homepage) and a per-location LocalBusiness entity are related but distinct: one describes the company, the other describes a place you can walk into. For the company-level entity, see Organization schemaOrganization schema (schema.org/Organization) is structured data that describes the business or entity itself — name, logo, official URL, social profiles, contact info, and identifiers — rather than a page's content. Google says it can help disambiguate your brand and some properties can influence visual elements like Knowledge Panel/attribution; it has no required properties and doesn't guarantee a Knowledge Panel.; for the people behind it, Person schemaPerson schema (schema.org/Person) is structured data that marks up an individual — most often an article's author, but also founders, staff, or the subject of a bio page. It helps search engines disambiguate which person an identity refers to and connect their content across the web; it is not a ranking factor and doesn't itself confer E-E-A-T..

The full spec vs. what Google actually consumes

This is the distinction most guides blur. schema.org/LocalBusiness inherits dozens of properties from Organization and Place. Google consumes a small subset. Don’t confuse “schema.org supports X” with “Google will do something with X.”

Evidence for this claim Schema.org exposes many LocalBusiness properties, while Google's search feature uses a narrower documented set. Scope: Schema.org validity compared with Google Search feature support. Confidence: high · Verified: Google: LocalBusiness structured data

Required (only two):

  • address (PostalAddress) — the physical location. Google’s advice: include as many address sub-properties as possible; the more you provide, the higher the quality of the result.
  • name — the name of the business.

Recommended (the properties that actually enrich the result): aggregateRating, department, geo (with geo.latitude / geo.longitude), menu, openingHoursSpecification (with .opens, .closes, .dayOfWeek, .validFrom, .validThrough), priceRange, review, servesCuisine, telephone, and url.

The takeaway for prioritizing dev effort: nail the required pair, then add the recommended properties that make your listing more complete (hours and geoGenerative Engine Optimization — visibility inside AI answer engines. for a storefront; servesCuisine and menu for a restaurant). Filling in obscure inherited properties that Google ignores is wasted effort.

Choosing the right subtype

Google is explicit: use the most specific LocalBusiness sub-type possible — for example Restaurant, DaySpa, HealthClub. Generic LocalBusiness works, but a specific subtype gives engines more to work with.

A few practical mappings:

  • Restaurant / café → Restaurant, CafeOrCoffeeShop, BarOrPub (under FoodEstablishment)
  • Law firm → LegalService (or Attorney)
  • Dentist / doctor → Dentist, Physician (under MedicalBusiness)
  • Plumber / electrician / general contractor → HomeAndConstructionBusiness subtypes (Plumber, Electrician, GeneralContractor)
  • Consultancy / agency with no better fit → ProfessionalService

If your business genuinely spans two types, specify them as an array — Google supports multiple @type values that way. Note that additionalType is not supported for this purpose, so don’t reach for it.

NAP consistency — schema, GBP, and citations

“NAP” (Name, Address, Phone) consistency is longstanding local-SEO best practice: the same name, address, and phone should appear identically across your on-page schema, your Google Business Profile, and directory citations (Yelp, BBB, industry directories). Mismatches — an old suite number here, a tracking phone number there — muddy the signals engines use to identify and trust a location.

One honest caveat: “NAP” is industry shorthand, not a Google spec term. Google’s LocalBusiness documentation doesn’t use the word. Frame it as well-established local-SEO consensus, not a quoted Google ranking factor. It still matters — arguably more than any single individual property — because it’s about the coherence of your entity across the web, not one field on one page.

The implementation details that trip people up

  • Geo coordinates need at least 5 decimal places. Google states the precision must be at least 5 decimal places for both latitude and longitude. A common slip is a CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. or geocoding tool rounding coordinates to 2–3 places — enough to put your pin in the wrong block.
  • priceRange has a 100-character ceiling. It must be shorter than 100 characters; at 100 or more, Google won’t show a price range at all. Keep it short ($$, or $10–30), not a paragraph.
  • openingHoursSpecification syntax and edge cases. dayOfWeek accepts full schema.org URLs (https://schema.org/Monday) or the short name (Monday). Google’s own examples use 24-hour opens/closes times without seconds (hh:mm); schema.org’s broader Time type also accepts hh:mm:ss if your generator adds it. Four patterns cover almost every case, straight from Google’s documentation: a normal day ("opens": "09:00", "closes": "17:00"), hours that cross midnight ("opens": "18:00", "closes": "03:00" for an overnight Saturday), open all day ("opens": "00:00", "closes": "23:59"), and closed all day ("opens": "00:00", "closes": "00:00"). For seasonal or holiday closures, add validFrom / validThrough in YYYY-MM-DD (Google’s own example uses "validFrom": "2015-12-23", "validThrough": "2016-01-05") — a nuance most basic implementations skip entirely.
  • Department naming convention. When you nest a department, include the store name with the department name (e.g., “gMart” and “gMart Pharmacy”) — unless the department is its own independent brand (e.g., “Best Buy” and “Geek Squad”), in which case name it standalone.

Reviews and ratings: the self-serving-rating trap

This one wastes a lot of implementation effort. Google’s docs are clear that aggregateRating and review are recommended only for sites that capture reviews about other local businesses — a directory or review platform, not the business rating itself. A business marking up its own star average on its own page is doing a “self-serving review,” which violates Google’s review-snippet guidelines; Google stopped showing self-serving review stars for LocalBusiness/Organization years ago. Evidence for this claim Google's review snippet rules make self-serving reviews for LocalBusiness and Organization ineligible for the star review feature. Scope: Google Search review snippet eligibility policy; genuine third-party review contexts are treated differently. Confidence: high · Verified: Google: Review snippet structured data

So if you were planning to sprinkle your homepage testimonials into an aggregateRating: don’t. It won’t earn the stars you’re picturing, and it can cross the line from “no benefit” into “guideline violation.”

Multi-location businesses: one page vs. many

Competitors give hand-wavy advice here, so let me be concrete. The correct pattern depends on your architecture:

  • One LocalBusiness per location page. The cleanest approach for a chain: each location gets its own page with its own LocalBusiness markup describing that address. You can tie them to the parent with parentOrganization / branchOf.
  • Nesting under Organization. At the company level, you can express the brand as an Organization with locations as subOrganization.

What not to do: stack five unrelated LocalBusiness blocks flatly on your homepage. If a page has one address in the footer but five different LocalBusiness addresses in the markup, you’ve made it ambiguous which address the page is actually about. Mark up the location the page represents.

LocalBusiness schema vs. Google Business Profile

Say this plainly because most guides bury it: schema markupSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. ≠ Google Business Profile. They are different systems that Google reconciles separately.

  • Your Google Business Profile feeds Maps and the local pack directly through Google’s own systems. It’s the primary driver of “near me” and local-pack visibility.
  • On-page LocalBusiness schemaLocalBusiness schema (schema.org/LocalBusiness) is structured data — usually JSON-LD — that describes a physical business to search engines: its name, address, phone, hours, geo-coordinates, and price range. Google requires only name and address, consumes about a dozen recommended properties, and treats it as a corroborating signal, not a substitute for a Google Business Profile. is a corroborating on-site signal Google may use for Knowledge PanelsThe Knowledge Graph is Google's database of entities — people, places, organizations, and things — and the factual relationships between them. It's separate from any single website's structured data: your schema markup is one of many possible inputs to the graph, not the graph itself. and enriched results. It is not a substitute for a Business Profile — and a Business Profile is not a substitute for on-page schema.

You want both, kept consistent (that’s the NAP point again). Neither one alone does the other’s job.

What it does — and doesn’t — guarantee

Valid, guideline-compliant markup makes a page eligible for a local Knowledge Panel or a business carousel — though “eligible” scopes differently per feature. Google’s restaurant carousel, for instance, is currently limited to a small set of participating restaurant providers, so valid Restaurant markup alone doesn’t get an arbitrary site into it. Beyond that scoping, eligibility still doesn’t guarantee display — Google says outright that it doesn’t guarantee that features consuming structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. will show up in results. And a note on the stats floating around competitor blogs: numbers like “30–50% more often in the local pack” or “20–35% CTR lift” circulate widely with no primary source. Treat them as unverified marketing claims, not Google-confirmed outcomes.

Validate before you ship

  1. Add the required properties (name, address), then the recommended ones that fit your business.
  2. Validate with the Rich Results Test and the Schema Markup Validator.
  3. Deploy, then check with URL InspectionA Google Search Console feature that reports how Google sees one specific URL on a property you own. By default it shows the last-indexed snapshot; a separate \"Test live URL\" mode fetches the current version. in Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. and request a recrawlCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial..
  4. Monitor the structured-data reports in Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. over time.

Validate, then deploy — not the reverse.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.