BrainFeed Solutions
Web Design & DevelopmentDigital Marketing & SEOWorkflow Automation & IntegrationContent & BrandingOngoing Support & Optimisation

Specialisations

Shopify DevelopmentSaaS DevelopmentMobile App Development
View all services  →
WorkVenturesAboutInsights
Book a free 30-min consultation  →Book a call
BrainFeed Solutions

Senior-led digital strategy and AI-augmented delivery for service businesses across AU, US and UK.

Services

Web Design & DevelopmentDigital Marketing & SEOWorkflow AutomationContent & BrandingOngoing Support & OptimisationShopify DevelopmentSaaS DevelopmentMobile App Development

Company

About UsWorkVenturesInsightsFree ToolsContact Us

Legal

Privacy PolicyTerms & Conditions

Let's talk

hello@brainfeedsolutions.com+91 98986 66600

Ahmedabad, India

AU, US & UK business hours covered

Replies within 1 business day

© 2026 BrainFeed Solutions. All rights reserved.

Privacy PolicyTerms & Conditions
Tools/Schema markup

LocalBusiness Schema Generator

Eligible for the Local business listing

Fill in the properties below and this markup can earn the Local business listing in Google Search.

Required

Without these, the markup is not valid.

Use the name on your signage and on your Google Business Profile, character for character.

Address

Two-letter ISO country code, for example US, GB, AU or IN.

Recommended by Google

Valid without them, but you lose eligibility or detail.

Pick the most specific type that is still true. schema.org has dozens more subtypes; these five cover most businesses.

Include the country code. Use the same number as your Google Business Profile.

A symbol range such as $$ or a plain band such as 50 to 200 USD. Google lists priceRange as a recommended property and takes it as free text, so keep it short.

Coordinates

Google lists geo among its recommended LocalBusiness properties. It earns its keep most where a geocoder would struggle: inside a mall, up a lane, or behind another unit.

Opening hours

One row per day. Days you leave out are read as closed, so there is no separate way to say closed.

OptionalAdd these if you have them.

A real photo of the premises works better than a logo. Google does not list image among LocalBusiness's properties; the image guidance it does publish, for the restaurant carousel, asks for crawlable, indexable images of at least 50,000 pixels multiplying width by height.

Not valid yet

2 errors must be fixed before this markup will validate.

  • Google requires a business name and a postal address on a LocalBusiness, and this markup has neither yet, so it will not earn a local rich result.

Live preview

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness"
}

LocalBusiness markup describes a business that customers can visit at a physical address. It carries the name, address, telephone number, opening hours and price range a search engine needs to place you on a map and to answer a question like whether you are open right now. Google still supports this one, so unlike FAQ markup it earns something visible. Two things are true here at once, and most advice gives you only one of them. This markup will not create, claim or edit your Google Business Profile, and on its own it will not put you in the local pack: if you are adding schema in order to rank in the map results, you are solving the wrong problem. Separately, it is genuinely worth adding, because markup that agrees with your profile reinforces the association between the site and the business, can fill gaps where a profile is unclaimed or thin, and states your location, hours and contact details in valid schema.org that any consumer is free to parse. You will also read that this markup feeds AI answer engines: no vendor publishes whether it does, so treat that as an assumption rather than a reason. Consistency is the condition on all of it. If your site says one phone number and your profile says another, you have given Google a reason to trust neither.

What each property does

Tier reflects what Google actually documents for LocalBusiness, not a guess at what looks thorough.

PropertyTierWhat it does
nameRequiredThe trading name, matching your signage and your Google Business Profile.
@typeRecommendedA specific subtype such as Restaurant, Store or ProfessionalService. The generic LocalBusiness is valid but tells Google less.
addressRequiredA PostalAddress node. A string address parses but throws away the structure that makes it useful.
address.streetAddressRequiredStreet number and name, on one line. Google does not itemise which address sub-properties are required, only that address itself is, and asks for as many sub-properties as possible. Marked required here because an address with no street number is not usable.
address.addressLocalityRequiredCity or town. Not individually required by Google, for the same reason as street address above. Marked required here because Google needs a city to place the business.
address.addressRegionRecommendedState, province or region. Skip it only where the country has no such level.
address.postalCodeRequiredPostal or ZIP code. The most precise part of the address. Not individually required by Google, for the same reason as street address above.
address.addressCountryRequiredTwo-letter ISO 3166-1 country code, not the country name. Not individually required by Google, for the same reason as street address above.
telephoneRecommendedInclude the country code. This is what powers click-to-call on mobile.
urlRecommendedThe canonical URL for this location, not the site home page if the two differ.
imageOptionalA photo of the premises. Not listed in Google's LocalBusiness property table at all; the image guidance it does publish, for the restaurant carousel, asks for at least 50,000 pixels multiplying width by height.
openingHoursSpecificationRecommendedAn array of OpeningHoursSpecification nodes, one per day. Days you omit read as closed.
openingHoursSpecification.dayOfWeekRequiredThe day this row covers, spelled out in English.
openingHoursSpecification.opensRequiredGoogle documents hh:mm:ss, for example 09:00:00, and hh:mm is accepted too. Never 9am.
openingHoursSpecification.closesRequiredGoogle documents hh:mm:ss, and hh:mm is accepted too. Use 23:59:59 for a business that closes at midnight.
priceRangeRecommendedA free-text indication of price level, such as $$. Recommended by Google.
geoRecommendedA GeoCoordinates node. Recommended by Google, and most valuable where a geocoder would struggle to find your entrance.
geo.latitudeRequiredRequired once you add a geo node at all. Decimal degrees, not degrees and minutes.
geo.longitudeRequiredRequired once you add a geo node at all. Negative west of Greenwich.

