# Trivago deals: `POST /v1/ota/trivago`

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

Trivago metasearch: each partner's deals for one hotel and stay.

Partners include Booking.com, Expedia, Agoda, Trip.com, Priceline and the
hotel's own site. Each offer's `total` is the stay for every room with
taxes and fees as the partner reported them to Trivago; `price` is the
stay as Trivago shows it in the `market` (before taxes in the US, all-in
in Europe). Amounts are whole units. `property` carries the cheapest
`total`. A finished search with no deal is `availability: sold_out`;
one still running after the wait (`complete: false`) keeps the deals
that came.

Name the hotel by `hotel_id`, a Trivago hotel `url`, or `name` (+
`city`), looked up in Trivago's suggestions: `resolved` says which hotel
was used.

Request body (JSON):

- `hotel_id` (string | null; optional; min length 1, max length 20, pattern ^\d+$): Trivago hotel id: the number after `100-` in a Trivago URL's `search=` (`12715` is The Savoy, London).
- `url` (string | null; optional; min length 8, max length 2048): A Trivago hotel page on any Trivago domain, carrying `search=100-<id>`.
- `name` (string | null; optional; min length 2, max length 200): Hotel name, looked up in Trivago's own search suggestions; the first hotel is used and `resolved` lists it with the other candidates. 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 32): Adults in all rooms, spread over them (1 to 4 per room). Totals cover all.
- `rooms` (integer; optional; default 1; min 1, max 8): Rooms requested.
- `market` (string; optional; default US; one of AE, AR, AT, AU, BE, BG, BR, CA, CH, CL, CO, CZ, DE, DK, EC, ES, FI, FR, GB, GR, HK, HR, HU, ID, IE, IL, IN, IT, JP, KR, MX, MY, NL, NO, NZ, PE, PH, PL, PT, RO, RS, SE, SG, SI, SK, TH, TR, TW, US, UY, VN, ZA; min length 2, max length 2): Trivago market (ISO country; `GB` is trivago.co.uk): language, partners and price display (US before taxes, Europe all-in).
- `currency` (string | null; optional; one of AED, ARS, AUD, BRL, CAD, CHF, CLP, COP, CZK, DKK, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MXN, MYR, NOK, NZD, PEN, PHP, PLN, RON, SEK, SGD, THB, TRY, TWD, USD, UYU, VND, ZAR; min length 3, max length 3): Currency of every price; omit for the market's own.

Response fields:

- `search_parameters` (object; required)
  - `search_parameters.engine` (string; required; one of trivago_property)
  - `search_parameters.hotel_id` (integer; required)
  - `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.market` (string; required)
  - `search_parameters.currency` (string; required)
- `property` (object; required)
  - `property.hotel_id` (integer; required)
  - `property.name` (string; required)
  - `property.location` (string | null; required)
  - `property.stars` (integer | null; required)
  - `property.url` (string | null; required): The hotel's Trivago page.
  - `property.price_per_night` (integer | null; required): Cheapest offer's `total_per_night`.
  - `property.total` (integer | null; required): Cheapest offer's all-in `total`.
  - `property.lead_price` (integer | null; required): That offer's `price`, as the market shows it.
  - `property.provider` (string | null; required): That offer's partner.
  - `property.currency` (string; required)
  - `property.complete` (boolean; required): False when Trivago was still searching after the wait.
  - `property.availability` (string; required; one of available, sold_out, error)
  - `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.
- `offers` (array of object; required)
  - `offers[].provider` (string; required): The partner selling the deal (Booking.com, Expedia, the hotel ...).
  - `offers[].provider_id` (integer | null; required): Trivago's id for the partner.
  - `offers[].room_name` (string | null; required): The partner's room and rate name.
  - `offers[].room_category` (string | null; required): Trivago's room category, e.g. `standard`, `deluxe`, `suite`.
  - `offers[].price` (integer | null; required): The stay for every room as Trivago shows it in the market: before taxes in the US, all-in in Europe. Whole units.
  - `offers[].total` (integer | null; required): The stay for every room with taxes and fees, as the partner reported them to Trivago.
  - `offers[].price_per_night` (integer | null; required)
  - `offers[].total_per_night` (integer | null; required)
  - `offers[].strikethrough_price` (integer | null; required): The crossed-out price, when Trivago shows one.
  - `offers[].currency` (string; required)
  - `offers[].free_cancellation_until` (string | null; required): ISO timestamp, when the deal states one.
  - `offers[].pay_at_property` (boolean; required)
  - `offers[].attributes` (array of string; required): Trivago's deal terms in the market's language, e.g. `Breakfast included`, `Free cancellation`.
  - `offers[].flags` (array of string; required): Trivago's own deal flags, e.g. `GLOBAL_OTA`, `CHAMPION_DEAL`.
  - `offers[].link` (string | null; required): Trivago's forwarding link to the partner's page.
  - `offers[].rate_code` (string | null; required)
  - `offers[].rate_category` (string; required)
  - `offers[].rate_category_source` (string | null; required)
  - `offers[].refundable` (boolean | null; required)
  - `offers[].meal_plan` (string | null; required)
  - `offers[].rate_code_scope` (string | null; required)
  - `offers[].provenance` (object; required): Where, when and how one normalized price was observed.
- `resolved` (object; required): Present when the hotel was named: the Trivago hotel used.
  - `resolved.matched_from` (string; required; one of name)
  - `resolved.hotel_id` (integer; required)
  - `resolved.name` (string | null; required)
  - `resolved.location` (string | null; required)
  - `resolved.candidates` (array of object; required)
- `meta` (object; required)
  - `meta.source` (string; required; one of trivago)
  - `meta.collection_id` (string; required)
  - `meta.observed_at` (string; required)
  - `meta.nights` (integer; required)
  - `meta.elapsed_s` (number; required)
  - `meta.offers` (integer; required)
  - `meta.providers` (integer; required): Distinct partners among the offers.
  - `meta.polls` (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)
