HasData Booking.com MCP Server
Estadias no Booking.com por destino e datas, além de detalhes completos das propriedades, em JSON estruturado.
Documentação
Servidor MCP do Booking.com
Um servidor de Protocolo de Contexto de Modelo (MCP) hospedado que oferece ao Claude, Cursor, Windsurf e qualquer outro cliente MCP duas ferramentas somente leitura do Booking.com. A busca é feita por destino e datas com filtros avançados, e a leitura de uma propriedade individual é completa, tudo como JSON estruturado, sem conta no Booking.com e sem necessidade de hospedar nada.
Ele lê páginas públicas de propriedades no Booking.com que um visitante não autenticado pode ver.
https://mcp.hasdata.com/api/mcp?apis=booking
Conteúdo
- O que você precisa
- Início rápido
- Exemplos de prompts
- Ferramentas
- Erros e caminhos de falha
- Preços, plano gratuito e limites
- Seleção de ferramentas
- Comparação
- Perguntas frequentes
- Links do HasData
- Desenvolvimento
- Contribuição
- Licença
O que você precisa
Um cliente MCP e uma chave de API do HasData do painel de controle, gratuita para criar sem cartão, e o teste cobre 100 chamadas na tarifa de 10 créditos. Este é um servidor remoto, então o caminho mais simples é uma URL e um cabeçalho x-api-key, sem contêiner para executar e sem conta no Booking.com em nenhuma parte do fluxo. Um cliente que só fala stdio o acessa por meio de um lançador leve, publicado como @hasdata/booking-mcp no npm e hasdata-booking-mcp no PyPI, mostrado abaixo.
Início rápido
A URL do servidor é a mesma para todos os clientes. Nós o testamos na prática no Claude Code e no Claude Desktop. Os outros blocos seguem o formato documentado de cada cliente para um servidor remoto.
| Campo | Valor |
|---|---|
| URL | https://mcp.hasdata.com/api/mcp?apis=booking |
| Transporte | HTTP, transmissível |
| Cabeçalho de autenticação | x-api-key: HASDATA_API_KEY |
Clientes com suporte a OAuth podem adicionar a mesma URL como conector e entrar sem colocar uma chave em um arquivo de configuração.
Claude Code
claude mcp add --transport http booking "https://mcp.hasdata.com/api/mcp?apis=booking" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
Configurações, depois Conectores, depois Adicionar conector personalizado, depois cole https://mcp.hasdata.com/api/mcp?apis=booking e entre.
Para o caminho do arquivo de configuração, o Claude Desktop carrega apenas servidores locais (stdio), então ele acessa um servidor remoto por meio de um lançador stdio. O pacote @hasdata/booking-mcp é esse lançador, e ele lê a chave do ambiente. Adicione isto a claude_desktop_config.json:
{
"mcpServers": {
"booking": {
"command": "npx",
"args": ["-y", "@hasdata/booking-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Para Python em vez de Node, troque o lançador pelo pacote PyPI, que uvx executa sem instalação manual:
{
"mcpServers": {
"booking": {
"command": "uvx",
"args": ["hasdata-booking-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Cursor
~/.cursor/mcp.json para cada projeto, ou .cursor/mcp.json para um único:
{
"mcpServers": {
"booking": {
"url": "https://mcp.hasdata.com/api/mcp?apis=booking",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json. O Windsurf chama o campo serverUrl, não url:
{
"mcpServers": {
"booking": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=booking",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
VS Code
.vscode/mcp.json no espaço de trabalho:
{
"servers": {
"booking": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=booking",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Exemplos de prompts
Prompts, não código. Cole um e o agente escolhe a ferramenta sozinho. Cada um é anotado com as chamadas que faz, porque cada chamada bem-sucedida custa 10 créditos.
Busque no Booking.com hotéis em Paris de 15 a 18 de setembro para dois adultos e me dê os dez mais bem avaliados abaixo de US$ 700 pela estadia.
Uma chamada, 10 créditos. Preço, nota de avaliação e localização voltam no resultado da busca.
Pegue o primeiro resultado e traga os detalhes completos: instalações, regras da casa, as opções de quarto e as avaliações por categoria.
Uma chamada, 10 créditos. Esses dados estão na página da propriedade, que a ferramenta de detalhes lê por URL e datas.
Encontre hotéis quatro estrelas em Paris com cancelamento gratuito perto do centro e liste preço e nota de avaliação.
Uma chamada, 10 créditos. Classificação por estrelas, política de cancelamento e distância são filtros em uma única solicitação.
Compare a estadia mais barata em Paris contra Roma nas mesmas datas.
Duas chamadas, 20 créditos, uma busca por cidade.
A ferramenta de propriedade precisa das mesmas datas e contagens de hóspedes da busca, porque disponibilidade e preço dependem do período. Uma busca para pré-selecionar mais uma chamada de detalhes em três propriedades é uma busca e três chamadas de propriedade.
Ferramentas
Duas ferramentas, somente leitura. Os exemplos abaixo foram resumidos de chamadas reais, e os preços mudam constantemente. Leia-os como formatos. Cada nome de ferramenta leva à referência do endpoint, que traz a lista completa de campos.
Os exemplos são o payload, não a resposta inteira. Um resultado tools/call carrega um bloco de texto, e esse texto é ele próprio JSON contendo url, status, text e json, com os dados extraídos sob json. De uma resposta JSON-RPC bruta, o caminho é result.content[0].text, analisado, depois .json. Um cliente de chat desembrulha isso para você, e código que fala diretamente com o endpoint não faz isso.
Obter resultados de busca do Booking.com
hasdata_booking_search_getBookingSearchResults
Uma página de estadias por destino e datas.
| Parâmetro | Tipo | Obrigatório | Observações |
|---|---|---|---|
keyword | string | sim | Destino, como Paris ou um nome específico de propriedade |
checkInDate / checkOutDate | string | sim | YYYY-MM-DD, check-in no futuro e antes do check-out |
rooms / adults / children | número | sim | Composição de hóspedes. Passe children: 0 quando não houver |
childrenAges | string | Idades separadas por vírgula, obrigatório quando children > 0 | |
sort | string | priceLowestFirst, ratingHighToLow, bestReviewedAndLowestPrice, distanceFromDowntown e mais | |
propertyType__ / rating__ / reviewScore__ | array | Tipo de propriedade, classificação por estrelas e faixas de nota dos hóspedes | |
facilities__ / roomFacilities__ / reservationPolicy__ | array | Filtros de instalações, do quarto e de cancelamento | |
price_min_ / price_max_ | número | Faixa de preço da estadia total | |
page | número | Cerca de 25 resultados por página, 2 para a próxima página |
A referência documenta o conjunto completo de filtros, incluindo distância, refeições, acessibilidade, preferência de cama e grupo de viagem.
Retorna searchInformation, um array results e pagination com page, totalResults e totalPages. Cada resultado traz hotelId, title, url, o room oferecido e bedTypes, um objeto location, um objeto policies, um objeto price, o rating de estrelas, um objeto reviews com score, count e um rótulo de texto, e um photo.
O campo de desconto em
priceé escritodicsount(dicsountRawedicsountParsed), o que espelha a chave upstream. Leia essa grafia, nãodiscount. Observe também queratingé a classificação oficial por estrelas, enquantoreviews.scoreé a nota dos hóspedes de 0 a 10, dois números diferentes.
{
"hotelId": 50724,
"title": "Hôtel du Jardin des Plantes",
"url": "https://www.booking.com/hotel/fr/timjardindesplantes.html",
"room": "Comfort Double Room",
"location": { "city": "Paris", "address": "5 rue Linné", "mainDistance": "0.9 miles from downtown", "centrallyLocated": true },
"policies": { "freeCancellation": true, "noPrepayment": true },
"price": { "pricePerStayParsed": 451.36, "priceBeforeDiscountParsed": 885.03, "dicsountParsed": 433.66, "currency": "USD" },
"rating": 3,
"reviews": { "score": 7.5, "count": 1721, "text": "Good" }
}
Obter detalhes de propriedade do Booking.com
hasdata_booking_place_getBookingPlaceDetails
Uma propriedade completa, pela URL e pelo período da estadia.
| Parâmetro | Tipo | Obrigatório | Observações |
|---|---|---|---|
url | string | sim | Uma URL de propriedade do Booking.com, o campo url de um resultado de busca |
checkInDate / checkOutDate | string | sim | YYYY-MM-DD, o período para precificar e verificar disponibilidade |
rooms / adults / children | número | sim | Composição de hóspedes, mesmo significado da ferramenta de busca |
childrenAges | string | Idades separadas por vírgula, obrigatório quando children > 0 |
Retorna a página em seções, em vez de um único objeto achatado: overview (id, title, propertyType, um address estruturado, um description, highlights, mostPopularFacilities e photos), bookingDetails (o período e a moeda que os preços refletem), um array rooms das suítes disponíveis, cada uma com name, beds, facilities e variants com preço, uma lista facilities, houseRules, um array ratings de notas por categoria, reviews e questionsAndAnswers.
{
"overview": {
"id": "50724",
"title": "Hôtel du Jardin des Plantes",
"propertyType": "HOTEL",
"address": { "country": "France", "zipcode": "75005" },
"mostPopularFacilities": ["Non-smoking rooms", "Free Wifi", "24-hour front desk"]
},
"bookingDetails": { "checkIn": "2026-09-15", "checkOut": "2026-09-18", "adults": 2, "rooms": 1, "currency": "USD" },
"ratings": [
{ "label": "Average", "value": 7.5, "votes": 1721 },
{ "label": "Cleanliness", "value": 7.8 }
]
}
Erros e caminhos de falha
Seu cliente quase nunca vê um código de erro HTTP de uma chamada de ferramenta. A camada MCP responde 200 e coloca a falha dentro do resultado, com isError definido como true e o motivo como texto. O agente lê uma mensagem onde você poderia esperar uma linha de status.
Uma chave errada aparece como saída da ferramenta, não como conexão falha. tools/list aceita qualquer chave não vazia e retorna as duas ferramentas, então o cliente completa o handshake e mostra verde. A primeira chamada de ferramenta então volta com isError: true e o texto HasData API error: 401 Unauthorized. Fique atento a essa string, porque nada antes no fluxo relata o problema.
Uma chave ausente é o único erro HTTP real. A autorização roda antes de qualquer ferramenta, e a própria conexão falha com 401. Os cabeçalhos CORS estão presentes, e um cliente de navegador lê o status e não uma falha de rede opaca.
Um argumento que quebra o esquema de uma ferramenta é rejeitado antes de virar uma extração. O servidor responde com isError: true e o texto MCP error -32602: Input validation error, nomeando o campo problemático. Uma contagem children sem childrenAges correspondente, ou um check-out no mesmo dia ou antes do check-in, é capturada aqui.
Uma busca sem disponibilidade retorna um resultado bem-sucedido com um array results vazio, não um erro. Um destino e um período sem nada aberto ainda voltam com requestMetadata.status definido como ok. Teste o comprimento do array antes de iterar.
Uma URL de propriedade que não resolve mais retorna 400 com requestMetadata.status definido como error.
Resultados que trazem dados também trazem um requestMetadata.id que vale citar no suporte.
Preços, plano gratuito e limites
Cada ferramenta do Booking.com custa 10 créditos por chamada bem-sucedida. O tamanho da resposta não muda o preço. Uma página de busca com 25 estadias custa o mesmo que uma com duas.
O teste gratuito é de 1.000 créditos por 30 dias, sem cartão, o que equivale a 100 chamadas do Booking.com. Depois disso, uma conta ativa continua recebendo 100 créditos recarregados diariamente sempre que o saldo cair abaixo de 100, então um agente de baixo volume funciona no plano gratuito indefinidamente.
Os planos pagos começam em US$ 49 por mês para 200.000 créditos, o que equivale a 20.000 chamadas. O preço unitário cai com o volume, de US$ 2,45 por 1.000 chamadas no plano inicial para US$ 0,99 no Business, US$ 0,83 no Growth e US$ 0,75 nos maiores planos de alto volume.
Seu plano também define a concorrência. O teste gratuito permite 1 solicitação por vez, o Startup 15, o Business 30, o Growth 50, e os planos de alto volume vão de 200 a 1.500. Trate o caso de estouro de forma defensiva em qualquer coisa não supervisionada.
Uma solicitação que volta com status diferente de 200 não é cobrada. Uma chamada bem-sucedida que não encontra nada ainda é uma chamada.
Seleção de ferramentas
O parâmetro de consulta apis decide quais ferramentas seu agente vê. Menos ferramentas significa menos contexto gasto em definições de ferramentas e menos chances de o modelo escolher a errada.
?apis=booking the two tools in this repo
?apis=booking,airbnb add Airbnb stays
?apis=booking,google_travel add Google Hotels and Flights
O parâmetro aceita nomes de provedores como booking e nomes individuais de API como booking_search. Nomes com erro de digitação são ignorados. Se todos os nomes estiverem errados, a solicitação falha com 400, e o corpo lista tanto o que não foi reconhecido quanto todos os valores válidos. Remova o parâmetro e o mesmo endpoint expõe todas as 57 ferramentas do HasData.
Comparação
Os programas próprios da Booking.com, a Demand API e a rede de parceiros afiliados, são para parceiros aprovados que enviam reservas e ganham comissão, não uma forma autônoma de ler o mercado público. Para pesquisar estadias e ler propriedades arbitrárias, raspar as páginas públicas é o caminho, e este servidor faz isso por trás de um esquema estável.
| Programas de parceiros da Booking.com | Este servidor | |
|---|---|---|
| Propósito | Enviar reservas como afiliado aprovado | Ler o mercado público |
| Acesso | Aprovação de parceiro | Uma chave e uma URL |
| Pesquisa no mercado | Dentro dos termos do parceiro | Sim, com filtros ricos |
| Configuração | Integração de negócios | Nenhuma |
| Saída | Feeds de parceiros | JSON estruturado, preço e pontuação pré-analisados |
O que este servidor não faz. Sem reservas, sem pagamentos, sem comissão de parceiro, sem dados de conta. Ele lê o que um visitante desconectado pode ver na Booking.com.
FAQ
Existe um servidor MCP oficial da Booking.com?
A Booking.com não publica um. Este é mantido pela HasData e lê páginas públicas, por isso não precisa de conta na Booking.com.
O que é um servidor MCP da Booking.com?
Um servidor que expõe dados da Booking.com como ferramentas que um cliente de IA pode chamar. O cliente envia uma chamada de ferramenta pelo Model Context Protocol, o servidor busca os dados e retorna JSON estruturado, e o modelo trabalha com o resultado. Este expõe duas ferramentas e roda remotamente.
Preciso de uma conta na Booking.com ou aprovação de parceiro?
Não. A única credencial é a sua chave HasData. Não há integração de parceiro, porque as ferramentas leem páginas públicas da Booking.com.
Por que a ferramenta de propriedade precisa de datas?
Porque disponibilidade, opções de quarto e preço dependem da janela de estadia. Passe os mesmos checkInDate, checkOutDate e contagens de hóspedes que você usou na pesquisa, e o detalhe refletirá essa janela.
Qual é a diferença entre classificação e pontuação de avaliação?
rating é a classificação oficial por estrelas da propriedade. reviews.score é a pontuação de avaliação dos hóspedes de 0 a 10. Um hotel de três estrelas pode ter uma pontuação de hóspedes de 9,0, então leia a que você quer dizer.
Posso usar isso junto com outras APIs da HasData?
Sim. O parâmetro apis aceita uma lista, e ?apis=booking,airbnb dá ao seu agente Booking.com mais Airbnb. Remova o parâmetro e você obtém tudo.
A HasData é afiliada à Booking.com?
Não. A HasData é um serviço independente e não é afiliada, endossada ou patrocinada pela Booking.com. Booking.com é uma marca registrada de seu respectivo proprietário.
Conformidade e dados pessoais
A HasData acessa apenas dados publicamente disponíveis. Os termos de uma plataforma podem restringir o acesso automatizado, e você é responsável pela sua própria conformidade. Onde os dados que você coleta incluem informações pessoais, certifique-se de ter uma base legal para isso sob o GDPR, CCPA ou as regras equivalentes na sua jurisdição.
Links da HasData
| Página do produto e construtor de solicitações | Booking.com Scraper API |
| Documentação do servidor | MCP server docs |
| Todas as 57 ferramentas em um servidor | HasData/hasdata-mcp |
| Tutoriais de clientes | MCP clients and integrations |
| Tudo o mais que raspamos | Booking.com Scraper API and 54 more |
| Planos e custos de créditos | Plans and credit costs |
| Chaves e uso | HasData dashboard |
| Lançador Node no npm | @hasdata/booking-mcp |
| Lançador Python no PyPI | hasdata-booking-mcp |
Desenvolvimento
Este repositório é configuração e documentação para um servidor remoto. Não há etapa de build e nada para containerizar.
Os testes em test/ verificam o contrato da ferramenta, a parte que pode quebrar sem um commit aqui. Eles verificam que ?apis=booking retorna exatamente duas ferramentas, que cada ferramenta ainda declara seus parâmetros obrigatórios, que nenhum nome mudou e que a chave em uso é realmente aceita. Esse último check chama uma ferramenta de verdade e custa 10 créditos, que é o preço de um canário que pode falhar pelo motivo certo.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test
A mesma suíte roda no CI a cada push e uma vez por semana em um cronograma, porque a lista de ferramentas upstream pode mudar sem ninguém tocar neste repositório. Uma falha significa que a lista de ferramentas mudou, a chave parou de funcionar ou o endpoint estava inacessível, e a mensagem de asserção diz qual.
Contribuindo
Correções nas tabelas de ferramentas e nos exemplos de resposta são a contribuição mais útil, porque essas são as partes que se desatualizam. Inclua a chamada que você fez e a resposta que obteve. Pull requests de forks rodam a suíte sem chave, e os checks ao vivo pulam em vez de ficarem vermelhos.
Licença
MIT. Veja LICENSE.