# Children policies

**Learn how Booking.com defines and handles child policies, and how to retrieve, display, and interpret them using the Demand API.**

## Overview

This guide explains **how to interpret child and family occupancy** data returned by the Accommodation API collection.

It focuses on how child-related policies—such as age-based pricing, occupancy limits, and bed options—are reflected in API responses, based on the configurations set by each property.

You’ll learn how to retrieve and handle this information correctly, structure guest and room allocation in requests, and **ensure that child rates and availability are accurately displayed in your implementation**.

## Why child policies matter

Families are a major guest segment on Booking.com. On average, they:

* Stay longer than other travellers.
* Are more likely to book compared with solo travellers or couples.


Child policies let properties define:

* Whether children are allowed.
* How many children (and adults) may stay per room.
* Special pricing rules for children (child rates).
* Bed and cot options, with or without extra charges.


If no child policies are set by a property:

* All children are treated as adults.
* Adult rates apply.


Did you know?
Child policies are configured per room, not per accommodation. This ensures travellers can choose rooms that best suit their family’s needs.

### Child rates

Child rates are discounted or special prices based on property policies. They depend on:

* The number of guests in a group (occupancy).
* The children’s ages (0–17 years).


Rules:

* Rates can be free or paid.
* They only apply when children stay in existing beds (not cots or extra beds).


#### Rate plan types supported

| Pricing type | Description | Example |
|  --- | --- | --- |
| ![percentage](/assets/percentage.79a31903d432968f3c7f9a3d35177dda3a3e807eca273cfd60c1e89d38ca6b7a.4302f616.svg) | **Percentage-based** - A child pays a percentage of the adult price. | *Child pays 50% of adult rate.* |
| ![child](/assets/child.2a3a6b6a622b46c9d2e0446db9d5bf4cad00b7dcaab6da3ce8b419e845c81ef5.4302f616.svg) | **Per-child** - A set price per child, possibly with a maximum. | *Up to 3 children get child rates; additional children pay adult rates.* |
| ![child](/assets/age-bands.35e38c3101a41b22250eb68fb73555f677c0419b704de87cc1f51fa06a48af2b.4302f616.svg) | **Per age bands**:- Rates vary by child age group (property-defined).
- By default, Booking.com treats ages 0–17 as children, but properties can define their own minimum age.

 | *Children 0–11 pay child rate; children 12+ pay adult rate.* |


### Cots and extra beds

Properties can decide whether to:

* Offer cots/extra beds for free.
* Charge an additional fee.
* Not provide them at all.


Retrieve cot and extra bed details using the[/accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details) endpoint.

## Working with the API

To retrieve and display occupancy and pricing information correctly, use:

|  Endpoint  |  Use it to... |
|  --- | --- |
| [/accommodations/search](/demand/docs/open-api/demand-api/accommodations/accommodations/search) | Search for family-friendly accommodation. You must specify:* Number of adults.
* Ages of all children.
* Number of rooms.
* Allocation per room (if booking multiple rooms).

 |
| [accommodations/availability](/demand/docs/open-api/demand-api/accommodations/accommodations/availability) | Retrieve real-time prices, occupancy rules, and availability. Response includes:* `maximum_occupancy` - Max allowed guests per room.
* `free_stay` - Whether children in a given age range stay for free.
* `recommendation` - Best allocation and pricing suggestion.

 |
| [/accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details) | Check detailed property policies, e.g. cots, extra beds, or minimum age allowed. |


### Guest parameters

Always include guest details in [accommodations/search](/demand/docs/open-api/demand-api/accommodations/accommodations/search) and [accommodations/availability](/demand/docs/open-api/demand-api/accommodations/accommodations/availability) requests:

* `guest.number_of_adults`- Number of adults.
* `guest.children`- Ages of all children.
* `guest.number_of_rooms`- Number of rooms.


**Example of search request:**


```json
{
  "booker": {
    "country": "es",
    "platform": "desktop"
  },
  "cancellation_type": "free_cancellation",
  "checkin": "2025-02-13",
  "checkout": "2025-02-14",
  "city": -391076,
  "currency": "EUR",
  "extras": [
    "extra_charges",
    "products"
  ],
  "guests": {
    "number_of_adults": 4,
    "children": [0, 2, 5, 10],
    "number_of_rooms": 2
  },
  "meal_plan": "breakfast_included"
}
```

### Room allocation

When booking multiple rooms, use `allocation` field, to assign adults/children to each room.


