// docs

Booking PLP

Extrai listagem de hospedagens (PLP) do Booking com paginação.

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.

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": "booking.com.br",
  "type": "plp",
  "keyword": "curitiba parana",
  "checkinDate": "2026-02-27",
  "checkoutDate": "2026-02-28",
  "numAdults": 2,
  "numChildren": 0,
  "numRooms": 1,
  "lang": "pt-br",
  "currency": "BRL",
  "page": 2
}'

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
url
URL alvo da extração. Para alguns PLPs pode ser omitida quando a API monta a URL a partir de outros campos.
string (URL) Opcional Opcional para PLP; gateway pode montar URL a partir de keyword. - https://www.mercadolivre.com.br/p/MLB123456
keyword
Palavra-chave para buscas PLP. Em Booking PLP é obrigatória; em outros PLPs pode substituir a URL.
string Obrigatório Obrigatorio em Booking PLP. - iphone 15 pro max
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatorio no payload e deve combinar com o seam. - mercadolivre.com.br
type
Tipo da extração: pdp, plp ou review.
enum Obrigatório Sempre obrigatorio no payload e deve combinar com o seam. - pdp
page
Paginação. Em PLP inicia em 1; em MercadoLivre review inicia em 0.
integer Opcional Suportado para PLP; deve ser inteiro >= 1. - 2
checkinDate
Data de check-in para Booking PDP/PLP. Deve ser maior que hoje.
string (YYYY-MM-DD) Obrigatório Obrigatorio para Booking; deve ser > hoje. - 2026-03-01
checkoutDate
Data de check-out para Booking PDP/PLP. Deve ser maior que checkinDate.
string (YYYY-MM-DD) Obrigatório Obrigatorio para Booking; deve ser > checkinDate. - 2026-03-02
numAdults
Quantidade de adultos para Booking.
integer (1-30) Opcional Opcional para Booking. 2 2
numChildren
Quantidade de crianças para Booking.
integer (0-30) Opcional Opcional para Booking. 0 0
numRooms
Quantidade de quartos para Booking.
integer (1-15) Opcional Opcional para Booking. 1 1
lang
Idioma para Booking (default no backend: pt-br).
string (ll ou ll-cc) Opcional Opcional para Booking. pt-br pt-br
currency
Moeda para Booking (default no backend: BRL).
string (ISO 4217) Opcional Opcional para Booking. BRL BRL

Exemplos de request

PLP por keyword

Booking PLP exige keyword e datas.

PLP por keyword
{
  "target": "booking.com.br",
  "type": "plp",
  "keyword": "curitiba parana",
  "checkinDate": "2026-02-27",
  "checkoutDate": "2026-02-28",
  "numAdults": 2,
  "numChildren": 0,
  "numRooms": 1,
  "lang": "pt-br",
  "currency": "BRL",
  "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)",
  "data.source": "string",
  "data.type": "string",
  "data.url": "string",
  "data.requestUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.keyword": "string",
  "data.query": "string",
  "data.checkinDate": "string (YYYY-MM-DD)",
  "data.checkoutDate": "string (YYYY-MM-DD)",
  "data.numAdults": "number",
  "data.numChildren": "number",
  "data.numRooms": "number",
  "data.lang": "string",
  "data.currency": "string",
  "data.destination.name": "string",
  "data.destination.countryCode": "string",
  "data.destination.destId": "number",
  "data.destination.destType": "string",
  "data.totalResults": "number",
  "data.primaryResults": "number",
  "data.page": "number",
  "data.resultsPerPage": "number",
  "data.offset": "number",
  "data.nextPage": "number",
  "data.nextPageUrl": "string",
  "data.items[].url": "string",
  "data.items[].propertyId": "number",
  "data.items[].pageName": "string",
  "data.items[].name": "string",
  "data.items[].address": "string",
  "data.items[].city": "string",
  "data.items[].countryCode": "string",
  "data.items[].latitude": "number",
  "data.items[].longitude": "number",
  "data.items[].distance": "string",
  "data.items[].distanceMeters": "number",
  "data.items[].thumbnail": "string",
  "data.items[].currency": "string",
  "data.items[].price": "number",
  "data.items[].regularPrice": "number",
  "data.items[].averagePricePerNight": "number",
  "data.items[].aggregateRating.rating": "number",
  "data.items[].aggregateRating.reviewCount": "number",
  "data.items[].starRating": "number",
  "data.items[].mealPlan": "string",
  "data.items[].freeCancellation": "boolean",
  "data.items[].noPrepayment": "boolean",
  "data.items[].soldOut": "boolean",
  "data.items[].preferred": "boolean",
  "data.items[].preferredPlus": "boolean",
  "data.items[].highlighted": "boolean",
  "data.items[].sponsored": "boolean",
  "data.items[].sustainable": "boolean",
  "data.items[].badges[]": "string",
  "data.items[].cardLabels[]": "string",
  "data.items[].certifications[]": "string"
}

