Local Business Schema Generator

Pick your exact business type, add your address, hours and service area, and get validated LocalBusiness JSON-LD ready to paste and test in Google.

Runs entirely in your browser. Nothing you add is sent to us.

Create a free account to use the Local Business Schema Generator

Free forever for this tool. Takes a few seconds — then you come straight back here.

  • All 150 free tools, one login
  • Free website audit with fixes
  • Search Console dashboard
  • Free keyword rank tracker

Already have an account? Sign in

Published it? Verify it with the free Schema validator →

Local Business Schema Generator — local business schema generator

A local business schema generator turns your business details into the JSON-LD structured data that search engines read to understand who you are, where you are, when you are open and which area you serve. This one is built only for local businesses. Search more than 80 schema.org types, from Dentist and Plumber to Hotel and AutoRepair, then build opening hours day by day with split shifts, 24-hour days and holiday closures. Service-area businesses can leave their street address out, and food, lodging and medical businesses get extra fields for menus, cuisine, check-in times and medical specialties. As you type, the code updates and is checked against the properties Google lists as required and recommended. Copy it, download it, or open Google's Rich Results Test. It all runs in your browser.

How to use the Local business schema

  1. 1 Pick the most specific business typeSearch the list for your trade or category, such as Dentist, HVACBusiness, CafeOrCoffeeShop or RealEstateAgent. Use a generic type only when nothing narrower fits.
  2. 2 Enter your name, contact details and addressUse exactly the name, phone and address shown on your website and your Google Business Profile. Tick service-area business if customers do not visit your address.
  3. 3 Build your opening hoursSet each day to open, closed or 24 hours. Add split hours for lunch breaks, copy a day to the rest of the week, and add holiday or seasonal hours with dates.
  4. 4 Fill the type-specific and optional fieldsAdd a menu and cuisine for restaurants, check-in times for hotels, medical specialties for clinics, plus price range, areas served and official profile links.
  5. 5 Fix the checks, copy and testClear any required items in the checks panel, copy the script into the location page, publish, then run the live URL through Google's Rich Results Test.

What local business schema does

LocalBusiness is the schema.org type for an organization with a physical place or a defined service area: a dental practice, a roofing company, a cafe, a hotel, a law office. Marking up a location page with it tells search engines, in a format they do not have to guess at, the business name, its category, the address and coordinates, the phone number, the opening hours and the profiles that belong to it.

Google documents a local business structured data feature that can feed details such as hours and contact information into its results, alongside what it learns from your Google Business Profile and the rest of the web. The markup does not replace that profile, which remains the main source for map results, and Google does not treat structured data as a general ranking boost. What it does is remove ambiguity: your hours, address and category are stated once, in a form machines can read reliably, on a page you control.

If you need other schema types, such as Article, Product, FAQPage or BreadcrumbList, our general Schema Markup Generator covers those. This tool goes deeper on the one type that matters most for businesses that serve a local market.

Choosing the right schema.org type

Schema.org organizes local businesses as a tree. LocalBusiness sits at the top, broad groups such as HomeAndConstructionBusiness, FoodEstablishment, MedicalBusiness and AutomotiveBusiness sit beneath it, and specific types like Plumber, Restaurant, Dentist and AutoRepair sit at the bottom. The more specific type carries everything the parent does, so choosing Plumber over HomeAndConstructionBusiness tells search engines more for free.

Pick the type that is true of the business as a whole, not of a single service. A general contractor who also does some roofing is still a GeneralContractor. Every type in our list is a real schema.org type; invented types are ignored. Some categories, such as solar installers or home care agencies, have no dedicated type, so use the nearest real parent, for example HomeAndConstructionBusiness or MedicalBusiness, and describe the speciality in the name and description.

  • Trades and home services: Plumber, Electrician, HVACBusiness, RoofingContractor, GeneralContractor, HousePainter, Locksmith, MovingCompany.
  • Health: Dentist, MedicalClinic, Physician, Optician, Pharmacy, Physiotherapy and VeterinaryCare. VeterinaryCare is not a LocalBusiness subtype in schema.org, so the tool outputs it together with LocalBusiness.
  • Food and lodging: Restaurant, CafeOrCoffeeShop, Bakery, BarOrPub, Hotel, Motel, BedAndBreakfast, Hostel and Resort.
  • Professional services: LegalService, AccountingService, InsuranceAgency, RealEstateAgent and FinancialService. Schema.org now prefers LegalService over the older Attorney type.

