Preferences

Privacy is important to us, so you have the option of disabling certain types of storage that may not be necessary for the basic functioning of the website. Blocking categories may impact your experience on the website. More information (Cookie Policy)

Accept all cookies

Local Business Schema: A Complete JSON-LD Example, Google's Rules and the Mistakes to Avoid

Local business schema explained: required and recommended properties, a full JSON-LD example, opening hours, multiple locations, validation and AI visibility.

Published on:
19/10/2026
-
Updated on:
19/10/2026
Cover of the Sorank guide to local business schema, showing a JSON-LD block next to a map pin

Tools

Thibault Besson-Magdelain, founder of Sorank

About Author

Thibault Besson-Magdelain

Founder of Sorank, 7+ years of experience in SEO, GEO enthusiast.
On this page

In short

local business schema is a block of structured data, usually in JSON-LD, that describes a physical business to search engines: its type, name, address, phone number, coordinates, opening hours and website. Google only requires name and address, but recommends geo coordinates, hours, phone, URL and price range. The markup helps Google and AI assistants connect your website to the business they know from Google Business Profile and directories; it does not replace the profile and does not guarantee a rich result.

Want to go further? Ask

Local business schema is the schema markup type that turns the contact block of a shop, restaurant, clinic or agency into machine-readable data. Google documents it in its local business structured data guide, and the vocabulary comes from schema.org/LocalBusiness. This guide gives you a complete example you can adapt, the rules that matter, and the mistakes that make the markup useless.

What is LocalBusiness schema?

LocalBusiness is a schema.org type for "a particular physical business or branch of an organization". It inherits from two parent types, Organization and Place, so it accepts both company properties (logo, phone, social profiles) and place properties (address, coordinates, map, opening hours).

Schema.org lists 30 direct subtypes, and many of them have their own children. Google asks you to use the most specific subtype available. A dentist should be Dentist, a bakery Bakery, a law firm LegalService or Attorney. The most common choices:

BusinessRecommended typeParent type
Restaurant, café, barRestaurant, CafeOrCoffeeShop, BarOrPubFoodEstablishment
ShopClothingStore, HardwareStore, Florist...Store
Dentist, physician, pharmacyDentist, Physician, PharmacyMedicalBusiness
Hair salon, spa, nail salonHairSalon, DaySpa, NailSalonHealthAndBeautyBusiness
Plumber, electrician, rooferPlumber, Electrician, RoofingContractorHomeAndConstructionBusiness
Lawyer, notaryAttorney, NotaryLegalService
Hotel, bed and breakfastHotel, BedAndBreakfastLodgingBusiness
Garage, car dealerAutoRepair, AutoDealerAutomotiveBusiness
Accountant, bank branchAccountingService, BankOrCreditUnionFinancialService
Agency, consultant, other professional officeProfessionalServiceLocalBusiness

If the business fits several types, Google accepts an array, for example ["Store", "AutoRepair"]. It does not support additionalType for this purpose.

Which properties does Google require and recommend?

Google's documentation splits the properties in two groups. Only two are required; the recommended ones are what makes the markup useful.

PropertyStatus at GoogleWhat to put in it
nameRequiredThe business name exactly as on the storefront and the Business Profile
addressRequiredA PostalAddress with street, city, region, postal code and country code
geoRecommendedLatitude and longitude with at least 5 decimal places
openingHoursSpecificationRecommendedDays, opening and closing times, seasonal exceptions
telephoneRecommendedThe main number, with country and area code
urlRecommendedThe working page of this specific location
priceRangeRecommendedA relative range such as "$$" or "$20-50", under 100 characters
menu, servesCuisineRecommended (food)Menu URL and cuisine type
departmentRecommendedDistinct units with their own hours or phone (pharmacy inside a supermarket)
aggregateRating, reviewRecommended only for review sitesRatings of other businesses collected by your site, never your own
image, logo, sameAs, areaServed, hasMapNot listed by Google, valid on schema.orgPhotos, logo, profile URLs, service area, map link: useful for entity understanding

