SEO Tools

Local Business Schema Generator

Use this free Local Business Schema Generator to create valid LocalBusiness JSON-LD structured data for your business location. Add your address, phone, opening hours, and geo coordinates, then copy markup that helps search engines confirm exactly who and where you are. No sign-up required.

Address and Hours Specific Subtypes 100% Free

Business Information

Day Opens Closes
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Leave a day blank if closed.

One URL per line (Facebook, Instagram, LinkedIn, Yelp, etc.)

Use only if this business is a department within a larger store/organization.

Only add real ratings collected from genuine customers. Fake or self-generated ratings violate Google's guidelines and can lead to a manual penalty.

Schema Preview

No Schema added yet

Copy this code and paste it in the <head> section of your website's HTML.

Read This First — What LocalBusiness Markup Does and Does Not Do

Plenty of pages imply that adding LocalBusiness schema gets you into Google's local pack and onto Maps. That is not how it works, and being clear about it will save you time.

Google Business Profile is what drives local pack and Maps visibility

Google's own documentation states that the way to update your business information in Google is through the Business Profile, not through markup on your website.
What LocalBusiness markup DOES What it does NOT do

Confirms and corroborates your business details to search engines

Get you into the local pack

Helps disambiguate your business from similarly named ones

Replace a Google Business Profile

Feeds AI assistants answering near me and open now queries

Guarantee rich results on its own

Ties locations to your Organization entity, supporting E-E-A-T

Fix inconsistent information elsewhere

Supports Bing, other search engines, and AI systems

Produce star ratings for your own business

The honest summary: markup is corroboration, not a listing. If your Business Profile is unclaimed or your details are inconsistent across the web, structured data will not fix that. Claim and complete the Business Profile first, then add markup that matches it exactly. The two working together is considerably stronger than either alone.
The corroboration role is growing

AI assistants answering local questions lean on structured data to resolve which business is which, so clean markup increasingly affects whether you get cited in an AI answer even where it does not change a traditional ranking.

Why You Are Here

The first situation is a business with a physical location that wants its address, hours, and contact details stated unambiguously in a machine-readable form, so search engines and AI systems have no doubt about the facts.

The second is a multi-location business needing a separate, correct markup block for each location page. This is where markup earns its keep, because each location needs its own distinct entity and doing that by hand across dozens of pages is where errors creep in.

The third is diagnosing why local visibility is poor. Often the answer lies in the Business Profile or in inconsistent details across the web rather than in the markup, and the section above explains why.

What This Tool Does

The Local Business Schema Generator builds valid LocalBusiness JSON-LD from a simple form.

Choose your business subtype, enter your name, address, phone, URL, opening hours, and geo coordinates, and the tool assembles correctly structured JSON-LD with PostalAddress, GeoCoordinates, and OpeningHoursSpecification nested properly, with the script tag included. Copy it and paste it into your page.

Everything runs in your browser. Nothing is uploaded or stored.

Use the Most Specific Subtype

Google's guidance is explicit: use the most specific LocalBusiness subtype available rather than the generic type. A specific subtype tells search engines what kind of business you are, not merely that you are one.

Business Subtype

Restaurant

Restaurant

Cafe

CafeOrCoffeeShop

Dentist

Dentist

Law firm

LegalService

Plumber, electrician, builder

HomeAndConstructionBusiness or a child of it

Hair or beauty salon

HealthAndBeautyBusiness

Gym

HealthClub

Consultant or agency

ProfessionalService

Shop

Store or a specific child such as BookStore

Hotel

Hotel

Estate agent

RealEstateAgent

Vehicle repair

AutoRepair

For businesses offering several services, pass an array of types

"@type": ["Electrician", "Plumber", "Locksmith"]

// additionalType is NOT supported for this.
// An array is the correct approach.
LocalBusiness is a subtype of Organization, so Google recommends following the Organization guidance as well as the local-specific properties.

Physical Location or Not

This distinction determines whether LocalBusiness is the right type at all.

Your situation Type to use

Premises customers can visit

LocalBusiness subtype

Service-area business travelling to customers

