SEO

Local Business Schema Markup: Google Requires Two Properties, Not Twenty

J
Junaid Ur Rehman
Marketing Director, KeyGrow
13 min read

Google's required list for local business schema markup is two properties long: name and address. Everything else is recommended. Here is which of the optional properties earn their place, the three things this markup will not do for you, and what the 2025 and 2026 deprecations changed.

Local Business Schema Markup: Google Requires Two Properties, Not Twenty

Local business schema markup is a block of JSON-LD code that tells search engines your business name, address, hours, and phone number in a format they can read without guessing. Google requires exactly two properties for it: name and address. Everything else is optional.

That is worth sitting with for a second, because most guides on this open with a list of twenty properties and leave you assuming all of them are mandatory.

What Google actually requires

Two properties. Name and address. That is the entire required list in Google Search Central.

Everything else, the phone number, the opening hours, the coordinates, the price range, the cuisine, sits under "recommended". Recommended means Google will use it if it is there and will not complain if it is not.

Comparison of required versus recommended local business schema properties: only name and address are required, while telephone, url, opening hours, geo, image, price range, sameAs, and aggregateRating are recommended.

Comparison of required versus recommended local business schema properties: only name and address are required, while telephone, url, opening hours, geo, image, price range, sameAs, and aggregateRating are recommended.

So the honest starting point is that a valid local business schema block takes about five minutes to write and can be four lines long. The rest of this post is about which of the optional properties are worth adding and which are cargo cult.

PropertyStatusWorth adding?
nameRequiredYes, obviously
addressRequiredYes, as a full PostalAddress object
telephoneRecommendedYes, with country and area code
urlRecommendedYes, the page's own canonical URL
openingHoursSpecificationRecommendedYes if your hours are real and stable
geoRecommendedYes for service areas, five decimal places minimum
priceRangeRecommendedOnly if you can state it honestly, under 100 characters
sameAsRecommendedYes, your own profiles, not a link dump
aggregateRatingRecommendedOnly if the reviews live on your own site
imageRecommendedYes, a real photo of the premises

Three things this will not do for you

This is where a lot of local businesses get sold something.

It is not a ranking factor. Google has been consistent about this for years and John Mueller has said it plainly more than once. Adding schema to a page does not move that page up. It makes the page easier to parse, which is a different thing.

Three cards explaining what local business schema does not do: it is not a ranking factor, it does not affect the map pack, and it does not lift click-through rate by 20 to 30 percent.

Three cards explaining what local business schema does not do: it is not a ranking factor, it does not affect the map pack, and it does not lift click-through rate by 20 to 30 percent.

It does not affect the map pack. The three-result local box runs on your Google Business Profile, your proximity to the searcher, your reviews, and your categories. Not your site's markup. If your map pack position is the problem, optimizing the Google Business Profile is the work, and schema is not a substitute for it.

The click-through statistics you will see quoted are mostly unsourced. Search this topic and you will find "schema increases CTR by 20 to 30 percent" repeated across a dozen agency blogs, none of which cite a study. We are not going to repeat it. What we can tell you honestly is how our own local clients got their phones ringing. A phone repair shop reached 115+ monthly calls over 7 months. A real estate office hit 90+ in the same stretch. A junk removal company got to 50+ in 6 months. In all three the work was Google Business Profile management, reviews, and service pages that loaded fast. Schema was part of the build. It was not the thing that made the phone ring.

So why bother at all? Because machines increasingly read your site without a human ever seeing it. Assistants, AI answers, voice results, and Bing all parse structured data directly, and a business that states its own facts in a machine-readable format is easier to quote correctly than one whose address only exists inside a styled footer. That is the case for it in 2026, and it is enough of a case.

Pick the most specific type before writing anything

Google's instruction is to use the most specific LocalBusiness sub-type available. There are hundreds of them.

If you run a dental practice, the type is Dentist, not LocalBusiness. A law firm is LegalService. A plumber is Plumber. A gym is HealthClub. A day spa is DaySpa. Schema.org publishes the full tree, and picking from it takes two minutes.

Six examples mapping a business to its schema sub-type: dental practice to Dentist, law firm to LegalService, plumbing company to Plumber, gym to HealthClub, day spa to DaySpa, and anything unmatched to LocalBusiness.

Six examples mapping a business to its schema sub-type: dental practice to Dentist, law firm to LegalService, plumbing company to Plumber, gym to HealthClub, day spa to DaySpa, and anything unmatched to LocalBusiness.