```json
{
  "guests": {
    "allocation": [
      {
        "number_of_adults": 2,
        "children": [2, 10]
      },
      {
        "number_of_adults": 2,
        "children": [0, 5]
      }
    ],
    "number_of_adults": 4,
    "children": [0, 2, 5, 10],
    "number_of_rooms": 2
  }
}
```

See [Search guide](/demand/docs/accommodations/search-for-available-properties#4.-input-guest-details-and-room-allocation) for more details.

### Occupancy rules

When using the [availability endpoint](/demand/docs/open-api/demand-api/accommodations/accommodations/availability) to check prices and availability, the response retrieves a `maximum_occupancy` object:

| Maximum occupancy |
|  --- |
| ![total guests - Maximum number of guests](/assets/family.21be45d5b061bea46bea9fb12545a370cc4539eae79dc337ae8cd9124da8d237.4302f616.svg) | **total** - Maximum number of guests (adults + children).* Based on the number of guests staying in existing beds, excluding cots or extra beds.

 |
| ![maximum_adults](/assets/max-adults.1da78791840142264451e23fda04cd0f9f1deb207543887403ec9f2bd865ebe8.4302f616.svg) | **adults** - Maximum number of adults. |
| ![child](/assets/child.2a3a6b6a622b46c9d2e0446db9d5bf4cad00b7dcaab6da3ce8b419e845c81ef5.4302f616.svg) | **children** - Maximum number of children eligible for child rates, with details:* `from_age`/ `to_age` - Age range (Both ages are inclusive).
* `free_stay`- Whether children in the given age range can stay free of charge.

 |


Important
As children must be always accompanied by at least 1 adult, the number of children cannot exceed the total number of guests -1.

#### Children allowed but no child rates

If `"children": null` - this means **children are allowed but pay adult rates**.

Example:


```json
{
  "maximum_occupancy": {
    "adults": 2,
    "children": null,
    "total": 2
  }
}
```

#### Free child stays

The `free_stay` field signals whether children in a specified age range can stay free of charge.

* Allows you to display clear, user-friendly messages such as “Kids stay free”.


API prices already reflect free child stays. **The `free_stay` flag is for display only**.

**Example:**


```json
"maximum_occupancy": {
  "adults": 2,
  "children": [
    {
      "total": 1,
      "from_age": 0,
      "to_age": 5,
      "free_stay": true
    },
    {
      "total": 1,
      "from_age": 6,
      "to_age": 12,
      "free_stay": false
    }
  ]
}
```

The `free_stay` policy is distinct from child rates. It means children within the specified age range may stay without charge, though they may still be included in occupancy counts.

### Recommendation

The [accommodations/availability endpoint](/demand/docs/open-api/demand-api/accommodations/accommodations/availability) also returns the `recommendation` object.

* If allocation is provided - returns the best available option.
* If not provided - returns the cheapest option for the number of rooms.


**Example of recommendation:**

* For a group of 2 adults and 2 children (aged 2, 4) in 2 rooms
* The recommendation suggests 1 adult and 1 child allocated in 2 different rooms.



```json
{
  "recommendation": {
    "price": {...},
      "total": 2140.4
    },
    "products": [
      {
        "id": "1000426_95127794_3_2_0",
        "children": [2],
        "number_of_adults": 1,
        "price": {...}
      },
      {
        "id": "1000434_95127794_1_2_0",
        "children": [4],
        "number_of_adults": 1,
        "price": {...}
      }
    ]
  }
}
```

If `recommendation` is `null`- no products match the criteria.

## What to display in your UI?

If `maximum_occupancy.children:null` → no child rates; show children priced as adults (display `price.total`).

If children[] exists:

* For each band with `free_stay: true` show something like “Kids 0–5 stay free (1 child)” — use the `total` value to indicate limits.
* For bands with `free_stay: false` but present, show child pricing information (combine with price breakdown when `extras=extra_charges`).


Use the `recommendation` object to present the best allocation / product for the requested group.

## Best practices

✅ Always include children’s ages in search/availability requests.

✅ Display clearly whether child stays are free or discounted.

✅ Show occupancy-specific details (e.g. cots, extra beds) at room level.

✅ Use API fields directly—do not recalculate prices or apply your own rules.

![children ages ](/assets/avail-ages.2884c144e198b45807370158a8b405543bcf7e93afcfc74a8801d199e606841a.4302f616.png)

* Check the different [child rates use cases](/demand/docs/accommodations/occupancy-use-cases) for a better understanding on how to set requests and interpret responses for family groups.
* Refer to the [Accommodation search guide](/demand/docs/accommodations/search-for-available-properties) for instructions and best practices using the accommodations/search endpoint.