# ZenHotels rooms: `POST /v1/ota/zenhotels`

Cost: 12 credits (12 (failed requests are free)). Docs: https://scrapercompany.com/docs/reference/zenhotels-rooms

ZenHotels: every room and rate at one hotel for one stay.

Each rate's `total` is the stay for every room with the taxes the rate
shows (VAT, often city and occupancy taxes). Taxes paid at the hotel (a
resort fee, a city tax) are in `taxes_at_hotel`, sometimes in the
hotel's own currency; `total_with_hotel_taxes` adds them when they are in
the stay's currency, else it is null. A hotel with no room for the stay
is `availability: sold_out`; dates ZenHotels does not sell yet (about a
year out), past dates and stays over 30 nights are a 422.

Name the hotel by its ZenHotels `url`, its slug (`hotel`), or `name` (+
`city`), looked up in the site's search box: `resolved` says which hotel
was used.

Request body (JSON):

- `url` (string | null; optional; min length 8, max length 2048): A ZenHotels hotel page (`.../mid7801627/<slug>/`).
- `hotel` (string | null; optional; min length 2, max length 200): The hotel's slug, the last part of its URL.
- `name` (string | null; optional; min length 2, max length 200): Hotel name, looked up in ZenHotels' own search box; the first hotel is used and `resolved` lists it with the others. Add `city`.
- `city` (string; optional; default ; max length 200): With `name`: the city, sent with it.
- `check_in` (string (date); required): First night of the stay, `YYYY-MM-DD`.
- `check_out` (string (date) | null; optional): Departure date. An alternative to `nights` — if both are given, this wins.
- `nights` (integer; optional; default 1; min 1, max 30): Length of stay. Ignored when `check_out` is supplied.
- `adults` (integer; optional; default 2; min 1, max 36): Adults in all rooms, spread over them (1 to 6 per room). Totals cover all.
- `rooms` (integer; optional; default 1; min 1, max 6): Rooms requested.
- `currency` (string; optional; default USD; min length 3, max length 3): Currency of the totals (a code ZenHotels does not sell in is a 422).

Response fields:

- `search_parameters` (object; required)
  - `search_parameters.engine` (string; required; one of zenhotels_property)
  - `search_parameters.hotel` (string; required): The hotel slug.
  - `search_parameters.check_in_date` (string (date); required)
  - `search_parameters.check_out_date` (string (date); required)
  - `search_parameters.nights` (integer; required)
  - `search_parameters.adults` (integer; required)
  - `search_parameters.rooms` (integer; required)
  - `search_parameters.currency` (string; required)
- `property` (object; required)
  - `property.property_id` (string; required): The hotel slug.
  - `property.master_id` (integer | null; required)
  - `property.name` (string | null; required): Set when the hotel was named.
  - `property.url` (string | null; required): The hotel's ZenHotels page.
  - `property.price_per_night` (number | null; required): Cheapest rate's nightly average.
  - `property.total` (number | null; required): Cheapest rate's `total`.
  - `property.total_with_hotel_taxes` (number | null; required)
  - `property.taxes_at_hotel` (array of object; required)
  - `property.currency` (string; required)
  - `property.sold_out` (boolean; required)
  - `property.availability` (string; required; one of available, sold_out)
  - `property.is_soldout` (boolean | null; required)
  - `property.availability_reason` (string | null; required)
  - `property.min_length_of_stay` (integer | null; required)
  - `property.provenance` (object | null; required): Provenance of the cheapest priced row; null when nothing priced.
  - `property.rooms` (array of object; required)
- `resolved` (object; required): Present when the hotel was named: the ZenHotels hotel used.
  - `resolved.matched_from` (string; required; one of name)
  - `resolved.slug` (string; required)
  - `resolved.master_id` (integer | null; required)
  - `resolved.name` (string | null; required)
  - `resolved.city` (string | null; required)
  - `resolved.country_code` (string | null; required)
  - `resolved.address` (string | null; required)
  - `resolved.place` (string | null; required)
  - `resolved.candidates` (array of object; required)
- `meta` (object; required)
  - `meta.source` (string; required; one of zenhotels)
  - `meta.collection_id` (string; required)
  - `meta.observed_at` (string; required)
  - `meta.nights` (integer; required)
  - `meta.adults` (integer; required)
  - `meta.elapsed_s` (number; required)
  - `meta.total_rate_plans` (integer; required)
  - `meta.notes` (string; required)

Base URL: `https://api.scrapercompany.com`. Auth: send your key in the `x-api-key` header. A failed request (4xx or 5xx) or an empty result costs 0 credits.

- [Full API reference as one Markdown file](https://scrapercompany.com/llms-full.txt)
- [OpenAPI spec](https://scrapercompany.com/openapi.json)