Why it matters: the sub-type carries meaning the generic one does not. "LocalBusiness" tells a machine you are a business with an address. "Dentist" tells it what you do, which is the half that helps you get surfaced for the right question.

If nothing fits, LocalBusiness is a legitimate fallback. Do not force a bad match just to be specific.

Build it in three passes

Do not try to write the perfect block in one go. Ship pass one today.

Pass one, the minimum that validates. Type, name, address. Four or five lines. This is already valid markup and it is already better than nothing.

Annotated JSON-LD example of local business schema markup for a dental practice, showing the Dentist type, a full PostalAddress object, telephone, url, image, geo coordinates, opening hours, and sameAs.

Annotated JSON-LD example of local business schema markup for a dental practice, showing the Dentist type, a full PostalAddress object, telephone, url, image, geo coordinates, opening hours, and sameAs.

Pass two, the properties that carry real information. Telephone, url, image, opening hours, geo coordinates, and sameAs pointing at the profiles you actually maintain. This is the version most single-location businesses should end up with, and it is maybe twenty lines.

Pass three, the extras that only some businesses need. Department for a practice with distinct units, menu for food, servesCuisine for restaurants, areaServed for a business that travels to customers rather than receiving them.

Our schema markup generator will produce pass one and pass two without you touching a bracket. Hand-writing JSON-LD is possible and is also how missing commas happen.

Where the code goes

In a script tag of type application/ld+json, inside the head of the page. JSON-LD is the format Google recommends, and the reason is practical rather than technical: it sits in one block instead of being sprinkled through your HTML as attributes, so when your address changes you edit one thing.

One block per page. On the page that represents that location.

Code displayed on a computer screen.

Code displayed on a computer screen.

The single most common implementation error we find in audits is a business that put its schema on every page of the site through a global template, so a blog post about gutter cleaning declares itself to be a physical business at 12 High Street. Put it on the homepage and the contact page for a single-location business, and on each location page for a multi-location one. Not everywhere.

Multiple locations get one block each

A business with six locations needs six blocks on six pages, not one block with six addresses on the homepage.

Each location page carries the markup for that location and nothing else. The address in the code must match the address in the visible text on that page, which must match the Google Business Profile for that location, which must match your local citations elsewhere on the web. Four places, one set of facts.

A small business storefront on a street.

A small business storefront on a street.

This is the part that goes wrong at scale, and it goes wrong quietly. A chain that rebrands a suite number or changes a phone number updates the profile, updates the website copy, and forgets the JSON-LD, which then keeps asserting the old number to every machine that reads it for the next two years. If you are running more than a handful of sites or pages, the structural questions in local SEO for multiple locations matter more than the markup itself.

The properties people get wrong

aggregateRating pulled from someone else's platform. Google's requirement is that the reviews you mark up live on your own domain. Marking up your rating from an external review platform is a policy violation, and it is the single fastest way to get a manual action on an otherwise harmless page.

openingHours that are aspirational. If the code says you are open until 6pm and you close at 5pm, you have published a wrong fact in a machine-readable format. Wrong hours in schema are worse than no hours.

Five common local business schema mistakes: aggregateRating pulled from another platform, aspirational opening hours, priceRange written as a paragraph, marking up text not visible on the page, and the block injected site-wide by a global template.

Five common local business schema mistakes: aggregateRating pulled from another platform, aspirational opening hours, priceRange written as a paragraph, marking up text not visible on the page, and the block injected site-wide by a global template.

priceRange as a novel. Google caps it at 100 characters. It is meant to hold something like "$$" or "$50 to $150", not a paragraph about your consultation process.

Marking up text that is not on the page. The rule is that structured data describes visible content. An address that exists only in the JSON-LD and nowhere in the page's text is the kind of thing that gets flagged.

geo coordinates with three decimal places. Google asks for at least five. Three puts you somewhere in the neighborhood rather than at the door.

Validating it, and what the validator will not catch

Run the code through the Schema Markup Validator at validator.schema.org, and through Google's Rich Results Test. The first tells you whether the syntax is valid. The second tells you whether Google can read it for the features it supports.

Both will pass a block that is completely wrong about your business.

A person checking code on a laptop.

A person checking code on a laptop.

Neither checks whether the phone number is current, whether the address matches your Google Business Profile, or whether the hours are real. That check is manual and takes five minutes: open the page, open the profile, open the code, and compare the same four facts across all three. Put a calendar reminder on it twice a year, and again any time you move, change your hours, or get a new number.

What changed in 2025 and 2026

Two rounds of deprecation are worth knowing about, because a lot of schema advice on the web predates them.

