---
title: "Search bookable hotel rates"
method: POST
path: "/api/v1/hotels/search"
tags: ["Hotels"]
---

# Search bookable hotel rates

`POST /api/v1/hotels/search`

Search real, bookable hotel inventory.

Only free-cancellation, pay-later rates are returned — those are the rates where the guest's
balance can safely be settled with the supplier after booking, which is what makes the
5%-now/rest-later model work. The result set is therefore smaller than a metasearch's, and
every row in it can actually be booked.

`price` is what the guest pays. There is no wholesale figure in the response to quote by
mistake. Keep `session_id` and the chosen offer's `combination_id_v2` — together they
identify that exact rate, and booking needs both.

A payment method on file is required for search, not just booking: a search opens a real
session at the supplier.

## Request body

- object
  - `city_id` integer, required
  - `city_name` string, required
  - `check_in` string, date, required
  - `check_out` string, date, required
  - `adults` integer
  - `children` integer
  - `child_ages` integer[] — Required by the supplier to price children.
  - `nationality` string — Two-letter code. Rates and taxes genuinely differ by nationality.
  - `limit` integer

## Response `200`

Hotels with bookable offers

## Other responses

- `402` — No payment method on file
- `504` — The supplier did not answer in time

## Changes

- **2026-08-04** `7bda5c981b41` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/letsfg/apis/letsfg-api/changes/api/v1/hotels/search/post.md)

---

[API](https://skmtc.dev/letsfg/apis/letsfg-api.md) · [All operations](https://skmtc.dev/letsfg/apis/letsfg-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/letsfg/letsfg-api/revisions/89a6a1405650/schema)
