Skip to content

// docs

Trivago: Get accommodation details

Extracts a listing's details from Trivago, including identity, description, review, address, images, amenities, rooms, and available deals.

trivago.com.br:pdp · 1 credit per request

Standard credit cost. Your account pricing is shown in the sandbox.

Try this operation in the sandbox

HTTP request

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720",
  "target": "trivago.com.br",
  "type": "pdp"
}'

Keep your API key on your server. See the quickstart for authentication and response handling.

MCP request

The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.

POST /v1/mcp · Bearer or X-API-Key authentication

trivago_com_br_pdp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "trivago_com_br_pdp",
    "arguments": {
      "url": "https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720",
      "executionId": "exec_example_123"
    }
  }
}

Supported inputs

Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.

FieldTypeRequirementRuleDefaultExample
url
URL extraction target. For some PLPs it can be omitted when API assembles URL from other fields.
string (URL) Required URL public accommodation in trivago.com.br or trivago.com. - https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720
target
Target source for extraction.
enum Required Always required and must be trivago.com.br. - trivago.com.br
type
Extraction type: pdp, idp, plp, ilp, quote, review or places.
enum Required Always required and must be pdp. - pdp
checkinDate
Check-in date for Booking PDP/PLP, Hoteis.com PDP/PLP and Trivago PDP/PLP.
string (YYYY-MM-DD) Conditional Check-in date in the format YYYY-MM-DD. When sent, checkoutDate must also be informed. - 2026-07-20
checkoutDate
Checkout date for Booking PDP/PLP, Hoteis.com PDP/PLP and Trivago PDP/PLP. Must be greater than checkinDate.
string (YYYY-MM-DD) Conditional Check-out date in the format YYYY-MM-DD and later than checkinDate. - 2026-07-22
numAdults
Quantity of adults for Booking, Airbnb, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM and Trip.com.
integer (1-30) Optional Number of adults used to consult dated offers. 2 2
numChildren
Number of children for Booking, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM and Trip.com.
integer (0-30) Optional Number of children used to consult dated offers. 0 0
numRooms
Number of rooms for Booking, Hoteis.com PDP/PLP and Trivago PDP/PLP.
integer (1-15) Optional Number of rooms used to consult dated offers. 1 1
lang
Language for Booking and Trivago (backend default: pt-br).
string (ll or ll-cc) Optional Language of texts returned in ll or ll-cc format. pt-BR pt-BR
currency
Currency for Booking, Trivago and Azul (backend default: BRL).
string (ISO 4217) Optional Offer currency in the format ISO 4217. BRL BRL

Request examples

Details of an accommodation

Only enter the public URL to extract the stable content of the accommodation.

Details of an accommodation
{
  "url": "https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720",
  "target": "trivago.com.br",
  "type": "pdp"
}

Details with offers for a stay

Dates, occupancy and currency are optional and allow you to enrich the result with dated offers.

Details with offers for a stay
{
  "url": "https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720",
  "target": "trivago.com.br",
  "type": "pdp",
  "checkinDate": "2026-07-20",
  "checkoutDate": "2026-07-22",
  "numAdults": 2,
  "numChildren": 0,
  "numRooms": 1,
  "currency": "BRL"
}

Response schema