Exemplo de response

responseExample
{
  "requestId": "77777777-1111-4111-8111-777777777777",
  "executionId": "77777777-2222-4222-8222-777777777777",
  "data": {
    "source": "booking.com.br",
    "type": "plp",
    "url": "https://www.booking.com/searchresults.pt-br.html?ss=curitiba+parana&checkin=2026-02-27&checkout=2026-02-28&group_adults=2&group_children=0&no_rooms=1&lang=pt-br&selected_currency=BRL",
    "requestUrl": "https://www.booking.com/dml/graphql?ss=curitiba+parana&checkin=2026-02-27&checkout=2026-02-28&group_adults=2&group_children=0&no_rooms=1&lang=pt-br&selected_currency=BRL",
    "extractedAt": "2026-02-12T12:34:56.000Z",
    "keyword": "curitiba parana",
    "query": "curitiba parana",
    "checkinDate": "2026-02-27",
    "checkoutDate": "2026-02-28",
    "numAdults": 2,
    "numChildren": 0,
    "numRooms": 1,
    "lang": "pt-br",
    "currency": "BRL",
    "destination": {
      "name": "Curitiba",
      "countryCode": "br",
      "destId": -664257,
      "destType": "city"
    },
    "totalResults": 438,
    "primaryResults": 438,
    "page": 2,
    "resultsPerPage": 25,
    "offset": 25,
    "nextPage": 3,
    "nextPageUrl": "https://www.booking.com/searchresults.pt-br.html?ss=curitiba+parana&checkin=2026-02-27&checkout=2026-02-28&group_adults=2&group_children=0&no_rooms=1&lang=pt-br&selected_currency=BRL&offset=50",
    "items": [
      {
        "url": "https://www.booking.com/hotel/br/pavilhao-egipcio.pt-br.html",
        "propertyId": 10614217,
        "pageName": "br/pavilhao-egipcio.pt-br.html",
        "name": "Pavilhao Egipcio",
        "address": "Rua Lamenha Lins, 3152",
        "city": "Curitiba",
        "countryCode": "br",
        "latitude": -25.445358,
        "longitude": -49.266693,
        "distance": "1.9 km do centro",
        "distanceMeters": 1900,
        "thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square240/729526152.jpg",
        "currency": "BRL",
        "price": 220,
        "regularPrice": 247.9,
        "averagePricePerNight": 220,
        "aggregateRating": {
          "rating": 9.2,
          "reviewCount": 146
        },
        "starRating": 4,
        "mealPlan": "Cafe da manha disponivel",
        "freeCancellation": true,
        "noPrepayment": false,
        "soldOut": false,
        "preferred": true,
        "preferredPlus": false,
        "highlighted": true,
        "sponsored": false,
        "sustainable": true,
        "badges": [
          "Muito bem avaliado"
        ],
        "cardLabels": [
          "Genius"
        ],
        "certifications": [
          "Travel Sustainable"
        ]
      }
    ]
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.checkinDate string (YYYY-MM-DD) Campo data.checkinDate retornado no payload de resposta. 2026-02-27
data.checkoutDate string (YYYY-MM-DD) Campo data.checkoutDate retornado no payload de resposta. 2026-02-28
data.currency string Campo data.currency retornado no payload de resposta. BRL
data.destination.countryCode string Campo data.destination.countryCode retornado no payload de resposta. br
data.destination.destId number Campo data.destination.destId retornado no payload de resposta. -664257
data.destination.destType string Campo data.destination.destType retornado no payload de resposta. city
data.destination.name string Campo data.destination.name retornado no payload de resposta. Curitiba
data.extractedAt string (iso datetime) Campo data.extractedAt retornado no payload de resposta. 2026-02-12T12:34:56.000Z
data.items[].address string Campo data.items[].address retornado no payload de resposta. Rua Lamenha Lins, 3152
data.items[].aggregateRating.rating number Campo data.items[].aggregateRating.rating retornado no payload de resposta. 9.2
data.items[].aggregateRating.reviewCount number Campo data.items[].aggregateRating.reviewCount retornado no payload de resposta. 146
data.items[].averagePricePerNight number Campo data.items[].averagePricePerNight retornado no payload de resposta. 220
data.items[].badges[] string Campo data.items[].badges[] retornado no payload de resposta. Muito bem avaliado
data.items[].cardLabels[] string Campo data.items[].cardLabels[] retornado no payload de resposta. Genius
data.items[].certifications[] string Campo data.items[].certifications[] retornado no payload de resposta. Travel Sustainable
data.items[].city string Campo data.items[].city retornado no payload de resposta. Curitiba
data.items[].countryCode string Campo data.items[].countryCode retornado no payload de resposta. br
data.items[].currency string Campo data.items[].currency retornado no payload de resposta. BRL
data.items[].distance string Campo data.items[].distance retornado no payload de resposta. 1.9 km do centro
data.items[].distanceMeters number Campo data.items[].distanceMeters retornado no payload de resposta. 1900
data.items[].freeCancellation boolean Campo data.items[].freeCancellation retornado no payload de resposta. true
data.items[].highlighted boolean Campo data.items[].highlighted retornado no payload de resposta. true
data.items[].latitude number Campo data.items[].latitude retornado no payload de resposta. -25.445358
data.items[].longitude number Campo data.items[].longitude retornado no payload de resposta. -49.266693
data.items[].mealPlan string Campo data.items[].mealPlan retornado no payload de resposta. Cafe da manha disponivel
data.items[].name string Campo data.items[].name retornado no payload de resposta. Pavilhao Egipcio
data.items[].noPrepayment boolean Campo data.items[].noPrepayment retornado no payload de resposta. false
data.items[].pageName string Campo data.items[].pageName retornado no payload de resposta. br/pavilhao-egipcio.pt-br.html
data.items[].preferred boolean Campo data.items[].preferred retornado no payload de resposta. true
data.items[].preferredPlus boolean Campo data.items[].preferredPlus retornado no payload de resposta. false
data.items[].price number Campo data.items[].price retornado no payload de resposta. 220
data.items[].propertyId number Campo data.items[].propertyId retornado no payload de resposta. 10614217
data.items[].regularPrice number Campo data.items[].regularPrice retornado no payload de resposta. 247.9
data.items[].soldOut boolean Campo data.items[].soldOut retornado no payload de resposta. false
data.items[].sponsored boolean Campo data.items[].sponsored retornado no payload de resposta. false
data.items[].starRating number Campo data.items[].starRating retornado no payload de resposta. 4
data.items[].sustainable boolean Campo data.items[].sustainable retornado no payload de resposta. true
data.items[].thumbnail string Campo data.items[].thumbnail retornado no payload de resposta. https://cf.bstatic.com/xdata/images/hotel/square240/729526152.jpg
data.items[].url string Campo data.items[].url retornado no payload de resposta. https://www.booking.com/hotel/br/pavilhao-egipcio.pt-br.html
data.keyword string Campo data.keyword retornado no payload de resposta. curitiba parana
data.lang string Campo data.lang retornado no payload de resposta. pt-br
data.nextPage number Campo data.nextPage retornado no payload de resposta. 3
data.nextPageUrl string Campo data.nextPageUrl retornado no payload de resposta. https://www.booking.com/searchresults.pt-br.html?ss=curitiba+parana&checkin=2026-02-27&checkout=2026-02-28&group_adults=2&group_children=0&no_rooms=1&lang=pt-br&selected_currency=BRL&offset=50
data.numAdults number Campo data.numAdults retornado no payload de resposta. 2
data.numChildren number Campo data.numChildren retornado no payload de resposta. 0
data.numRooms number Campo data.numRooms retornado no payload de resposta. 1
data.offset number Campo data.offset retornado no payload de resposta. 25
data.page number Campo data.page retornado no payload de resposta. 2
data.primaryResults number Campo data.primaryResults retornado no payload de resposta. 438
data.query string Campo data.query retornado no payload de resposta. curitiba parana
data.requestUrl string Campo data.requestUrl retornado no payload de resposta. https://www.booking.com/dml/graphql?ss=curitiba+parana&checkin=2026-02-27&checkout=2026-02-28&group_adults=2&group_children=0&no_rooms=1&lang=pt-br&selected_currency=BRL
data.resultsPerPage number Campo data.resultsPerPage retornado no payload de resposta. 25
data.source string Campo data.source retornado no payload de resposta. booking.com.br
data.totalResults number Campo data.totalResults retornado no payload de resposta. 438
data.type string Campo data.type retornado no payload de resposta. plp
data.url string Campo data.url retornado no payload de resposta. https://www.booking.com/searchresults.pt-br.html?ss=curitiba+parana&checkin=2026-02-27&checkout=2026-02-28&group_adults=2&group_children=0&no_rooms=1&lang=pt-br&selected_currency=BRL
executionId string (uuid) Campo executionId retornado no payload de resposta. 77777777-2222-4222-8222-777777777777
requestId string (uuid) Campo requestId retornado no payload de resposta. 77777777-1111-4111-8111-777777777777

Erros comuns

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.
500 WORKER_ERROR / INTERNAL_ERROR Falha interna no worker ou no gateway.