In short. Put an OpeningHoursSpecification under ContactPoint.hoursAvailable and describe its weekdays, times and validity dates.
Definition: Schema.org defines
ContactPointas a contact point, with a Customer Complaints department as an example. ItshoursAvailableproperty takes anOpeningHoursSpecification, which describes the days and times when that service or contact is available.
Key facts
- Schema.org's ContactPoint definition lists
hoursAvailablewithOpeningHoursSpecificationas its expected value type. - The hoursAvailable property describes the hours during which a service or contact is available and is used on
ContactPoint. - OpeningHoursSpecification assigns
dayOfWeek,opensandclosesto a time interval, withvalidFromandvalidThroughavailable for a validity period. - Google's Organization structured data documentation treats
contactPointas aContactPointand asks publishers to include all support methods available to users. - Google's Local business documentation documents
openingHoursSpecificationfor the hours of a business location and accepts an array or a single object.
How is hoursAvailable attached to a contact point?
Start with the ContactPoint entity. Schema.org uses the type for a contact point belonging to a person or organization. The contactType property identifies the point's purpose, such as customer service or technical support. Put the service schedule in hoursAvailable; its expected value is OpeningHoursSpecification.
The following JSON-LD combines the property paths documented by Schema.org with the weekday and time format shown in Google's business-hours example:
{
"@context": "https://schema.org",
"@type": "Organization",
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer service",
"hoursAvailable": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "21:00"
}
}
}
The organization owns the contactPoint property, while the contact point owns hoursAvailable. A contact point can also carry its telephone number, email address, service area or available language when those details describe that channel.
Which fields describe the schedule?
OpeningHoursSpecification is a structured value for the opening hours of a place or a service inside a place. dayOfWeek identifies the weekdays for which the interval is valid. opens gives the opening hour and closes gives the closing hour.
Use validFrom and validThrough when the interval has a date boundary. Google's business-hours documentation uses both fields for seasonal hours and describes omitted validity dates as year-round hours in its regular-hours example. For a weekly service schedule with no stated date range, the object in the example above therefore contains weekdays and times without those two fields.
Overnight hours stay in one specification. Schema.org states that when closes is earlier than opens, the range is assumed to continue into the next day. Google's example represents Saturday 18:00 to Sunday 03:00 with dayOfWeek set to Saturday, opens set to 18:00 and closes set to 03:00.
How does this differ from business-location hours?
Google's 8 September 2026 Organization documentation uses contactPoint for the best way for a user to contact a business and shows a ContactPoint object with telephone and email. It does not use that example to define service hours.
Google's Local business documentation uses openingHoursSpecification for the hours during which a business location is open. That property can be a single OpeningHoursSpecification object or an array, and its table describes opening and closing times in hh:mm:ss format. Use the property that matches the entity whose hours are being described: hoursAvailable for the contact channel, openingHoursSpecification for the business location.
How should you check the markup?
First check the property nesting and values against the Schema.org definitions: ContactPoint should contain hoursAvailable, and each schedule should use OpeningHoursSpecification fields. Then compare the structured schedule with the service hours shown on the page.
Google's structured-data workflow recommends validating the code with the Rich Results Test, deploying pages that contain the markup, and using URL Inspection to test how Google sees the page. Its documentation also says the deployed page should be accessible and not blocked by robots.txt, noindex or login requirements.
Related terms
FAQ
Can hoursAvailable contain an OpeningHoursSpecification?
Yes. Schema.org gives OpeningHoursSpecification as the expected value type for hoursAvailable. Use its dayOfWeek, opens and closes properties for the service interval.
Should service hours use openingHoursSpecification instead?
Use hoursAvailable when the hours belong to a contact point. Google's openingHoursSpecification documentation describes hours for a business location, so it represents a different property path.
How can you represent a service that runs past midnight?
Keep the interval in one OpeningHoursSpecification and set closes to an earlier time than opens. Schema.org says that ordering means the range spans the next day.
Sources
- Schema.org, "ContactPoint", accessed 17 October 2026
- Schema.org, "hoursAvailable", accessed 17 October 2026
- Schema.org, "OpeningHoursSpecification", accessed 17 October 2026
- Google Search Central, "Organization (Organization) structured data", updated 8 September 2026
- Google Search Central, "Local business (LocalBusiness) structured data", updated 8 September 2026
Check how a page reads to answer engines. Open the GEO score analyzer