Leaf paths and expected types. Field names and enum values are part of the API contract.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "notFound": "boolean (optional; true when the accommodation was not found and data is null)",
  "data.source": "string",
  "data.type": "string",
  "data.parser": "\"1.0.0\"",
  "data.requestUrl": "string (URL)",
  "data.extractedAt": "string (ISO datetime)",
  "data.data.id": "number",
  "data.data.namespace": "number",
  "data.data.url": "string (URL)",
  "data.data.canonicalUrl": "string (URL)",
  "data.data.name": "string",
  "data.data.description": "string (optional)",
  "data.data.propertyId": "string (optional)",
  "data.data.accommodationType": "string (optional)",
  "data.data.starRating": "number (optional)",
  "data.data.isSuperior": "boolean (optional)",
  "data.data.aggregateRating.rating": "number (optional)",
  "data.data.aggregateRating.reviewCount": "number (optional)",
  "data.data.aggregateRating.formatted": "string (optional)",
  "data.data.address.line": "string (optional)",
  "data.data.address.streetAddress": "string (optional)",
  "data.data.address.postalCode": "string (optional)",
  "data.data.address.city": "string (optional)",
  "data.data.address.country": "string (optional)",
  "data.data.address.latitude": "number (optional)",
  "data.data.address.longitude": "number (optional)",
  "data.data.checkInHour": "string (optional)",
  "data.data.checkOutHour": "string (optional)",
  "data.data.mainImage": "string (URL, optional)",
  "data.data.image[].id": "string (optional)",
  "data.data.image[].url": "string (URL)",
  "data.data.image[].width": "number (optional)",
  "data.data.image[].height": "number (optional)",
  "data.data.image[].tags[]": "string",
  "data.data.image[].sourceNames[]": "string",
  "data.data.imageCount": "number (optional)",
  "data.data.amenityGroups[].id": "number (optional)",
  "data.data.amenityGroups[].namespace": "number (optional)",
  "data.data.amenityGroups[].name": "string (optional)",
  "data.data.amenityGroups[].features[].id": "number (optional)",
  "data.data.amenityGroups[].features[].namespace": "number (optional)",
  "data.data.amenityGroups[].features[].name": "string (optional)",
  "data.data.topAmenities[].id": "number (optional)",
  "data.data.topAmenities[].namespace": "number (optional)",
  "data.data.topAmenities[].name": "string (optional)",
  "data.data.topAmenities[].isFree": "boolean (optional)",
  "data.data.topAmenities[].isAvailable": "boolean (optional)",
  "data.data.rooms[].id": "string (optional)",
  "data.data.rooms[].name": "string (optional)",
  "data.data.rooms[].maxChildren": "number (optional)",
  "data.data.rooms[].maxGuests": "number (optional)",
  "data.data.rooms[].maxPersons": "number (optional)",
  "data.data.rooms[].sizeSquareMeters": "number (optional)",
  "data.data.rooms[].hasAirConditioner": "boolean (optional)",
  "data.data.rooms[].hasFreeWifi": "boolean (optional)",
  "data.data.rooms[].views[]": "string",
  "data.data.rooms[].beds[].id": "string (optional)",
  "data.data.rooms[].beds[].name": "string (optional)",
  "data.data.rooms[].beds[].count": "number (optional)",
  "data.data.rooms[].beds[].numberOfOccupants": "number (optional)",
  "data.data.rooms[].amenities[]": "string",
  "data.data.rooms[].images[]": "string (URL)",
  "data.data.deals[].id": "string (optional)",
  "data.data.deals[].advertiser.id": "number (optional)",
  "data.data.deals[].advertiser.namespace": "number (optional)",
  "data.data.deals[].advertiser.name": "string (optional)",
  "data.data.deals[].advertiser.logo": "string (URL, optional)",
  "data.data.deals[].url": "string (URL, optional)",
  "data.data.deals[].description": "string (optional)",
  "data.data.deals[].roomCategory": "string (optional)",
  "data.data.deals[].pricePerNight.amount": "number (optional)",
  "data.data.deals[].pricePerNight.eurocents": "number (optional)",
  "data.data.deals[].pricePerNight.currency": "string (optional)",
  "data.data.deals[].pricePerStay.amount": "number (optional)",
  "data.data.deals[].pricePerStay.eurocents": "number (optional)",
  "data.data.deals[].pricePerStay.currency": "string (optional)",
  "data.data.deals[].strikePricePerNight.amount": "number (optional)",
  "data.data.deals[].strikePricePerNight.eurocents": "number (optional)",
  "data.data.deals[].strikePricePerNight.currency": "string (optional)",
  "data.data.deals[].strikePricePerStay.amount": "number (optional)",
  "data.data.deals[].strikePricePerStay.eurocents": "number (optional)",
  "data.data.deals[].strikePricePerStay.currency": "string (optional)",
  "data.data.deals[].savingsPercentage": "number (optional)",
  "data.data.deals[].freeCancellationDeadline": "string (ISO datetime, optional)",
  "data.data.deals[].eligibleForDetailsPage": "boolean (optional)",
  "data.data.hasFreeWifi": "boolean (optional)",
  "data.data.popular": "boolean (optional)",
  "data.data.distance": "string (optional)",
  "data.data.constructionYear": "number (optional)",
  "data.data.createdAt": "string (ISO datetime, optional)",
  "data.data.checkinDate": "string (YYYY-MM-DD, optional)",
  "data.data.checkoutDate": "string (YYYY-MM-DD, optional)",
  "data.data.numAdults": "number",
  "data.data.numChildren": "number",
  "data.data.numRooms": "number",
  "data.data.currency": "string",
  "data.data.lang": "string"
}