Worked example

A single-location coffee shop, open six days a week, with a storefront photo.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Ravenswood Coffee Roasters",
  "url": "https://ravenswoodcoffee.example",
  "telephone": "+1 312 555 0142",
  "image": "https://ravenswoodcoffee.example/images/storefront.jpg",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "4650 N Damen Ave",
    "addressLocality": "Chicago",
    "addressRegion": "IL",
    "postalCode": "60640",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 41.9689,
    "longitude": -87.674
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Monday",
      "opens": "07:00:00",
      "closes": "18:00:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Tuesday",
      "opens": "07:00:00",
      "closes": "18:00:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Wednesday",
      "opens": "07:00:00",
      "closes": "18:00:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Thursday",
      "opens": "07:00:00",
      "closes": "18:00:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Friday",
      "opens": "07:00:00",
      "closes": "19:00:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "08:00:00",
      "closes": "19:00:00"
    }
  ]
}

Two things to notice. The address is a nested PostalAddress node rather than one string, which is what lets Google match it against the address on your Business Profile. And openingHoursSpecification is an array with one entry per day: Sunday is absent because the shop is closed, and there is no separate closed flag to set.

Common mistakes

Expecting the markup to put you in the local pack

The three-result map pack is drawn from Google Business Profile data, not from your website's structured data, so this markup will not rank you there and cannot substitute for claiming your profile. The value it does have is a separate thing: markup that agrees with your profile reinforces the association between the site and the business, helps Google fill gaps where a profile is unclaimed or thin, and states your location in valid schema.org that any consumer is free to parse. Add it for that. Claim the profile for the map pack.

Name, address and phone that disagree with the Business Profile

Much of the value of this markup is confirming that the entity on your site is the entity in the profile. A different suite number, an old phone number, or Ltd on one and Limited on the other weakens the match rather than strengthening it. Copy the profile exactly.

Using LocalBusiness for a business customers never visit

LocalBusiness asserts a physical location open to the public. A plumber who works at customer sites, or an agency that operates from a home office, should use Organization instead, or LocalBusiness with areaServed and no storefront claim. Publishing a street address customers cannot visit is the version of this that earns a complaint.

One LocalBusiness node repeated on every page of a multi-location site

Each location needs its own node, on its own page, with its own address, phone number and hours. Site-wide markup for one branch tells Google the wrong thing about every other page it appears on.

Human-readable opening hours

Google documents opens and closes in hh:mm:ss form, so 09:00:00, and hh:mm works too. 9am, 9.00 and 9:00 AM are all invalid, and a JSON validator will pass the document while Google makes nothing of the hours. Use 23:59:59 rather than 24:00:00 for a midnight close.

Rating your own business

Google's LocalBusiness guidance says aggregateRating and review are only recommended for sites that capture reviews about other local businesses. A rating you publish about yourself, on your own site, is not what those properties are for.

How to install it

HTML

Paste the script tag into the page for that location, inside <head> or anywhere in <body>. On a single-location site the contact or home page is the right host; on a multi-location site each location page carries its own tag.

WordPress

Check first whether your SEO plugin already emits LocalBusiness markup. Yoast Local SEO and Rank Math both can, and two competing LocalBusiness nodes on one page is worse than one. If nothing is emitting it, paste the tag into a Custom HTML block on the location page, or hook it into wp_head with a conditional for that page ID.

Shopify

Add the tag to templates/page.contact.liquid, or to theme.liquid inside a conditional on the page handle so it fires on the contact page only. Do not put it in theme.liquid unconditionally: that would claim every product and collection page is the storefront.

Frequently asked questions

Will LocalBusiness schema help me rank in the map pack?
Not directly, and nothing you put in this markup will change a map pack position on its own. Local pack rankings come from your Google Business Profile, your proximity to the searcher, and your review profile. What the markup does do is confirm that your website and your profile describe the same business, which reinforces the entity, and state your location and hours in a form any consumer can read without guessing at your HTML.
Should I use LocalBusiness or Organization?
Use LocalBusiness when customers can visit you at a street address during opening hours. Use Organization for everything else: online-only businesses, service-area businesses, and companies whose office is not open to the public. Organization has no address or opening hours requirement.
What do I do if I have several locations?
Give each location its own page and its own LocalBusiness node, each with that branch's address, phone number and hours. Do not put every location into one page, and do not repeat one branch's markup site-wide.
Do I need latitude and longitude?
Usually not, since a complete postal address is normally enough to locate a business. Coordinates are worth adding when the entrance is somewhere a geocoder gets wrong: a unit inside a mall, a building set back off the road, or an address that resolves to a different side of the block.
How do I mark a day the business is closed?
Leave it out. openingHoursSpecification lists the days you are open, and any day with no entry is read as closed. There is no closed flag to set.
Can I include my star rating?
Google's LocalBusiness documentation says aggregateRating and review are only recommended for sites that capture reviews about other local businesses, such as a directory or a review platform. Marking up your own rating on your own site is not the use case those properties describe.

Related generators

FAQ Schema GeneratorArticle Schema Generator

Want this markup built into your site and kept correct as it changes, rather than pasted in by hand? See how we handle that.

Want more than one page fixed?

Get a free audit of your site's technical SEO, structured data and performance.

Get your free audit