Free tool · No signup
Local Business Schema Generator
LocalBusiness markup describes a business people can visit or call: its address, opening hours, phone number and location on a map. Use the most specific subtype that fits, such as Dentist, Restaurant or Plumber.
JSON-LD
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Bakery",
"name": "Example Bakery",
"url": "https://www.example.com/",
"image": "https://www.example.com/storefront.jpg",
"telephone": "+1 555 010 0199",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Market Street",
"addressLocality": "Springfield",
"addressRegion": "IL",
"postalCode": "62701",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 39.78172,
"longitude": -89.65015
},
"servesCuisine": "Bakery, Coffee",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "07:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Saturday",
"Sunday"
],
"opens": "08:00",
"closes": "14:00"
}
],
"sameAs": [
"https://www.instagram.com/examplebakery"
]
}
</script>Valid LocalBusiness markup
In the Rich Results Test, choose Code and paste. Your data stays in this browser: nothing is sent to a server.
example.com
Example Bakery
12 Market Street, Springfield, IL
+1 555 010 0199 · $$ · 07:00–18:00
Google can use it for business details in search and Maps, alongside your Google Business Profile, which matters more for local rankings. Google's gallery
What Google can show
Google can use it for business details in search and Maps, alongside your Google Business Profile, which matters more for local rankings.
Required and recommended properties
Google needs these for Local Business markup to be valid:
| Required | Notes |
|---|---|
| Business name | |
| Street address | |
| City |
| Recommended | Notes |
|---|---|
| Website URL | |
| Photo URL | A photo of the business, such as the storefront or interior. |
| Phone | |
| Price range | A short range such as $$ or $10–30. Keep it under 100 characters. |
| State / region | |
| Postal code | |
| Country code | Two-letter ISO code, such as US, GB or PK. |
| Latitude | At least 5 decimal places. Right-click the location in Google Maps to copy it. |
| Longitude | |
| Opening hours | Days, Opens, Closes |
| Social and profile links | Profiles that are clearly the same entity: LinkedIn, X, Facebook, Instagram, GitHub, Wikipedia. |
A complete example
The example values in the generator above produce this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Bakery",
"name": "Example Bakery",
"url": "https://www.example.com/",
"image": "https://www.example.com/storefront.jpg",
"telephone": "+1 555 010 0199",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Market Street",
"addressLocality": "Springfield",
"addressRegion": "IL",
"postalCode": "62701",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 39.78172,
"longitude": -89.65015
},
"servesCuisine": "Bakery, Coffee",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "07:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Saturday",
"Sunday"
],
"opens": "08:00",
"closes": "14:00"
}
],
"sameAs": [
"https://www.instagram.com/examplebakery"
]
}
</script>Where to paste the code
- WordPress: check what your SEO plugin (Yoast, Rank Math) already outputs, then add the block with a header-code plugin such as WPCode, or in your child theme's
header.phpbefore</head>. For one page only, use a Custom HTML block in that page. - Shopify: for site-wide markup such as Organization, go to Online Store › Themes › Edit code and paste it in
theme.liquidbefore</head>. For products, edit the product section (oftenmain-product.liquid) and use Liquid variables such as{{ product.title | json }}so every product gets its own values. Most themes already output basic Product markup. - Next.js: render it in the page component as
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(data).replace(/</g, "\\u003c") }} />. Escaping<stops a value from closing the script tag early; this site does the same. - Webflow: Page settings › Custom code › Inside <head> tag. For CMS collection pages, add it to the template's page settings and insert fields from the collection.
Test before you publish
Paste the code into Google's Rich Results Test, then test the live page once it's published. Make sure every value matches what people see on the page.
By Muhammad Saif · Updated
Questions
Does LocalBusiness schema help local SEO?
It helps search engines read your name, address, phone and hours correctly, which supports local results. Your Google Business Profile, reviews and consistent listings matter more for map rankings, so treat schema as one part of local SEO, not a shortcut.
Which business type should I choose?
The most specific one that's true: Dentist rather than MedicalBusiness, Plumber rather than HomeAndConstructionBusiness. If nothing fits, LocalBusiness is fine.
How do I mark up a business with several locations?
Give each location its own page with its own LocalBusiness markup, address, phone and hours. Don't list every branch on one page's markup.
Does schema markup improve rankings?
Not directly. Google has said structured data isn't a general ranking factor. It makes pages eligible for rich results, such as review stars, prices and breadcrumbs, which can make a result stand out and earn more clicks.
JSON-LD or Microdata?
JSON-LD. Google recommends it because it sits in one script block, separate from your HTML, so it's easier to add and maintain. Microdata and RDFa still work but are woven into the markup.