LocalBusiness subtype, with service area defined

Purely online, no public premises

Organization

Online shop with no storefront

Organization

LocalBusiness subtypes describe businesses with a real-world presence. If you have no premises and do not travel to customers, Organization is the correct type and our Organization Schema Generator covers it. For service-area businesses, confirm your eligibility against Google's Business Profile guidelines before publishing markup, since the profile rules and the markup should agree.

Property Reference

Property Status Notes

@type

Required

Most specific subtype, or an array

name

Required

Exactly as it appears on your Business Profile

address

Required

PostalAddress object

address.streetAddress

Required

Street and number

address.addressLocality

Required

Town or city

address.addressRegion

Recommended

County, state, or region

address.postalCode

Required

Postcode or ZIP

address.addressCountry

Required

Two-letter ISO country code

telephone

Recommended

Full international format

url

Recommended

Your website or location page

image

Recommended

Photograph of the premises

geo

Recommended

GeoCoordinates, five decimal places minimum

openingHoursSpecification

Recommended

Structured hours

priceRange

Recommended

Symbol range or a currency range

sameAs

Recommended

Social profiles and Business Profile URL

servesCuisine

Restaurants

Cuisine type

menu

Restaurants

Menu URL

acceptsReservations

Restaurants

True or false

department

Optional

For distinct departments at one address

aggregateRating

NOT ELIGIBLE

See the review section below

Geo coordinates need precision

Five decimal places is the practical minimum for accurate placement. Fewer decimals can put your pin a street or more away from your actual door.

sameAs is more useful than it looks

Linking your social profiles and Google Business Profile URL helps search engines connect the entity on your site to the entity they already know about elsewhere, which is exactly the corroboration role markup plays best.

Opening Hours

openingHoursSpecification handles complexity that a simple string cannot: lunch closures, different weekend hours, and seasonal variations.

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday",
                  "Thursday", "Friday"],
    "opens": "09:00",
    "closes": "17:30"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Saturday",
    "opens": "10:00",
    "closes": "16:00"
  }
]

A lunchtime closure needs two blocks for the same day

One for the morning and one for the afternoon. A single block cannot express a gap.

Seasonal hours use validFrom and validThrough

These bound a block to a specific date range.

Closed all day

Expressed by omitting that day entirely, or by setting opens and closes both to 00:00.

Example Output

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "Northgate Dental Practice",
  "image": "https://example.com/images/practice-front.jpg",
  "url": "https://example.com/northgate",
  "telephone": "+44 161 496 0000",
  "priceRange": "££",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "42 Northgate Street",
    "addressLocality": "Manchester",
    "addressRegion": "Greater Manchester",
    "postalCode": "M1 4AB",
    "addressCountry": "GB"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 53.48095,
    "longitude": -2.23743
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
      "opens": "08:30",
      "closes": "17:30"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Friday",
      "opens": "08:30",
      "closes": "13:00"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/example",
    "https://www.instagram.com/example"
  ]
}

Multiple Locations

Each location gets its own LocalBusiness block on its own page. Do not attempt to describe several locations in one block.

The pattern that works  

A dedicated page per location

Each with its own URL

One LocalBusiness block per page

Describing that location only

name may repeat across locations

But the address must differ

Each block linked to the parent Organization

Where relevant

Details matching that location's Business Profile

Exactly

department exists for genuinely distinct departments operating at a single address, such as a service desk and a showroom in one building. It is not for separate branches.

Reviews — LocalBusiness Cannot Show Its Own Stars

This is the rule that catches the most local businesses, and it is worth stating plainly.

Google does not display review snippets for LocalBusiness markup when the business being reviewed controls the reviews

This has applied since September 2019. Testimonials on your own site marked up with LocalBusiness and aggregateRating will not produce stars.
Embedding a widget does not help

Pulling your Google Business Profile or Facebook reviews onto your page through a widget leaves you in exactly the same position, because Google's wording covers embedded third-party widgets explicitly.
There is no penalty, though

Google has said self-serving review markup does not trigger a manual action. The stars simply will not appear.
What does work