In June 2025 Google retired seven structured data types outright, including Course Info, Estimated Salary, Special Announcement, and Vehicle Listing. The stated reason was low usage.

Timeline of structured data changes: seven types retired in June 2025, FAQ rich results stopped appearing in May 2026, and LocalBusiness still supported through both rounds.

Timeline of structured data changes: seven types retired in June 2025, FAQ rich results stopped appearing in May 2026, and LocalBusiness still supported through both rounds.

In May 2026 FAQ rich results stopped appearing. Google's own documentation now says the feature is no longer shown in search, and the FAQ documentation was subsequently removed. This matters here because a common piece of local SEO advice was to bolt FAQPage markup onto every location page to grab extra SERP space. That particular payoff is gone.

LocalBusiness survived both rounds. The markup is still supported, still parsed, still recommended by Google. Keep the FAQ markup if you want it for assistants and other parsers, just stop expecting it to expand your listing.

When you can skip this

If you have one location, no website beyond a single page, and an unclaimed Google Business Profile, close this tab and go claim the profile. That will do more for you this month than any amount of markup, and it is free.

More broadly: if you run one location and your spare hours cost you less than an invoice would, do this yourself. It is a thirty minute job with a generator, it does not recur, and paying an agency a monthly fee for structured data maintenance on one address is one of the easier upsells to decline. Ask what changes about it month to month. If the answer is nothing, it is not a monthly service.

Where outside help earns its money is at scale and at the messy edges: forty location pages that need consistent markup generated from a database, a franchise system where the head office and the locations both want to be the entity, a migration where the old markup is still live on a CMS nobody has logged into since 2021. That is SEO work, and it is month-to-month.

FAQs

Does local business schema markup improve rankings?

No, not directly. Google has said repeatedly that structured data is not a ranking signal. It helps search engines and AI systems understand and correctly reproduce your business details, which can affect how often you get surfaced and quoted, but the markup itself does not push a page up the results.

What are the required properties for local business schema?

Name and address. That is the complete required list in Google's documentation. Telephone, url, opening hours, geo coordinates, image, and price range are all recommended rather than required, and Google will use them if present without penalizing a page that omits them.

Should I use LocalBusiness or a more specific type?

Use the most specific sub-type that genuinely fits, such as Dentist, Plumber, LegalService, or HealthClub. The specific type tells a machine what you do rather than only that you exist at an address. Fall back to the generic LocalBusiness only when nothing in the schema.org tree matches.

Where should local business schema go on my site?

In a JSON-LD script block in the head of the specific page that represents that location, usually the homepage and contact page for a single-location business. Never inject it site-wide through a global template, or every blog post on your site will claim to be a physical business.

Do I need separate schema for each location?

Yes. Each location gets its own block on its own page, with its own address, phone number, and hours. One combined block listing six addresses on the homepage is a common shortcut and it makes every one of those locations harder to resolve.

Can I mark up reviews from an external review platform?

No. Google requires that reviews marked up with aggregateRating live on your own domain. Pulling a rating in from a review site you do not own violates the guidelines and risks a manual action.

Is schema markup still worth it after the 2026 deprecations?

For local business markup, yes. The June 2025 removals and the May 2026 end of FAQ rich results did not touch LocalBusiness, which is still supported and still parsed. What changed is the reason to do it: fewer visual enhancements in the results, more value in being machine-readable for AI answers and assistants.

How do I check my schema is working?

Run the page through the Schema Markup Validator for syntax and Google's Rich Results Test for feature eligibility. Then check manually that the name, address, phone, and hours in the code match your visible page text and your Google Business Profile, because no validator checks whether your facts are true.

The half hour version

Pick the most specific type that fits your business. Write name and address. Add telephone, url, image, opening hours, and geo. Put it in a JSON-LD block in the head of your homepage and contact page. Validate it. Compare it line by line against your Google Business Profile.

That is the whole job for a single location, and it is done. The version of this task that never ends is the multi-location one, where the markup has to stay true across dozens of pages while the business keeps changing. If that is your situation, our SEO service handles it as part of the technical work rather than as a line item you pay for separately.

Tags:#Local SEO#Schema Markup#Structured Data#Technical SEO#Google Business Profile
J

Junaid Ur Rehman

Marketing Director, KeyGrow

SEO/AEO & PPC Specialist with 9+ years of experience. Spent $2M+ in ads, ranked 5000+ keywords, and driving measurable growth for clients.

Ready to Grow Faster?

Let's discuss how we can implement these strategies for your business