The last row matters for AI visibility. sameAs links your page to your Business Profile, social accounts and directory listings, which helps any system confirm that these profiles describe the same entity.

A complete local business schema example in JSON-LD

JSON-LD is the format Google recommends: a script tag of type application/ld+json, placed in the head or the body of the location page. Here is a complete example for a fictional dental practice, to adapt with your own data:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "@id": "https://www.example-dental.com/lyon/#business",
  "name": "Example Dental Lyon",
  "url": "https://www.example-dental.com/lyon/",
  "image": "https://www.example-dental.com/images/lyon-front.jpg",
  "logo": "https://www.example-dental.com/images/logo.png",
  "telephone": "+33 4 00 00 00 00",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Rue de la République",
    "addressLocality": "Lyon",
    "postalCode": "69002",
    "addressRegion": "Auvergne-Rhône-Alpes",
    "addressCountry": "FR"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 45.76012,
    "longitude": 4.83584
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:30",
      "closes": "19:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "09:00",
      "closes": "12:30"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/exampledentallyon",
    "https://www.linkedin.com/company/example-dental"
  ]
}
</script>

Three details make this example robust: the @id gives the business a stable identifier that other blocks on your site (an Organization, a Service, a Review) can reference; the coordinates have 5 decimals as Google asks; and the url points to the location page, not the home page. If you prefer not to write the code by hand, our free schema generator builds the block from a form.

How do you mark up opening hours, holidays and multiple locations?

Opening hours

Use one OpeningHoursSpecification object per group of days with the same hours. Google's documentation covers the special cases:

  • Open late: a single object can run past midnight (Saturday 18:00 to 03:00).
  • Open 24 hours: opens "00:00" and closes "23:59".
  • Closed all day: opens and closes both "00:00".
  • Seasonal hours or holiday closure: add validFrom and validThrough dates (YYYY-MM-DD) to the object.

Update the markup when the hours change, at the same time as your Business Profile. Hours that disagree between the two are a common source of wrong information in Google and in AI answers.

Several locations

Each location needs its own page with its own LocalBusiness block, its own address, phone and hours. Do not stack ten addresses in one block on the home page. The home page carries an Organization block for the brand, and each location page references it with parentOrganization. Our guides to multi-location SEO and local landing pages explain how to build those pages.

Departments

A pharmacy inside a supermarket or a service center inside a car dealership goes in the department array, with only the properties that differ from the main business. Google suggests naming it "{store name} {department name}", unless the department has its own brand.

Service-area businesses

A plumber who works at customers' homes can still use LocalBusiness with the address of the registered office, and describe the covered zone with areaServed. Google does not list areaServed among its properties, but schema.org accepts it, and it keeps your page consistent with a service-area Business Profile.

Does local business schema replace Google Business Profile?

No. The Google Business Profile remains the main source for the local pack and Google Maps. Google's help center states that local results depend mainly on relevance, distance and prominence, and that "businesses with complete and accurate info are more likely to show up". Schema markup works on the other side: it makes your website say the same thing as your profile, in a format machines read without guessing.

CriterionGoogle Business ProfileLocalBusiness schema
Where it livesIn Google's systems, managed by the verified ownerIn the code of your website
Main effectLocal pack, Maps, knowledge panel, reviewsClear entity data for Google, Bing and AI assistants
Who can read itGoogle productsAny crawler that reads your page
VerificationRequired (postcard, video, phone...)None, but it must match visible content
PriorityFirstSecond, as a consistency layer

The link between the two is NAP consistency: name, address and phone written the same way on your profile, your site, your markup and directories. Our definition of NAP details the rules, and the local SEO page places schema among the other local signals.

How do you validate LocalBusiness markup, and which mistakes are common?

