// docs

Trivago PLP

Busca acomodações no Trivago por destino, datas e ocupação, retornando preços previstos, avaliações, destaques e paginação em JSON estruturado.

Nota importante: alguns campos podem retornar null em produção, dependendo da página de origem. Nesta documentação, os exemplos de output são preenchidos intencionalmente com valores não nulos para facilitar integração.

Quando a entidade consultada não existe na origem, o extract e a tool MCP retornam 200 com data: null e notFound: true. Esse caso é tratado como resposta concluída, não como erro de servidor.

Chamada HTTP

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "trivago.com.br",
  "type": "plp",
  "location": "São Paulo",
  "checkinDate": "2026-08-10",
  "checkoutDate": "2026-08-12",
  "numAdults": 2,
  "numRooms": 1,
  "numChildren": 0,
  "page": 1,
  "currency": "BRL",
  "lang": "pt-br"
}'

Chamada MCP

A mesma seam também aparece no MCP hospedado como uma tool dedicada. Os argumentos reaproveitam os campos do extract, mas target e type já ficam fixos pela tool.

Ver guia completo do MCP

Endpoint

POST /v1/mcp

Tool name

trivago_com_br_plp

Auth

Bearer ou X-API-Key

trivago_com_br_plp tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "trivago_com_br_plp",
    "arguments": {
      "location": "São Paulo",
      "checkinDate": "2026-08-10",
      "checkoutDate": "2026-08-12",
      "numAdults": 2,
      "numRooms": 1,
      "numChildren": 0,
      "page": 1,
      "currency": "BRL",
      "lang": "pt-br",
      "executionId": "exec_example_123"
    }
  }
}

Possibilidades de input

Campos suportados nesta API do POST /v1/extract, com regras específicas de obrigatoriedade e condicionais.

Campo Tipo Status Regra Default Exemplo
location
Localizacao textual usada no Glassdoor PLP, Hoteis.com PLP e Trivago PLP (ex.: Brasil, Curitiba, Sao Paulo).
string Obrigatório Destino textual da busca, como cidade, estado ou região. - Brasil
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatório e deve ser trivago.com.br. - mercadolivre.com.br
type
Tipo da extração: pdp, idp, plp, ilp, quote, review ou places.
enum Obrigatório Sempre obrigatório e deve ser plp. - pdp
page
Paginacao. Em PLP, inclusive Trivago, e no Reclame AQUI ILP inicia em 1; em review (MercadoLivre, Booking e Hoteis) inicia em 0. O Reclame AQUI ILP aceita ate a pagina 100.
integer Opcional Página da listagem, iniciando em 1. 1 2
checkinDate
Data de check-in para Booking PDP/PLP, Hoteis.com PDP/PLP e Trivago PDP/PLP.
string (YYYY-MM-DD) Obrigatório Data de check-in no formato YYYY-MM-DD. - 2026-03-01
checkoutDate
Data de check-out para Booking PDP/PLP, Hoteis.com PDP/PLP e Trivago PDP/PLP. Deve ser maior que checkinDate.
string (YYYY-MM-DD) Obrigatório Data de check-out no formato YYYY-MM-DD e posterior a checkinDate. - 2026-03-02
numAdults
Quantidade de adultos para Booking, Airbnb, Hoteis.com, Trivago, Decolar, GOL, Azul e LATAM.
integer (1-30) Obrigatório Quantidade de adultos da busca. - 2
numChildren
Quantidade de criancas para Booking, Hoteis.com, Trivago, Decolar, GOL, Azul e LATAM.
integer (0-30) Opcional Quantidade de crianças da busca. 0 0
numRooms
Quantidade de quartos para Booking, Hoteis.com PDP/PLP e Trivago PDP/PLP.
integer (1-15) Obrigatório Quantidade de quartos da busca. - 1
lang
Idioma para Booking e Trivago (default no backend: pt-br).
string (ll ou ll-cc) Opcional Idioma no formato ll ou ll-cc. pt-br pt-br
currency
Moeda para Booking, Trivago e Azul (default no backend: BRL).
string (ISO 4217) Opcional Moeda dos preços no formato ISO 4217. BRL BRL

Exemplos de request

Acomodações em São Paulo

Busca a primeira página para dois adultos e um quarto, em português e com preços em reais.

Acomodações em São Paulo
{
  "target": "trivago.com.br",
  "type": "plp",
  "location": "São Paulo",
  "checkinDate": "2026-08-10",
  "checkoutDate": "2026-08-12",
  "numAdults": 2,
  "numRooms": 1,
  "numChildren": 0,
  "page": 1,
  "currency": "BRL",
  "lang": "pt-br"
}

Segunda página no Rio de Janeiro

Repete a busca para uma família e solicita a segunda página de resultados.