Example response

Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.

responseExample
{
  "requestId": "5de70952-2419-4920-8d9a-6d278a735290",
  "executionId": "01JZTRIVAGOPDP000000000001",
  "data": {
    "source": "trivago.com.br",
    "type": "pdp",
    "parser": "1.0.0",
    "requestUrl": "https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720",
    "extractedAt": "2026-07-12T15:32:00.000Z",
    "data": {
      "id": 4626720,
      "namespace": 100,
      "url": "https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720",
      "canonicalUrl": "https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720",
      "name": "Hotel Atlântico Prime",
      "description": "Hotel no centro do Rio de Janeiro.",
      "propertyId": "4626720",
      "accommodationType": "Hotel",
      "starRating": 4,
      "isSuperior": false,
      "aggregateRating": {
        "rating": 7.402,
        "reviewCount": 35843,
        "formatted": "7.4"
      },
      "address": {
        "line": "R. do Rezende, 87, Rio de Janeiro, Brasil",
        "streetAddress": "R. do Rezende, 87",
        "postalCode": "20231-091",
        "city": "Rio de Janeiro",
        "country": "Brasil",
        "latitude": -22.91,
        "longitude": -43.18
      },
      "checkInHour": "14:00",
      "checkOutHour": "12:00",
      "mainImage": "https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_480,q_60,w_720/itemimages/prime.jpeg",
      "image": [
        {
          "id": "image-1",
          "url": "https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_480,q_60,w_720/itemimages/prime-room.jpeg",
          "width": 1200,
          "height": 800,
          "tags": [
            "910-1"
          ],
          "sourceNames": [
            "Hotel"
          ]
        }
      ],
      "imageCount": 67,
      "amenityGroups": [
        {
          "id": 1,
          "namespace": 910,
          "name": "Geral",
          "features": [
            {
              "id": 2,
              "namespace": 920,
              "name": "Wi-Fi"
            }
          ]
        }
      ],
      "topAmenities": [
        {
          "id": 2,
          "namespace": 920,
          "name": "Wi-Fi",
          "isFree": true,
          "isAvailable": true
        }
      ],
      "rooms": [
        {
          "id": "1",
          "name": "Quarto duplo",
          "maxChildren": 1,
          "maxGuests": 2,
          "maxPersons": 2,
          "sizeSquareMeters": 250,
          "hasAirConditioner": true,
          "hasFreeWifi": true,
          "views": [
            "Cidade"
          ],
          "beds": [
            {
              "id": "1",
              "name": "Cama casal",
              "count": 1,
              "numberOfOccupants": 2
            }
          ],
          "amenities": [
            "Frigobar"
          ],
          "images": [
            "https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_480,q_60,w_720/itemimages/prime-room.jpeg"
          ]
        }
      ],
      "deals": [
        {
          "id": "deal-1",
          "advertiser": {
            "id": 3620,
            "namespace": 400,
            "name": "Ourtrip",
            "logo": "https://imgcy.trivago.com/partnerlogos-s3/3620"
          },
          "url": "https://www.trivago.com.br/forward/test",
          "description": "Quarto duplo luxo",
          "pricePerNight": {
            "amount": 224,
            "eurocents": 3842,
            "currency": "BRL"
          },
          "pricePerStay": {
            "amount": 448,
            "currency": "BRL"
          },
          "eligibleForDetailsPage": false
        }
      ],
      "hasFreeWifi": true,
      "popular": true,
      "checkinDate": "2026-07-20",
      "checkoutDate": "2026-07-22",
      "numAdults": 2,
      "numChildren": 0,
      "numRooms": 1,
      "currency": "BRL",
      "lang": "pt-BR"
    }
  }
}

Complete field reference

