Local business (LocalBusiness)
What is local business rich result?
When users search for businesses on Google Search or Maps, they may see a Google knowledge panel with detailed business information or a carousel of related businesses for broader queries like “best NYC restaurants.” To enhance visibility and user experience, businesses can use Local Business structured data to provide information such as business hours, departments, and reviews. Additionally, the Maps Booking API allows businesses to enable reservations, payments, and other actions directly from search results, making it easier for users to engage with the business.
Kindly Refer Google Doc to know more about local business rich result.
What are necessary data for local business rich result?
1. Business Name (rjs-lb-[number]-name
)
<div id="rjs-lb-1">
<p class="rjs-lb-1-name">Hookie Dookie</p>
</div>
2. Image (Thumbnails) (rjs-lb-[number]-img
)
<div id="rjs-lb-1">
<img
class="rjs-lb-1-img"
src="https://i.imgur.com/3aIBedv.jpeg"
alt="picture of reception"
/>
<img
class="rjs-lb-1-img"
src="https://i.imgur.com/RbIZogg.jpeg"
alt="another 1"
/>
</div>
3. Location (rjs-lb-[number]-loc
)
<div id="rjs-lb-1">
<!-- geo will be generated from address -->
<div class="rjs-lb-1-loc">
<!-- loc-st for street -->
<!-- any number of loc-st can be created but 2 is good -->
<p class="stl">008, Papanna street</p>
<p class="stl">St Mark's Rd</p>
<!-- city -->
<p class="ct">Bengaluru</p>
<!-- state -->
<p class="st">Karnataka</p>
<!-- pincode -->
<p class="pc">560001</p>
<!-- country -->
<p class="ctry">India</p>
</div>
</div>
4. Reviews (rjs-lb-[number]-reviews
)
Author type classes,
authorP
- Person type authorauthorO
- Organisation type author
<div id="rjs-lb-1">
<section class="rjs-lb-1-reviews">
<!-- userrating instance 1 -->
<div class="urate">
<!-- rating value -->
<p class="rv">4.5</p>
<!-- max rate -->
<p class="mr">5</p>
<!-- author -->
<p class="raterP">Dean</p>
<!-- published on -->
<p class="rpOn">Amazon</p>
</div>
<!-- userrating instance 2 -->
<div class="urate">
<p class="rv">4.5</p>
<p class="mr">5</p>
<p class="raterP">Someone</p>
<p class="rpOn">Noogle</p>
</div>
</section>
</div>
5. Telephone & Reservation (rjs-lb-[number]-tel
)
<div id="rjs-lb-1">
<p class="rjs-lb-1-tel" data-reserve="true">+91-84259372x3</p>
</div>
6. Price Range & Currency (rjs-lb-[number]-cost
)
<div id="rjs-lb-1">
<p class="rjs-lb-1-cost">INR 200 - INR 500</p>
</div>
7. Work Hours (rjs-lb-[number]-workhours
)
Day(s) Wrapper
wdr
- Range of Working Dayswd
- Single Working Day
Hour Specification Classes
HR
- 24-hour formathr
- 12-hour format
Range separator should be a hyphen (-) between days and times.
<div id="rjs-lb-1">
<section class="rjs-lb-1-workhours">
<p class="wdr">
Sunday - Thursday
<span class="HR">(10:00 - 21:00)</span>
</p>
<p class="wd">
Saturday
<span class="HR">(13:00 - 18:00)</span>
</p>
<p class="wd">
Friday
<span class="hr">(10:00AM - 06:00PM)</span>
</p>
</section>
</div>
8. Menu Link (rjs-lb-[number]-menu
)
<div id="rjs-lb-1">
<a class="rjs-lb-1-menu" href="https://www.restaurant.com/menu">
<p>Menu</p>
</a>
</div>
9. Aggregated Rating (rjs-lb-[number]-aggrate
)
<div id="rjs-lb-1">
<div class="rjs-lb-1-aggrate">
<!-- aggregate rate -->
<p class="arv">100</p>
<!-- max rate in scale-->
<p class="mr">100</p>
<!-- total user rate count -->
<p class="rc">1000</p>
</div>
</div>
10. Keywords (rjs-lb-[number]-kw
)
<div id="rjs-lb-1">
<p class="rjs-lb-1-kw">
<span>#Tag1</span>
<span>#Tag2</span>
<span>#Tag3</span>
<span>#Tag4</span>
</p>
</div>
11. Area Served (rjs-lb-[number]-areaserves
)
<div id="rjs-lb-1">
<p class="rjs-lb-1-areaserves">
<span>Chennai</span>
<span>Osur</span>
<span>Hyderabad</span>
</p>
<!-- OR -->
<p class="rjs-lb-1-areaserves">Bangalore</p>
</div>
12. URL (Website) (id="rjs-lb-[number]"
)
<div id="rjs-lb-1">....</div>
13. Map Iframe (rjs-lb-[number]-map
)
<div id="rjs-lb-1">
<iframe
class="rjs-lb-1-map"
src="https://www.google.com/maps/embed?pb (reduced for brevity)"
width="400"
height="300"
></iframe>
</div>
Function and parameters
destination
is optionalconst richResultType = 'localbusiness';
const filePath = 'local-business.html';
const destination = 'dist/local-business.html'; /* optional */
richie([richResultType], filePath, destination);
Example of a Instance
<body>
<div id="rjs-lb-1">
<!-- name -->
<p class="rjs-lb-1-name">Hookie Dookie</p>
<!-- image=[] -->
<img
class="rjs-lb-1-img"
src="https://i.imgur.com/3aIBedv.jpeg"
alt="picture of reception"
/>
<!-- address -->
<!-- geo will be generated from address -->
<div class="rjs-lb-1-loc">
<p class="stl">008, Papanna street</p>
<p class="stl">St Mark's Rd</p>
<!-- city -->
<p class="ct">Bengaluru</p>
<!-- state -->
<p class="st">Karnataka</p>
<!-- pincode -->
<p class="pc">560001</p>
<!-- country -->
<p class="ctry">India</p>
</div>
<!-- review -->
<section class="rjs-lb-1-reviews">
<div class="urate">
<!-- rating value -->
<p class="rv">4.5</p>
<!-- max rate -->
<p class="mr">5</p>
<p class="raterP">Dean</p>
<p class="rpOn">Amazon</p>
</div>
<div class="urate">
<!-- rating value -->
<p class="rv">4.5</p>
<!-- max rate -->
<p class="mr">5</p>
<p class="raterP">Someone</p>
<p class="rpOn">Noogle</p>
</div>
</section>
<!-- telephone -->
<!-- data-reservation="true" for reservation accepted (Boolean)-->
<p class="rjs-lb-1-tel" data-reserve="true">+91-84259372x3</p>
<!-- cost range -->
<p class="rjs-lb-1-cost">INR 200 - INR 500</p>
<!-- opening hour specification -->
<section class="rjs-lb-1-workhours">
<p class="wdr">
Sunday - Thursday <span class="HR">(10:00 - 21:00)</span>
</p>
<p class="wd">Saturday <span class="HR">(13:00 - 18:00)</span></p>
<p class="wd">Friday <span class="hr">(10:00AM - 06:00PM)</span></p>
</section>
<!-- menu optional menu url-->
<a class="rjs-lb-1-menu" href="https://www.restaurant.com/menu">
<p>Menu</p>
</a>
<!-- aggregate review -->
<div class="rjs-lb-1-aggrate">
<!-- aggregate rate that got -->
<p class="arv">100</p>
<!-- max possibly rate -->
<p class="mr">100</p>
<!-- total user rate count -->
<p class="rc">1000</p>
</div>
<iframe
class="rjs-lb-1-map"
src="https://www.google.com/maps/embed?pb (reduced for brevity)"
width="400"
height="300"
></iframe>
<p class="rjs-lb-1-kw">
<span>#Tag1</span>
<span>#Tag2</span>
<span>#Tag3</span>
<span>#Tag4</span>
</p>
<p class="rjs-lb-1-areaserves">
<span>Chennai</span>
<span>Osur</span>
<span>Hyderabad</span>
</p>
</div>
</body>
Output of a Instance
<script type="application/ld+json">
[
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Hookie Dookie",
"address": {
"@type": "PostalAddress",
"streetAddress": "008, Papanna street, St Mark's Rd",
"addressLocality": "Bengaluru",
"addressRegion": "Karnataka",
"postalCode": 560001,
"addressCountry": "IN"
},
"image": [
"https://i.imgur.com/3aIBedv.jpeg",
"(Reduced for brevity)"
],
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": 4.5,
"bestRating": 5
},
"author": { "@type": "Person", "name": "Dean" },
"publisher": { "@type": "Organization", "name": "Amazon" }
},
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": 4.5,
"bestRating": 5
},
"author": { "@type": "Person", "name": "Someone" },
"publisher": { "@type": "Organization", "name": "Noogle" }
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 12.971167914890476,
"longitude": 77.5978368737318
},
"url": "https://www.cresteem.com/pages/localbusiness#rjs-lb-1",
"telephone": "+91-84259372x3",
"priceRange": "INR 200 - INR 500",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday"
],
"opens": "10:00",
"closes": "21:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "13:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday"],
"opens": "10:00",
"closes": "18:00"
}
],
"acceptsReservations": true,
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 100,
"bestRating": 100,
"ratingCount": 1000
},
"areaServed": ["Chennai", "Osur", "Hyderabad"],
"menu": "https://www.restaurant.com/menu",
"keywords": "#Tag1, #Tag2, #Tag3, #Tag4"
}
]
</script>
Let’s see what’s next!