Opening Hours and
Special Hours Schema
Communicating operating hours in structured format — including holidays and special events.
What It Is
The openingHoursSpecification property allows businesses to communicate exact operating hours to Google in structured, machine-readable format — including different hours for different days, split shifts, and special hours for holidays. Correctly implemented opening hours appear in Knowledge Panels and help Google display accurate 'open now' and 'closes soon' status in search results. Key format details: dayOfWeek uses full names (Monday, not Mon), opens and closes use 24-hour HH:MM format (09:00, 17:00), split shifts require two separate specification objects for the same day, and special hours use specialOpeningHoursSpecification.
Why It Matters
Hours accuracy directly affects user behavior: a business showing as 'Closed' when it's actually open loses visits in real time. Hours discrepancies between schema and GBP reduce Google's confidence in both sources. For businesses with complex or seasonal hours — restaurants, medical practices, seasonal retail — accurate structured hours are a significant competitive differentiator in local results where 'open now' filtering is heavily used.
Common Causes
Understanding why this failure occurs is the first step to fixing it permanently.
GBP-Schema Hours Mismatch
GBP hours updated for a holiday or seasonal change without simultaneously updating the schema — creating conflicting hours data that reduces Google's confidence in both sources.
12-Hour Format Used Instead of 24-Hour
opens and closes values formatted as '9:00 AM' instead of '09:00' — the schema specification requires 24-hour format and 12-hour values may not parse correctly.
Split Shifts Not Separated
A restaurant open 11:00–14:00 and 17:00–22:00 implemented as a single openingHoursSpecification instead of two separate objects — causing incorrect hours display.
Missing Special Hours for Known Closures
No specialOpeningHoursSpecification for holidays like Christmas and Thanksgiving — causing Google to display incorrect 'Open' status when the business is actually closed.
The Fix Blueprint (Interactive SOP)
Check off each step to monitor your implementation progress live!
Tools
-
Google Business Profile
Free | The authoritative hours source — always pull schema hours from GBP and update both simultaneously when hours change -
Google Rich Results Test
Free | Shows a preview of how hours will display — confirms correct parsing of 24-hour format and split shifts -
schema.org/openingHoursSpecification
Free | Full specification reference including validFrom/validThrough date fields for special hours
Time to Fix
Pro Tip
Update schema hours simultaneously with every GBP hours change.
A common mistake is updating GBP hours for a holiday or seasonal change but forgetting to update the schema — creating a discrepancy between the two entity declarations that reduces Google's confidence in the hours data for both sources. Build schema hours updates into your client workflow as a required step every time GBP hours are changed. Treat them as a single coordinated update, not two separate tasks that can be done independently.