A well-maintained Google Business Profile. Reviews collected there appear in local results and the Knowledge Panel through a mechanism that requires no markup on your site whatsoever. LocalBusiness review markup is only eligible when you are reviewing OTHER businesses, as a directory or review site would.

Common Mistakes to Avoid

Expecting Markup to Replace a Google Business Profile

LocalBusiness structured data corroborates your details; it does not create a listing. Local pack and Maps visibility come from the Business Profile, and Google's documentation says so directly. A business with perfect markup and an unclaimed profile will not appear where it wants to. Claim and complete the profile first, then add markup that matches it exactly.
Using the Generic LocalBusiness Type

Marking up as plain LocalBusiness when a specific subtype exists gives away useful information. Dentist, Restaurant, LegalService, and HealthClub all tell search engines what kind of business you are rather than merely that you are one. If several apply, pass them as an array rather than reaching for additionalType, which is not supported.
Details That Do Not Match Your Business Profile

Your name, address, and phone number in the markup should match your Google Business Profile character for character. A different phone format, an abbreviated street name, or a slightly different trading name creates ambiguity exactly where the markup is meant to remove it. The whole value of corroboration depends on the two sources agreeing.

Quick Reference

Item Detail

Type

Most specific LocalBusiness subtype

Multiple services

Array of types

additionalType

Not supported

No physical location

Use Organization

Local pack

Comes from Google Business Profile

Markup role

Corroboration, not a listing

NAP

Must match your Business Profile exactly

Geo

Five decimal places minimum

Hours

OpeningHoursSpecification, one block per period

Lunch closure

Two blocks for that day

Multi-location

One page and one block per location

Own reviews

No stars, no penalty either

sameAs

Link profiles to connect the entity

Frequently Asked Questions

What is a local business schema generator?

A local business schema generator is a free online tool that turns your business details into valid LocalBusiness JSON-LD structured data. You enter your name, address, phone, hours, and location coordinates, and this Local Business Schema Generator produces correctly structured Schema.org markup ready to paste into your page.

Will LocalBusiness schema get me into Google's local pack?

No. Local pack and Maps visibility come from your Google Business Profile, and Google's documentation states that the profile is how you update your business information in Google. LocalBusiness markup corroborates your details to search engines and AI systems, which supports your local presence, but it does not create a listing or replace the profile.

Which LocalBusiness subtype should I use?

The most specific one available for your industry. Use Dentist rather than LocalBusiness, Restaurant rather than FoodEstablishment, LegalService for a law firm, and HealthClub for a gym. If your business genuinely offers several distinct services, pass an array of types such as Electrician, Plumber, and Locksmith. additionalType is not supported for this purpose.

Should I use LocalBusiness or Organization?

Use a LocalBusiness subtype if you have premises customers can visit, or if you travel to customers as a service-area business. Use Organization if you operate purely online with no public location. LocalBusiness is itself a subtype of Organization, so Google recommends following the Organization guidance in addition to the local-specific properties.

Why are my star ratings not showing for my business?

Because Google does not display review snippets for LocalBusiness markup when the business controls the reviews, a restriction in place since 2019. Testimonials on your own site will not produce stars, and embedding a review widget does not change that. Reviews collected through your Google Business Profile appear in local results through a separate mechanism that needs no markup.

How do I mark up multiple business locations?

Give each location its own page and its own LocalBusiness block describing only that location. Do not attempt to list several addresses in one block. The business name may repeat across locations, but each address must be distinct, and each page's details should match that location's Business Profile.

How precise do geo coordinates need to be?

Five decimal places is the practical minimum. Fewer decimals reduce accuracy enough that your pin can land a street or more from your actual entrance. You can take accurate coordinates from your Google Maps listing, and they should point at the customer entrance rather than the centre of the building.

How do I handle a lunchtime closure in opening hours?

Use two OpeningHoursSpecification blocks for that day, one covering the morning and one the afternoon. A single block defines a continuous period and cannot express a gap. Markup from this Local Business Schema Generator supports multiple blocks per day, along with validFrom and validThrough for seasonal variations.

Comments

Login to leave a comment

No comments yet. Be the first to comment!