Child policies - use cases
This guide presents various scenarios for family group allocation, occupancy, and related policies, explaining how to retrieve, display, and interpret these use cases through our Demand API.
Overview
The following examples cover common scenarios for family accommodation searches, with varying group structures and room allocations.
Each use case includes a request and response sample, alongside explanations and best practices to help you implement them effectively.
Allocation - use cases
Family group in 1 room
Two family groups are planning a holiday in Marbella, Spain (city id -391076). They would need 1 room, for:
- 2 parents with 2 children (ages 2 and 10).
- 2 parents with 3 children (ages 0, 5 and 14).
In this case, the travellers do not allocate guests to specific rooms but specify the need for 1 room in the
guest.number_of_rooms
field.
Call the search endpoint including in request:
guests.number_of_adults
- in this case, 4.guests.children
- specify full children ages array.guest.number_of_rooms
- set to 1.
{
"booker": { ... },
"cancellation_type": "free_cancellation",
"checkin": "2025-02-13",
"checkout": "2025-02-16",
"city": -391076,
"currency": "EUR",
"extras": [
"extra_charges",
"products" // pass this extra, so child policy is returned in response.
],
"guests": {
"number_of_adults": 4,
"children": [ // This is the full children ages array.
0,
2,
5,
10,
14
],
"number_of_rooms": 1
}
}
Because no per-room allocation is provided, the guests.allocation
field is not included in the request.
Family group with multiple rooms (use allocation
)
The same family group from the previous example is now looking for multiple rooms:
- Room A for 2 adults + 2 children (2,10)
- Room B for 2 adults and 3 children (0,5,14).
Use the guests.allocation
in accommodations/search request to pin which children go to which room.
{
"guests": {
"allocation": [
{
"number_of_adults": 2, // This is room A
"children": [2, 10]
},
{
"number_of_adults": 2, // This is room B
"children": [0, 5, 14]
}
],
"number_of_adults": 4,
"children": [0, 2, 5, 10, 14],
"number_of_rooms": 2
}
}
Special requests
If guests want contiguous rooms, suggest using the special_request
field when creating the orders (via order/create).
This allows guests to communicate with the property about their preference for room proximity.
Example of order/create call with "special request":
{
"accommodation": {
"label": "Sample label",
"products": [...]
},
"remarks": {
"estimated_arrival_time": {
"hour": 12
},
"special_requests": "We would like to have the two rooms together."
}
}
For more details about special requests, see the orders/create guide.
Occupancy - use cases
Single-parent family
A single-parent family with multiple children is seeking availability in a family hotel (Hotel id: 9897851) in Spain:
- 1 adult + 2 children (aged 7 and 9).
- 1 room.
- Checkin: 2025-02-13
- Checkout: 2025-02-14
Children must always be accompanied by at least one adult. Validate this and show a clear error if the user attempts to submit a request with zero adults.
→ Use the accommodation availability endpoint to retrieve real-time information about the availability, pricing and occupancy for the selected accommodation.
To meet these requirements:
- Include the selected
accommodation id
to return actual availability and prices. - Specify the
guest.number_of_rooms
parameter (in this case, 1 room). - Set the
guests.number_of_adults
to include the total number of adults (in this example 1). - Use
guests.children
to list the ages of the children (7 and 9).
{
"accommodation": 9897851,
"booker": { ... },
"checkin": "2025-02-13",
"checkout": "2025-02-16",
"extras": [ ... ],
"guests": {
"number_of_adults": 1,
"children": [7, 9],
"number_of_rooms": 1
}
}
For some products, the maximum occupancy.children
field may be null
. This indicates, the absence of child rates.
One child counted as adult
Search may suggest a match, but /availability can show fewer child slots than requested. In such situations the service may count extra children as adults to respect capacity.
What to check:
- Compare /search results with /availability — availability definitively enforces maximum_occupancy.
- If
maximum_occupancy.children[].total
is less than the number of children in your request, expect one or more children to be charged as adults (and price.total will reflect that).
Scenario: For the following family group:
- 2 children (4 and 8 year old).
- 2 adults.
- And 2 rooms.
Steps:
- Use the Accommodations/search endpoint:
{
"accommodations": [430741],
"booker": { ... },
"checkin": "2025-07-27",
"checkout": "2025-07-29",
"guests": {
"number_of_adults": 2,
"children": [4, 8],
"number_of_rooms": 2
}
}
- Call the accommodations/availability endpoint:
{
"guests": {
"allocation": [
{
"number_of_adults": 1,
"children": [4]
},
{
"number_of_adults": 1,
"children": [8]
}
],
"number_of_adults": 2,
"number_of_rooms": 2,
"children": [4, 8]
}
}
The accommodations/search response suggests that the room can accommodate:
- 2 adults + 2 children (total occupancy: 4), with a maximum of 3 adults.
However, the accommodations/availability response provides a different interpretation:
- The maximum occupancy for adults is 3 + for children is 1 (total occupancy remains 4).
Both endpoints apply the same restrictions on adult and child occupancy.
However, because the /search request includes 2 adults + 2 children (exceeding the maximum number of children allowed), the response adjusts by counting 1 child as an adult to fit the accommodation’s limitations.
It provides the result as if the total number of people is 3 adults (with 1 child counted as an adult) and 1 child in the room.
Tip: Surface a specific message in your UI such as: “Only 1 child eligible for child rate; 1 child will be charged as an adult.”
Maximum adults < total capacity
For a family group of 2 adults + 3 children, the accommodations/availability response shows:
- A maximum of 4 adults + total room's maximum occupancy of 5 (Maximum occupancy > Maximum Adults).
- That means the extra slot may be used by a child.
- However, up to 3 children could potentially fit in this room, as long as the total occupancy limit of 5 is not exceeded.
{
"products": [
{
"id": "43074105_397810739_0_0_0",
"commission": { ... },
"deal": { ... },
"maximum_occupancy": {
"adults": 4,
"children": [
{
"total": 1,
"from_age": 0,
"to_age": 5,
"free_stay": false
}
],
"total": 5
},
"number_available": 1,
"policies": { ... }
}
]
}
In terms of pricing, since the maximum_occupancy.children
is set to 1:
- Only 1 child will be charged at the child rate.
- The remaining 2 children will be charged as adults.
Tip: Show both adults, children bands and total so the user understands capacity versus pricing eligibility.
Maximum children equal to maximum occupancy
In this example:
- The maximum number of adults is 4.
- The
maximum_occupancy.total
is set to 5. - And the
maximum_occupancy.children
is also 5.
{
"products": [
{
"id": "43074105_397810739_0_0_0",
"commission": { ... },
"deal": { ... },
"maximum_occupancy": {
"adults": 4,
"children": [
{
"total": 5,
"from_age": 0,
"to_age": 12,
"free_stay": false
}
],
"total": 5
},
"number_available": 1,
"policies": { ... },
"price": { ... },
"room": 43074105,
}
]
}
Under this configuration all children will be charged child rates, as the maximum_occupancy.children
matches the maximum_occupancy.total
, allowing the full capacity of children to stay at the property at a special rate.
No child rates - use cases
Children allowed but no child rates ("children": null)
When querying the accommodations/availability endpoint for a selected accommodation, and including children in the request, the response may return products where the maximum_occupancy.children
field is null
.
- If
maximum_occupancy.children
isnull
the property does not expose child bands, treat children as adults for pricing.
Example of response:
{
"id": "989785107_371605558_2_1_0",
"deal": null,
"maximum_occupancy": {
"adults": 2,
"children": null,
"total": 4
}
}
Tip: Make sure you indicate in your UI that children are allowed but are charged at adult price.
"Adults only" properties
In certain cases, properties may specify that they are "adults only".
When checking availability in an "adults only" accommodation, with the following information in the request:
- Hotel ID: 91556
- 2 adults + 2 children, aged 8 and 10
- 1 room, with no allocation.
{
"accommodation": 91556,
"booker": { ... },
"checkin": "2025-02-20",
"checkout": "2025-02-25",
"guests": {
"number_of_rooms": 1,
"number_of_adults": 2,
"children": [8, 10]
}
}
When using the orders/preview endpoint to book an "Adult only" accommodation with children included in the guest list, the system returns an error indicating that children are not allowed at the property.
Tip: To prevent such errors, exclude such properties when the search includes children.
Best practices for "adults only"
When looking for family- friendly accommodation, and wishing to exclude "adults only" properties from your results, we recommend the following steps:
Call the /accommodations/details endpoint.
In the response, check the
minimum_guest_age
field within thepolicies
object:
- This field indicates the minimum age required for a guest to stay at the property.
- verify whether the minimum allowed age is 18 (children are considered to be by default between the ages of 0 and 17, inclusive).
- If the minimum age is 18 (or higher) that means that this property is "adults only".
- If the minimum age is for example 8, then all children below this age are not permitted (but the property is not classified as "adults only").
For example, if a property has minimum_guest_age: 17
, you can exclude it from searches involving children:
{
"policies": {
"cots_and_extra_beds": [...],
"damage": { ... },
"maximum_checkin_age": null,
"minimum_checkin_age": 17,
"minimum_guest_age": 0,
"pets": {...}
}
}
If the minimum_age
is set to "0", guests of any age are allowed in the property, and the property is not classified as "adults only".
Child age restrictions
Some properties set specific age restrictions for children. For instance, a property may have a minimum_guest_age
policy that limits the age of children allowed to stay.
Example:
A family group is looking availability in an already known property in Madrid that is children-friendly. The accommodations/availability request includes:
- Accommodation id: 430741.
- 2 adults.
- A 2 years old child.
- They need 1 room.
Include the guests information in the request:
{
"accommodations": [430741],
"booker": { ... },
"checkin": "2025-08-27",
"checkout": "2025-08-28",
"guests": {
"number_of_adults": 2,
"children": [2],
"number_of_rooms": 1
}
}
The reason why there are no recommendations is due to the age restrictions set by the property.
In order to verify the applicable age restrictions set by the property:
Call the /accommodations/details endpoint using the same guests information and accommodation id (430741)
Under the
policies
object, check theminimum_age
field in the response.
{
"policies": {
"maximum_checkin_age": null,
"minimum_checkin_age": 18,
"minimum_guest_age": 6,
"pets": { ... }
}
}
- In this example, the minimum_age has been set to 6, therefore the 2 years old child is not allowed to stay in this property.
- Repeat again the accommodations/availability call for the same number of guests and accommodation but changing the children age to 6 years old.
Once the child’s age is adjusted to 6, the property returns valid results with child rates (if available) and the recommendation field with the best possible options for the family group, including children.
Free stay - use case
Some properties allow children to stay free of charge. This is indicated by the free_stay
boolean field under the policies object in the accommodations/availability response.
A family with 2 adults and 1 child (aged 4) checks availability. The room has a child band (0-5) and free_stay:true.
{
"accommodation": 27635,
"booker": {
"country": "nl",
"platform": "desktop"
},
"checkin": "2025-09-10",
"checkout": "2025-09-12",
"guests": {
"number_of_adults": 2,
"children": [4],
"number_of_rooms": 1
}
}
Cots and extra beds
To retrieve information about cots and extra beds, you should call the /accommodations/details endpoint and specify the extras
parameter with the rooms option.
The "cribs and extra beds" option is deprecated. Use "cots_and_extra_beds" instead.
Use the following filters in your request:
- Accommodation id
- Extra parameter: "rooms" to retrieve the room details.
{
"accommodations": [27635],
"extras": ["rooms"],
"languages": ["en-gb"]
}
Troubleshooting
When working with child policies, you may encounter unexpected behaviours. Here are the most common issues and how to resolve them:
Children treated as adults
Symptom: The maximum_occupancy.children field is null, and children are priced as adults.
Resolution: Inform users that the property does not offer child rates. Always show the total price to avoid confusion.
No products returned for children under a certain age
Symptom: The API returns recommendation: null even though the property accepts children.
Resolution: Check the minimum_guest_age in the /accommodations/details response. Adjust the request to reflect allowed ages.
Booking attempt blocked at preview
Symptom: [orders/preview] returns an error when children are included.
Resolution: Verify if the property is flagged as "adults only" (minimum_guest_age: 18). Exclude such properties when children are present in the request.
Inconsistent occupancy interpretation
Symptom: /search shows availability, but /availability rejects the same allocation.
Resolution: Cross-check maximum_occupancy rules. If the number of children exceeds the allowed child slots, the API may count one or more children as adults. Always confirm against /availability before confirming a booking.
- See the child policies section - For detailed information on occupancy, allocation, and child rate policies.
- Check the Accommodation search guide - For best practices on using the accommodation search and availability endpoints.