Last updated

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 Accommodations Demand API. 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
percentagePercentage-based - A child pays a percentage of the adult price.Child pays 50% of adult rate.
childPer-child - A set price per child, possibly with a maximum.Up to 3 children get child rates; additional children pay adult rates.
childPer 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 endpoint.


Working with the API

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

Endpoint
Use it to...
/accommodations/searchSearch 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/availabilityRetrieve 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/detailsCheck detailed property policies, e.g. cots, extra beds, or minimum age allowed.

Guest parameters

Always include guest details in accommodations/search and 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:

{
  "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.

{
  "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 for more details.

Occupancy rules

When using the availability endpoint to check prices and availability, the response retrieves a maximum_occupancy object:

Maximum occupancy
total guests - Maximum number of gueststotal - Maximum number of guests (adults + children).
  • Based on the number of guests staying in existing beds, excluding cots or extra beds.
maximum_adultsadults - Maximum number of adults.
childchildren - 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:

{
  "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:

"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 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.
{
  "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


  • Check the different child rates use cases for a better understanding on how to set requests and interpret responses for family groups.
  • Refer to the Accommodation search guide for instructions and best practices using the accommodations/search endpoint.