PathTypeDescriptionExample
data.data.accommodationType string (optional) Type of accommodation, such as hotel, guesthouse or apartment. Hotel
data.data.address.city string (optional) City of accommodation. Rio de Janeiro
data.data.address.country string (optional) Country of accommodation. Brasil
data.data.address.latitude number (optional) Latitude of accommodation. -22.91
data.data.address.line string (optional) Formatted full address. R. do Rezende, 87, Rio de Janeiro, Brasil
data.data.address.longitude number (optional) Accommodation length. -43.18
data.data.address.postalCode string (optional) ZIP code of the accommodation. 20231-091
data.data.address.streetAddress string (optional) Street and accommodation number. R. do Rezende, 87
data.data.aggregateRating.formatted string (optional) Textual summary of the assessment. 7.4
data.data.aggregateRating.rating number (optional) Aggregated review score. 7.402
data.data.aggregateRating.reviewCount number (optional) Aggregated number of reviews. 35843
data.data.amenityGroups[].features[].id number (optional) Identifier of the amenity in the group. 2
data.data.amenityGroups[].features[].name string (optional) Name of the amenity in the group. Wi-Fi
data.data.amenityGroups[].features[].namespace number (optional) Amenity namespace in group. 920
data.data.amenityGroups[].id number (optional) Amenity group identifier. 1
data.data.amenityGroups[].name string (optional) Amenity group name. Geral
data.data.amenityGroups[].namespace number (optional) Amenity group namespace. 910
data.data.canonicalUrl string (URL) URL canonical accommodation without transient parameters. https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720
data.data.checkinDate string (YYYY-MM-DD, optional) Check-in date used to consult offers, when provided. 2026-07-20
data.data.checkInHour string (optional) Time informed for check-in to start. 14:00
data.data.checkoutDate string (YYYY-MM-DD, optional) Check-out date used to query offers, when provided. 2026-07-22
data.data.checkOutHour string (optional) Time informed for check-out end. 12:00
data.data.constructionYear number (optional) Year of construction reported, when available. N/A
data.data.createdAt string (ISO datetime, optional) Creation date reported by upstream, when available. N/A
data.data.currency string Currency used to normalize prices. BRL
data.data.deals[].advertiser.id number (optional) Advertiser identifier. 3620
data.data.deals[].advertiser.logo string (URL, optional) URL of the advertiser's logo, when available. https://imgcy.trivago.com/partnerlogos-s3/3620
data.data.deals[].advertiser.name string (optional) Advertiser name. Ourtrip
data.data.deals[].advertiser.namespace number (optional) Advertiser namespace. 400
data.data.deals[].description string (optional) Offer description, when available. Quarto duplo luxo
data.data.deals[].eligibleForDetailsPage boolean (optional) Indicates whether the offer can be opened from the details page. false
data.data.deals[].freeCancellationDeadline string (ISO datetime, optional) Free cancellation period when available. N/A
data.data.deals[].id string (optional) Offer identifier. deal-1
data.data.deals[].pricePerNight.amount number (optional) Numerical price per night. 224
data.data.deals[].pricePerNight.currency string (optional) Currency of the price per night. BRL
data.data.deals[].pricePerNight.eurocents number (optional) Price per night standardized in euro cents. 3842
data.data.deals[].pricePerStay.amount number (optional) Numerical price of the stay. 448
data.data.deals[].pricePerStay.currency string (optional) Currency of the stay price. BRL
data.data.deals[].pricePerStay.eurocents number (optional) Standardized price of stay in euro cents. N/A
data.data.deals[].roomCategory string (optional) Room category associated with the offer. N/A
data.data.deals[].savingsPercentage number (optional) Savings percentage calculated for the offer. N/A
data.data.deals[].strikePricePerNight.amount number (optional) Previous price per night when available. N/A
data.data.deals[].strikePricePerNight.currency string (optional) Currency of previous price per night. N/A
data.data.deals[].strikePricePerNight.eurocents number (optional) Previous price per night in euro cents. N/A
data.data.deals[].strikePricePerStay.amount number (optional) Previous price of stay, when available. N/A
data.data.deals[].strikePricePerStay.currency string (optional) Currency of the previous price of the stay. N/A
data.data.deals[].strikePricePerStay.eurocents number (optional) Previous price of stay in euro cents. N/A
data.data.deals[].url string (URL, optional) URL output to offer. https://www.trivago.com.br/forward/test
data.data.description string (optional) Textual description of the accommodation, when available. Hotel no centro do Rio de Janeiro.
data.data.distance string (optional) Textual distance displayed by Trivago, when available. N/A
data.data.hasFreeWifi boolean (optional) Indicates whether the accommodation provides free Wi-Fi. true
data.data.id number Accommodation identifier in Trivago. 4626720
data.data.image[].height number (optional) Image height in pixels. 800
data.data.image[].id string (optional) Identifier of a gallery image. image-1
data.data.image[].sourceNames[] string Fonts assigned to the image. Hotel
data.data.image[].tags[] string Categories associated with the image. 910-1
data.data.image[].url string (URL) URL from a gallery image. https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_480,q_60,w_720/itemimages/prime-room.jpeg
data.data.image[].width number (optional) Image width in pixels. 1200
data.data.imageCount number (optional) Total number of images reported by upstream. 67
data.data.isSuperior boolean (optional) Indicates whether the classification has the superior distinction. false
data.data.lang string Standard language used in GraphQL operations. pt-BR
data.data.mainImage string (URL, optional) URL from the main image, when available. https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_480,q_60,w_720/itemimages/prime.jpeg
data.data.name string Business name of the accommodation. Hotel Atlântico Prime
data.data.namespace number Namespace associated with the accommodation identifier. 100
data.data.numAdults number Number of adults used in the consultation. 2
data.data.numChildren number Number of children used in the consultation. 0
data.data.numRooms number Number of rooms used in the query. 1
data.data.popular boolean (optional) Indicates whether Trivago highlights the accommodation as popular. true
data.data.propertyId string (optional) Property identifier associated with the listing. 4626720
data.data.rooms[].amenities[] string Specific room amenities. Frigobar
data.data.rooms[].beds[].count number (optional) Number of beds of this type. 1
data.data.rooms[].beds[].id string (optional) Bed type identifier. 1
data.data.rooms[].beds[].name string (optional) Name of the bed type. Cama casal
data.data.rooms[].beds[].numberOfOccupants number (optional) Capacity of occupants per bed. 2
data.data.rooms[].hasAirConditioner boolean (optional) Indicates whether the room has air conditioning. true
data.data.rooms[].hasFreeWifi boolean (optional) Indicates whether the room offers free Wi-Fi. true
data.data.rooms[].id string (optional) Room identifier. 1
data.data.rooms[].images[] string (URL) URL of a room image. https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_480,q_60,w_720/itemimages/prime-room.jpeg
data.data.rooms[].maxChildren number (optional) Maximum number of children in the room. 1
data.data.rooms[].maxGuests number (optional) Maximum number of guests in the room. 2
data.data.rooms[].maxPersons number (optional) Maximum total room capacity. 2
data.data.rooms[].name string (optional) Room name or category. Quarto duplo
data.data.rooms[].sizeSquareMeters number (optional) Room area in square meters. 250
data.data.rooms[].views[] string Informed views for the room. Cidade
data.data.starRating number (optional) Star rating when provided. 4
data.data.topAmenities[].id number (optional) Identifier of a featured amenity. 2
data.data.topAmenities[].isAvailable boolean (optional) Indicates whether the amenity is available. true
data.data.topAmenities[].isFree boolean (optional) Indicates whether the amenity is free. true
data.data.topAmenities[].name string (optional) Amenity name highlighted. Wi-Fi
data.data.topAmenities[].namespace number (optional) Featured amenity namespace. 920
data.data.url string (URL) URL consulted from accommodation. https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720
data.extractedAt string (ISO datetime) Date and time UTC of extraction. 2026-07-12T15:32:00.000Z
data.parser "1.0.0" Stable version of the API response format. 1.0.0
data.requestUrl string (URL) Same value as `data.data.url`; never exposes the queried internal endpoint. https://www.trivago.com.br/pt-BR/oar/hotel-atlantico-prime-rio-de-janeiro?search=100-4626720
data.source string Public source consulted. trivago.com.br
data.type string Type of operation executed. pdp
executionId string (uuid) Idempotent identifier of the execution. 01JZTRIVAGOPDP000000000001
notFound boolean (optional; true when the accommodation was not found and data is null) Present and true when accommodation was not found; in this case data is null. N/A
requestId string (uuid) Request identifier in GeckoAPI. 5de70952-2419-4920-8d9a-6d278a735290

Errors and missing data

When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.

HTTP statusError codeMeaning
400INVALID_PAYLOADInvalid JSON or a request that violates the documented validation rules.
401UNAUTHORIZEDMissing authorization or an invalid API key or token.
402INSUFFICIENT_CREDITSThe account has insufficient credits for this operation.
403FORBIDDENThe account does not have access, or the API is temporarily disabled.
409EXECUTION_CONFLICTThe execution identifier conflicts with an incompatible execution state.
429RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTSA rate limit or simultaneous request limit was exceeded.
5xxUPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERRORAn upstream, worker or gateway failure. Failed requests follow the platform refund policy.

Other Trivago operations