Test every location template with two tools: Google's Rich Results Test, which checks eligibility for Google features, and the Schema Markup Validator, which checks the syntax against schema.org. Our structured data validator runs a quick check on any URL. After deployment, the Search Console enhancement reports show errors at scale.

Google's structured data policies set the frame: "Don't mark up content that is not visible to readers of the page." A violation can lead to a manual action that removes rich result eligibility. The mistakes we see most often:

MistakeConsequenceFix
Generic LocalBusiness typeLess precise understanding of the activityMost specific subtype
Address or phone different from the Business ProfileConflicting signals, wrong data in answersSame NAP everywhere
Self-written aggregateRating on your own businessNo review stars, possible manual actionRemove it; display reviews without self-serving markup
Every location in one block on the home pageLocations mixed up, none matched to its pageOne page and one block per location
Hours in the markup not shown on the pageMarkup ignored or flaggedDisplay the hours in the page text
Coordinates with 2 or 3 decimalsImprecise pinAt least 5 decimals
Outdated hours after a changeCustomers sent to a closed shopUpdate the profile and the markup together

The review mistake deserves attention: since 2019, Google no longer shows review stars for "self-serving" reviews that a LocalBusiness or Organization publishes about itself. Our guide to review schema covers the details, and the same logic applies to the FAQ schema: mark up only what the page shows.

Local business schema and GEO: how AI assistants use it

When someone asks ChatGPT, Gemini or Perplexity for "a dentist open on Saturday in Lyon", the answer is built from sources the assistant can read and cross-check: Business Profile data, directories, review platforms and the businesses' own websites. Our study of directories in AI answers shows how often these third-party listings are cited.

Structured data helps in two ways. It gives crawlers unambiguous facts (hours, address, type) that do not depend on parsing a footer, and it ties your site to the same entity as your other profiles through sameAs and consistent NAP. Our guide to structured data for AI search explains the broader picture, and the structured data audit for LLMs shows what a language model extracts from your page. Markup is never enough alone: the facts must also be written in the visible text, because most assistants read the page, not only its JSON-LD.

To see whether the effort pays off, Sorank's AI mention tracking follows the local questions your customers ask and shows whether your business is cited, while GEO optimization helps you publish the location and service content assistants quote. Our page for local businesses sums up the approach.

The rule to remember: one location, one page, one LocalBusiness block, with the same name, address, phone and hours as your Business Profile. Add it, validate it, and update it every time the business changes.

Frequently asked questions

Where should I put LocalBusiness schema on my website?

Put it on the page that describes the location: the home page for a single-location business, and each location page for a business with several addresses. Place the JSON-LD script in the head or body of that page. The brand itself is better described with an Organization block on the home page.

Does local business schema improve local rankings?

Google does not present structured data as a ranking factor, and local pack rankings depend mainly on relevance, distance and prominence of the Business Profile. The markup helps Google understand and display your business information correctly, and keeps your site consistent with your profile. Its value is clarity and eligibility for features, not a direct ranking boost.

Can a service-area business use LocalBusiness schema?

Yes. A business that serves customers at their location can use LocalBusiness, or a more specific subtype such as Plumber, with the address of its registered office. The zone covered can be described with the areaServed property, which schema.org accepts even though Google does not list it. Keep the information consistent with the service area set in the Business Profile.

Our Blog for Ambitious Company

Our free SEO tools

See all our free tools

THEY TRIED SORANK BEFORE YOU

Testimonials from ambitious founders

Organic growthE-commerce

0 to 10000 visitors in 5 months

Celio Fabianomonrobotlavevitre.fr
Organic growthSoftware

0 to 5000 clients in 8 months

Thibault BMsorank.com
Organic growthLeisure and aviation

0 to 1104 clicks in 4 months

Dominiqueflight-sensations-idf.com
Organic growthMusic software

x30 clicks in 4 months

Valentin Cordiertiger-sounds.com
Organic growthHealth and wellness

x30 clicks in 4 months

Rodrigue Bretonalthevia.com