Local Business schema: required vs recommended properties
Google requires only a name and an address for LocalBusiness markup. Everything else is recommended, and the recommended fields are what make the business details complete and consistent with your Business Profile.
| Property | Status | Format | Notes |
|---|---|---|---|
| Business name | Required | Text | |
| Address | Required | Group | Include as many address parts as you can. |
| Telephone | Recommended | Phone number | |
| Website URL | Recommended | URL | The page for this specific location. |
| Image URLs | Recommended | List | High-resolution photos of the business, one URL per line. |
| Price range | Recommended | Text | For example $$ or $10–25. |
| Coordinates | Recommended | Group | |
| Opening hours | Recommended | Repeated group | One row per day. Add several rows if a business opens twice in a day. |
| Business type | Optional | One of a fixed set | Use the most specific type that fits. Google accepts any LocalBusiness subtype. |
| Address › Street address | Optional | Text | |
| Address › City | Optional | Text | |
| Address › State or region | Optional | Text | |
| Address › Postal code | Optional | Text | |
| Address › Country code | Optional | ISO 3166-1 alpha-2 code | Two-letter ISO 3166-1 code. |
| Cuisine served | Optional | Text | Restaurants only. |
| Coordinates › Latitude | Optional | Number | At least five decimal places. |
| Coordinates › Longitude | Optional | Number | |
| Opening hours › Day | Optional | One of a fixed set | |
| Opening hours › Opens | Optional | Text | |
| Opening hours › Closes | Optional | Text | |
| Profile URLs (sameAs) | Optional | List | Social profiles and directory listings, one per line. |
Is LocalBusiness markup eligible for a Google rich result?
Google uses LocalBusiness markup for business details in the knowledge panel, alongside your Business Profile. It is not a standalone rich result, and it does not replace a Google Business Profile.
Status verified on 24 September 2026. Google’s documentation: https://developers.google.com/search/docs/appearance/structured-data/local-business
About Local Business structured data
LocalBusiness markup describes a physical place that customers can visit or that serves a local area. Google uses it, together with a verified Business Profile, to show details such as address, opening hours and phone number in the knowledge panel and local results.
The markup supports the profile; it does not replace it. If you have a physical location, claim your Google Business Profile first, and then make sure the details in your markup match it exactly. Where they disagree, the profile usually wins.
Common Local Business schema mistakes
- Marking up a business at a location the page does not describe. Each location needs its own page with its own LocalBusiness markup, not one block for the whole chain on the home page.
- Adding aggregateRating or review markup to your own business page. Google treats self-serving reviews as ineligible, so leave them out unless the page is genuinely a review site.
- Writing opening hours in 12-hour format. Times must be 24-hour, such as 17:30, and days must be the full English day name.
- Using a generic LocalBusiness type when a more specific one exists — Restaurant, Dentist, HairSalon and many more inherit all the same fields.
- Coordinates with too few decimal places, which puts the pin in the wrong building. Use at least five.
- Marking up a phone number or address that differs from the Google Business Profile. Inconsistent details are a common reason a knowledge panel shows the wrong information.
Local Business schema example
A café with opening hours, coordinates and a phone number, as generated on this page, is shown below. Note the separate OpeningHoursSpecification for each day and the 24-hour times.
{
"@context": "https://schema.org",
"@type": "CafeOrCoffeeShop",
"name": "Green Leaf Café",
"image": "https://example.com/photos/green-leaf-front.jpg",
"url": "https://example.com/lahore",
"telephone": "+92 42 1234567",
"priceRange": "$$",
"servesCuisine": "Coffee and light meals",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Main Boulevard",
"addressLocality": "Lahore",
"addressRegion": "Punjab",
"postalCode": "54000",
"addressCountry": "PK"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 31.52037,
"longitude": 74.35875
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Monday",
"opens": "08:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Tuesday",
"opens": "08:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "23:00"
}
],
"sameAs": "https://www.instagram.com/example"
}How to use it
- Fill in the local business details — the form marks each field Required, Recommended or Optional.
- Watch the JSON-LD and the validation list update as you type.
- Copy the JSON-LD, the HTML script tag or the Next.js snippet, or download the .json file.
- Paste it into your page, then check it with Google’s Rich Results Test.
Frequently asked questions
Which properties are required for LocalBusiness schema?
Google requires name and address. Telephone, url, geo, opening hours, price range and images are recommended and make the listing more complete.
Do I need LocalBusiness schema if I have a Google Business Profile?
It is not required, but it is worth adding. The markup lets you state your details in a form Google can read on your own site, and it helps keep them consistent with the profile.
How do I mark up several locations?
Create a separate page for each location and put that location’s LocalBusiness markup on its page, each with its own address, phone number and hours.
Should I add reviews to my LocalBusiness markup?
Not for your own business. Google’s guidelines exclude self-serving reviews, so review markup on your own business page will not be shown and may be flagged.
How do I write opening hours in JSON-LD?
Use one OpeningHoursSpecification per day or group of days, with dayOfWeek as the English day name and opens and closes as 24-hour times. This generator builds them from the rows you add.
Valid markup makes a page eligible for a rich result; it does not guarantee one. Google decides what to show. Test your page with Google’s Rich Results Test before relying on it.