Segunda página no Rio de Janeiro
{
  "target": "trivago.com.br",
  "type": "plp",
  "location": "Rio de Janeiro, RJ",
  "checkinDate": "2026-09-10",
  "checkoutDate": "2026-09-13",
  "numAdults": 2,
  "numRooms": 1,
  "numChildren": 1,
  "page": 2
}

Schema de response (leaf paths)

Mapa de paths de saída com tipo esperado para esta API.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "notFound": "boolean (optional; true when no destination or accommodation results could be resolved)",
  "data.source": "string",
  "data.type": "string",
  "data.parser": "string",
  "data.requestUrl": "string (URL)",
  "data.extractedAt": "string (ISO datetime)",
  "data.location": "string",
  "data.checkinDate": "string (YYYY-MM-DD)",
  "data.checkoutDate": "string (YYYY-MM-DD)",
  "data.numAdults": "number",
  "data.numChildren": "number",
  "data.numRooms": "number",
  "data.currency": "string",
  "data.lang": "string",
  "data.destination.id": "number",
  "data.destination.namespace": "number",
  "data.destination.name": "string (optional)",
  "data.destination.locationLabel": "string (optional)",
  "data.destination.type": "string (optional)",
  "data.page": "number",
  "data.resultsPerPage": "number",
  "data.offset": "number",
  "data.returnedResults": "number",
  "data.nextPage": "number (optional)",
  "data.items[].position": "number",
  "data.items[].id": "number",
  "data.items[].namespace": "number",
  "data.items[].url": "string (URL, optional)",
  "data.items[].name": "string (optional)",
  "data.items[].location": "string (optional)",
  "data.items[].accommodationType": "string (optional)",
  "data.items[].image": "string (URL, optional)",
  "data.items[].imageCount": "number (optional)",
  "data.items[].starRating": "number (optional)",
  "data.items[].isSuperior": "boolean (optional)",
  "data.items[].reviewScore": "number (optional)",
  "data.items[].reviewCount": "number (optional)",
  "data.items[].reviewFormatted": "string (optional)",
  "data.items[].forecastedPrice.arrival": "string (optional)",
  "data.items[].forecastedPrice.amount": "number (optional)",
  "data.items[].forecastedPrice.eurocents": "number (optional)",
  "data.items[].forecastedPrice.currency": "string (optional)",
  "data.items[].advertiserCount": "number (optional)",
  "data.items[].highlights[]": "string"
}

Exemplo de response

