Local Business Structured Data: Hours, Address, and What Google Requires
Local business structured data is the block that tells Google the name and the street address of a place customers can visit. Google's local business guide says those two are required. A map pin, opening hours, a phone number with a country code, the site URL, and a short price range are recommended, not a substitute for the name and address [1].
Does the markup have to match the page?
Yes. Google's structured data introduction says not to mark up invisible content, and a smaller set of complete properties beats incomplete ones [2]. If the footer says one address and the script says another, you do not have a complete property. You have a contradiction. Put the address where a person can read it, then copy that into the markup.
How precise does the map pin need to be?
Google recommends latitude and longitude with at least five decimal places [1]. A pin that only has two decimal places can land on the wrong block. Check it against the door, not against the center of the city.
How do you write hours that pass midnight?
In one openingHoursSpecification, not two. Google says hours that run past midnight stay in a single specification [1]. A shop that closes at 2:00 in the morning is not "closed at midnight and open again at midnight." A place that is open 24 hours is 00:00 to 23:59 [1]. A day you are closed all day is opens 00:00 and closes 00:00 [1]. Seasonal hours use validFrom and validThrough [1].
What about a second counter or a department?
Google's local business type includes a department for a distinct part of the same business [1]. Each department still needs its own published facts, not a copied block with a guess at the hours. If you have not published those hours on the page, leave the department out [2].
Can you add your own star rating?
No. The local business guide says review and aggregateRating markup is for sites that collect reviews about other businesses. Self-serving reviews are not eligible [1]. The review snippet guide says the same thing, including a widget that only shows your own reviews [3]. Stars are not a field you fill in because the business feels highly rated.
Will the hours show in search if the markup is valid?
Not necessarily. Google says it does not guarantee rich results, a manual action is possible if the markup abuses the feature, and a recrawl can take days [1]. The Rich Results Test tells you whether the syntax is readable [2]. It does not publish the listing. A Google Business Profile is a different product from this markup. Both can be true. Neither one forces the other.
What else should the page let Google fetch?
The page itself. Product and variant docs make the same point as the general rule: if robots.txt, noindex, or a login blocks the URL, Google cannot use what is on it [4]. A sitemap can list the contact page. A sitemap does not guarantee that Google will crawl it [5]. The hours in the script are useless if the contact page is disallowed.
Should the logo be the image for that page?
Google's image guidance says to avoid the logo, and to avoid an extreme aspect ratio, when you name a representative image for the page [6]. A photo of the shopfront is a better stand-in than the wordmark. The logo can stay in the header. It does not have to be the image that represents the contact page.
- Required — name and address, written on the page.
- Recommended — geo with five decimal places, hours, phone with country code, URL, price range under 100 characters.
- Hours past midnight — one specification, not a split at 00:00.
- Closed all day — opens and closes at 00:00.
- Stars — not for a business rating itself.
How does this sit next to the rest of the site?
The contact page is one of the pages a small site needs, and the hours belong there in sentences before they belong in JSON. A Business Profile still needs the same hours, typed in that product, not only in the website script. Website development can add the markup once the address is stable. Maintenance is how a holiday closure gets into both places before the long weekend.
What should you check before you add the script?
Read the contact page out loud. Name, street, hours, phone. If any of those are missing, write them first [1]. Then match the script to that text, including a day that closes after midnight [1]. Run the test. Wait for a recrawl. Do not add a star rating of your own to hurry it [3].
Sources & references
- Google Search Central: Local business structured data.
- Google Search Central: Intro to structured data.
- Google Search Central: Review snippet structured data.
- Google Search Central: Product variant structured data.
- Google Search Central: Learn about sitemaps.
- Google Search Central: Google image SEO best practices.
Local business markup rules are on the linked Google page. Check the current page before you publish hours.
If the hours on the site and the hours in search do not match, we can line up what the page actually says.
Talk to us arrow_right_alt