Required and recommended properties

Google's documentation for local business markup lists only two required properties: name and address, where address is a PostalAddress. It then recommends a longer list, including url, telephone, geo coordinates, openingHoursSpecification, priceRange and, for food businesses, menu and servesCuisine. The checks panel in this tool follows that split, so a red item means the markup is incomplete and a blue tip means you are leaving out something useful.

Fill in the address in parts rather than as one line: streetAddress, addressLocality for the city, addressRegion for the state or province, postalCode and a two-letter ISO country code such as US, CA or GB. Write the phone number with its country code. For coordinates, Google recommends at least five decimal places, which pins the location to within a few feet; the easiest way to get them is to right-click your entrance in a map app.

Use the url of the specific location page, and give the business a stable @id so other markup on your site can refer to it. The tool builds that @id from your URL automatically. A price range such as $$ or $20-50 helps people set expectations; keep it short, as Google asks for fewer than 100 characters.

Opening hours, split shifts and holiday hours

Hours are where local markup most often goes wrong, either because the format is fiddly or because the schema and the visible page disagree. The builder writes openingHoursSpecification for you and groups days that share the same hours into one entry, so Monday to Friday 9 to 5 becomes a single block rather than five.

Split hours, such as a clinic that closes for lunch, produce two entries for that day, one for each period. A day set to open 24 hours is written as opening at 00:00 and closing at 23:59, the pattern Google's documentation uses. Closed days are simply left out. If you close after midnight, enter the real times, for example 18:00 to 02:00.

Holiday and seasonal hours are added as extra entries with validFrom and validThrough dates. A day you are closed is written with both opens and closes set to 00:00, which is how Google's examples mark a full-day closure. Remember to update or remove these entries once the dates pass, and change the hours on your Google Business Profile too, because the profile is what most people see on maps.

Service-area businesses and hidden addresses

Many trades, cleaners, mobile groomers and home care providers travel to customers and do not want their home address on the web. Google Business Profile lets these service-area businesses hide the address and list the areas they serve instead. Your structured data should tell the same story.

Tick the service-area option and the generator leaves streetAddress, the map link and the geo coordinates out of the output, while keeping the city, region, postal code and country. That still satisfies the address requirement with a PostalAddress, without publishing a street you have chosen to keep private. Then list the towns, counties or regions you cover under areas served; each becomes a Place in areaServed.

Be honest about coverage. List the places you genuinely serve and that also appear on your website, rather than every city within a hundred miles. If you do serve customers at your premises, show the full address on the page and in the markup.

Reviews, ratings and what to leave out

You will notice this generator has no star rating fields. That is deliberate. Google's review snippet guidelines say that self-serving reviews, where a business marks up reviews of itself on its own site, are not eligible for star ratings on LocalBusiness and Organization markup. Adding an aggregateRating copied from another platform, or one made up, also breaks the guidelines and can lead to a manual action that removes rich results from your site.

The better route is to collect genuine reviews on your Google Business Profile and other independent platforms, and link to those profiles through sameAs. Keep sameAs to official profiles you control, such as Facebook, Instagram, LinkedIn, Yelp or an industry directory listing.

The same honesty rule applies to every field. Do not mark up hours, prices, services or areas that are not true or not visible to visitors. Structured data should describe the page and the business, not promote them.

Multiple locations and departments

A business with several branches should give each one its own page and its own LocalBusiness block, with that branch's address, phone number, hours and URL. Do not put a list of every branch in one block on the home page. The parent brand field adds a parentOrganization link from each location to the company, which helps tie the branches together.