responseExample
{
  "requestId": "527587af-83dc-4c96-a7fb-8a29bbb64ab8",
  "executionId": "01JZTRIVAGOPLP000000000001",
  "data": {
    "source": "trivago.com.br",
    "type": "plp",
    "parser": "graphql_static_search",
    "requestUrl": "https://www.trivago.com.br/pt-BR/odr/hotels-sao-paulo?search=200-60123",
    "extractedAt": "2026-07-12T15:30:00.000Z",
    "location": "São Paulo",
    "checkinDate": "2026-08-10",
    "checkoutDate": "2026-08-12",
    "numAdults": 2,
    "numChildren": 0,
    "numRooms": 1,
    "currency": "BRL",
    "lang": "pt-BR",
    "destination": {
      "id": 60123,
      "namespace": 200,
      "name": "São Paulo",
      "locationLabel": "São Paulo, Brasil",
      "type": "City"
    },
    "page": 1,
    "resultsPerPage": 35,
    "offset": 0,
    "returnedResults": 35,
    "nextPage": 2,
    "items": [
      {
        "position": 1,
        "id": 26085746,
        "namespace": 100,
        "url": "https://www.trivago.com.br/pt-BR/oar/hotel-rosewood-sao-paulo-s%C3%A3o-paulo?search=100-26085746",
        "name": "Rosewood São Paulo",
        "location": "São Paulo, Brasil",
        "accommodationType": "Hotel",
        "image": "https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_267,q_50,w_400/hotelier-images/rosewood.jpeg",
        "imageCount": 100,
        "starRating": 5,
        "isSuperior": false,
        "reviewScore": 9.405,
        "reviewCount": 4807,
        "reviewFormatted": "9.4",
        "forecastedPrice": {
          "arrival": "2026-08",
          "amount": 2849,
          "eurocents": 48859,
          "currency": "BRL"
        },
        "advertiserCount": 17,
        "highlights": [
          "Duas piscinas externas"
        ]
      }
    ]
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.checkinDate string (YYYY-MM-DD) Data de check-in usada na consulta. 2026-08-10
data.checkoutDate string (YYYY-MM-DD) Data de check-out usada na consulta. 2026-08-12
data.currency string Moeda solicitada para os preços. BRL
data.destination.id number Identificador do destino resolvido pelo Trivago. 60123
data.destination.locationLabel string (optional) Rótulo geográfico complementar do destino. São Paulo, Brasil
data.destination.name string (optional) Nome traduzido do destino. São Paulo
data.destination.namespace number Namespace associado ao identificador do destino. 200
data.destination.type string (optional) Tipo do destino, como cidade ou região. City
data.extractedAt string (ISO datetime) Data e hora UTC da extração. 2026-07-12T15:30:00.000Z
data.items[].accommodationType string (optional) Tipo da acomodação, quando informado. Hotel
data.items[].advertiserCount number (optional) Quantidade de anunciantes com ofertas para a acomodação. 17
data.items[].forecastedPrice.amount number (optional) Valor numérico previsto para a oferta destacada. 2849
data.items[].forecastedPrice.arrival string (optional) Período de chegada associado ao preço previsto. 2026-08
data.items[].forecastedPrice.currency string (optional) Moeda do preço previsto. BRL
data.items[].forecastedPrice.eurocents number (optional) Valor normalizado em centavos de euro informado pelo upstream. 48859
data.items[].highlights[] string Destaques normalizados exibidos para a acomodação. Duas piscinas externas
data.items[].id number Identificador da acomodação no Trivago. 26085746
data.items[].image string (URL, optional) URL da imagem principal, quando disponível. https://imgcy.trivago.com/c_fill,d_dummy.jpeg,e_sharpen:60,f_auto,h_267,q_50,w_400/hotelier-images/rosewood.jpeg
data.items[].imageCount number (optional) Quantidade de imagens anunciada para a acomodação. 100
data.items[].isSuperior boolean (optional) Indica se a classificação possui a distinção superior. false
data.items[].location string (optional) Bairro, cidade ou rótulo de localização exibido no resultado. São Paulo, Brasil
data.items[].name string (optional) Nome comercial da acomodação. Rosewood São Paulo
data.items[].namespace number Namespace associado ao identificador da acomodação. 100
data.items[].position number Posição absoluta da acomodação na busca. 1
data.items[].reviewCount number (optional) Quantidade agregada de avaliações. 4807
data.items[].reviewFormatted string (optional) Resumo textual da nota e da quantidade de avaliações. 9.4
data.items[].reviewScore number (optional) Nota agregada das avaliações. 9.405
data.items[].starRating number (optional) Classificação por estrelas, quando informada. 5
data.items[].url string (URL, optional) URL pública da acomodação no Trivago. https://www.trivago.com.br/pt-BR/oar/hotel-rosewood-sao-paulo-s%C3%A3o-paulo?search=100-26085746
data.lang string Idioma solicitado para textos e rótulos. pt-BR
data.location string Destino textual recebido no payload. São Paulo
data.nextPage number (optional) Número da próxima página, quando disponível. 2
data.numAdults number Quantidade de adultos usada na consulta. 2
data.numChildren number Quantidade de crianças usada na consulta. 0
data.numRooms number Quantidade de quartos usada na consulta. 1
data.offset number Posição inicial da página dentro da busca. 0
data.page number Página atual da busca. 1
data.parser string Estratégia usada para normalizar a resposta GraphQL. graphql_static_search
data.requestUrl string (URL) URL pública equivalente à busca solicitada. https://www.trivago.com.br/pt-BR/odr/hotels-sao-paulo?search=200-60123
data.resultsPerPage number Quantidade máxima de acomodações por página. 35
data.returnedResults number Quantidade de acomodações presentes nesta resposta. 35
data.source string Fonte pública consultada. trivago.com.br
data.type string Tipo do seam executado. plp
executionId string (uuid) Identificador idempotente da execução. 01JZTRIVAGOPLP000000000001
notFound boolean (optional; true when no destination or accommodation results could be resolved) Presente e verdadeiro quando o destino não pôde ser resolvido ou a busca não retornou acomodações. N/A
requestId string (uuid) Identificador da requisição na GeckoAPI. 527587af-83dc-4c96-a7fb-8a29bbb64ab8

Erros comuns

Respostas com notFound: true não entram nesta tabela, porque retornam sucesso HTTP 200.

Status errorCode Quando acontece
400 INVALID_PAYLOAD JSON inválido ou violação das regras de validação do payload.
401 UNAUTHORIZED Header Authorization ausente ou token/chave inválida.
402 INSUFFICIENT_CREDITS Saldo de créditos insuficiente para a API solicitada.
403 FORBIDDEN Usuário sem acesso ou API temporariamente desabilitada.
409 EXECUTION_CONFLICT executionId conflita com uma execução em estado incompatível.
429 RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS Limite de taxa ou limite de requisições em voo excedido.
5xx UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente.