Hours

The hours[] array describes the physical operating schedule of a Supplier, Product, or Rate - when the entity is open, active, or running. It defines the window during which a guest can actually attend an experience.

🏢 Entity Hierarchy

Entity

Operational Function

Supplier

Usually used for Corporate Business Hours. Indicates when the operator's central customer service or head office is open to take inquiries.

Product

General Operating Hours. Indicates the overarching availability of the experience (e.g., "The Museum is open 09:00 to 17:00, Tuesday through Sunday").

Rate

Also used for General Operating Hours or for the specific rate option hours. Indicates the overarching availability of the experience specific to that option.

A Supplier can have hours details at all those 3 different levels or have the same values for all of them. It could be a product with the corresponding operating hours and then have rates under it with the specific hour times that the rate is valid for.

Info

These hours are for informational purposes only and do not correspond to availability.

Hours vs. Availability vs. Validity

These three concepts are frequently confused. They are independent of each other and each serves a distinct purpose:

Concept

Field

What it controls

Hours

hours[]

When the experience physically operates, the schedule of open days and times.

Valid

valid.from / valid.until

When the Rate is available for purchase, the booking sale window.

Availability

/availability endpoint

Real-time capacity and bookable slots - how many spots remain at a given time.

Timezones and Datetime formats

To know the local timezone value, you should check the timezone field under the Rate (rates.hours.timezone). Within Travel Curious, we do a hierarchical check order to verify the rate, product, and supplier timezone, if not present at any of these levels Travel Curious defaults to UTC at that point.

Info

These hours are for informational purposes only and do not correspond to availability.

Travel Curious Availabilities endpoint response start and end times will return the information in Zulu, with a value like 2023-10-06T11:00:00Z; check the timezone field on the rate response to convert availability into the appropriate timezone. If this conversion is not done, pricing and availability could return inaccurately, especially for those suppliers in a timezone that borders the end of day UTC.

Seasonal Hours with valid field

The valid field on an OpenHoursRule restricts when that rule is active. This is the correct way the Supplier would represent seasonal schedules:

"hours": [ { "timezone": "Europe/Madrid", "daysOfWeek": [1, 2, 3, 4, 5, 6, 7], "times": [{ "open": "10:00", "close": "20:00" }], "valid": { "from": "2026-06-01T00:00:00Z", "until": "2026-08-31T23:59:59Z" } }, { "timezone": "Europe/Madrid", "daysOfWeek": [1, 2, 3, 4, 5], "times": [{ "open": "10:00", "close": "17:00" }], "valid": { "from": "2026-09-01T00:00:00Z", "until": "2026-12-31T23:59:59Z" } } ]

The first rule applies every day during summer (extended hours). The second applies weekdays only in autumn (reduced hours). Neither conflict because their valid ranges do not overlap.

🔗 Find the full details here: Reseller API Reference