Departments inside one location, such as a pharmacy within a grocery store or a service center within a car dealership, can be described with schema.org's department property, each with its own name, phone and hours. After publishing, run the live page through the Rich Results Test and the schema.org validator, fix anything they flag, and recheck whenever your hours or details change.

Examples you can copy

Dentist with split Wednesday hours and a holiday closure

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "@id": "https://www.example.com/#business",
  "name": "Riverside Family Dental",
  "url": "https://www.example.com/",
  "telephone": "+1 512 555 0142",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1200 River Road, Suite 4",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 30.26715, "longitude": -97.74306 },
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Thursday", "Friday"], "opens": "08:00", "closes": "17:00" },
    { "@type": "OpeningHoursSpecification", "dayOfWeek": "Wednesday", "opens": "08:00", "closes": "12:00" },
    { "@type": "OpeningHoursSpecification", "dayOfWeek": "Wednesday", "opens": "13:00", "closes": "19:00" },
    { "@type": "OpeningHoursSpecification", "opens": "00:00", "closes": "00:00", "validFrom": "2026-11-26", "validThrough": "2026-11-26" }
  ],
  "priceRange": "$$",
  "medicalSpecialty": "https://schema.org/Dentistry"
}
</script>

Service-area plumber with no street address

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Northside Plumbing",
  "url": "https://www.example.com/",
  "telephone": "+1 614 555 0187",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Columbus",
    "addressRegion": "OH",
    "postalCode": "43215",
    "addressCountry": "US"
  },
  "areaServed": [
    { "@type": "Place", "name": "Columbus" },
    { "@type": "Place", "name": "Dublin" },
    { "@type": "Place", "name": "Westerville" }
  ],
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], "opens": "00:00", "closes": "23:59" }
  ]
}
</script>

Common mistakes to avoid

Using the generic LocalBusiness type when a specific one exists

Plumber, Dentist or Restaurant says more than LocalBusiness. Search the list before settling for a parent type.

Hours in the markup that differ from the page and your profile

Search engines compare sources. Keep schema, the visible page and your Google Business Profile in step, including holidays.

Adding a star rating for your own business

Self-serving reviews are not eligible for review stars on LocalBusiness markup, and invented ratings risk a manual action.

Publishing a home address you meant to hide

If you are a service-area business, tick the option so the street address and map pin stay out of the code.

One block listing every branch

Each location needs its own page and its own markup with that branch's address, phone and hours.

Relative or broken URLs

url, logo, images and sameAs must be full addresses starting with https://, and each should load.

Frequently asked questions

On the page that represents that location, usually the home page for a single-location business or each branch page for several. Paste the script in the head or body, or in your CMS or SEO plugin's custom schema field.

Not directly. Map results rely mainly on your Google Business Profile, relevance, distance and prominence. Schema helps search engines read your details accurately, so keep it consistent with your profile.

Only name and address are required. Google recommends adding url, telephone, geo coordinates, opening hours and price range, plus menu and cuisine for food businesses. The checks panel flags each one.

Choose the nearest real parent type, such as HomeAndConstructionBusiness, MedicalBusiness, Store or ProfessionalService. Made-up types are ignored, so describe the speciality in the name and description instead.

Add a special hours row with a start and end date. For a full-day closure, the tool writes opens and closes as 00:00 with validFrom and validThrough, which matches Google's examples.

Yes. Tick service-area business. The output keeps city, region, postal code and country, drops the street address and coordinates, and lists the areas you serve.

The Schema Markup Generator covers several types in one form. This tool is only for local businesses and adds a searchable type list, a full hours builder, holiday hours, service-area handling, type-specific fields and guideline checks.

No. Your profile drives map results and reviews. Structured data on your own site supports it by stating the same facts clearly, so keep the two consistent.

Learn more

Free website audit

See how your site scores, free

Speed, SEO, DNS, email (SPF/DKIM/DMARC) and security in one scan, with a prioritised fix list.