HasData Booking.com MCP Server

Estadías en Booking.com por destino y fechas, además de detalles completos de la propiedad, como JSON estructurado.

Documentación

Servidor MCP de Booking.com

Un servidor de Protocolo de Contexto de Modelo (MCP) alojado que brinda a Claude, Cursor, Windsurf y cualquier otro cliente MCP dos herramientas de solo lectura de Booking.com. La búsqueda se realiza por destino y fechas con filtros enriquecidos, y lee una propiedad individual en su totalidad, todo como JSON estructurado, sin necesidad de cuenta de Booking.com ni nada que alojar.

Lee páginas públicas de propiedades en Booking.com que un visitante sin sesión puede ver.

https://mcp.hasdata.com/api/mcp?apis=booking

Glama score tool contract MCP Tools npm PyPI License

Contenido

Lo que necesitas

Un cliente MCP y una clave de API de HasData desde el panel de control, gratis de crear sin tarjeta, y la prueba cubre 100 llamadas a la tarifa de 10 créditos. Este es un servidor remoto, por lo que la ruta más simple es una URL y un encabezado x-api-key, sin contenedor que ejecutar y sin cuenta de Booking.com en ningún punto del flujo. Un cliente que solo habla stdio lo alcanza a través de un lanzador ligero, publicado como @hasdata/booking-mcp en npm y hasdata-booking-mcp en PyPI, que se muestra a continuación.

Inicio rápido

La URL del servidor es la misma para todos los clientes. Lo ejecutamos de forma práctica en Claude Code y Claude Desktop. Los otros bloques siguen el formato documentado de cada cliente para un servidor remoto.

CampoValor
URLhttps://mcp.hasdata.com/api/mcp?apis=booking
TransporteHTTP, transmisible
Encabezado de autenticaciónx-api-key: HASDATA_API_KEY

Los clientes con soporte OAuth pueden agregar la misma URL como conector e iniciar sesión sin poner una clave en un archivo de configuración.

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

Configuración, luego Conectores, luego Agregar conector personalizado, luego pega https://mcp.hasdata.com/api/mcp?apis=booking e inicia sesión.

Para la ruta de archivo de configuración, Claude Desktop carga solo servidores locales (stdio), por lo que alcanza un servidor remoto a través de un lanzador stdio. El paquete @hasdata/booking-mcp es ese lanzador, y lee la clave del entorno. Agrega esto a claude_desktop_config.json:

{
  "mcpServers": {
    "booking": {
      "command": "npx",
      "args": ["-y", "@hasdata/booking-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Para Python en lugar de Node, cambia el lanzador por el paquete de PyPI, que uvx ejecuta sin instalación manual:

{
  "mcpServers": {
    "booking": {
      "command": "uvx",
      "args": ["hasdata-booking-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

~/.cursor/mcp.json para cada proyecto, o .cursor/mcp.json para uno solo:

{
  "mcpServers": {
    "booking": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json. Windsurf llama al campo serverUrl, no url:

{
  "mcpServers": {
    "booking": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
VS Code

.vscode/mcp.json en el espacio de trabajo:

{
  "servers": {
    "booking": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Ejemplos de indicaciones

Indicaciones, no código. Pega una y el agente elige la herramienta por sí mismo. Cada una está anotada con las llamadas que requiere, porque cada llamada exitosa cuesta 10 créditos.

Busca en Booking.com hoteles en París del 15 al 18 de septiembre para dos adultos, y dame los diez mejor valorados por menos de $700 por la estadía.

Una llamada, 10 créditos. El precio, la puntuación de reseñas y la ubicación vienen en el resultado de búsqueda.

Toma el primer resultado y obtén su detalle completo: instalaciones, reglas de la casa, las opciones de habitación y las calificaciones por categoría.

Una llamada, 10 créditos. Esos datos viven en la página de la propiedad, que la herramienta de detalles lee por URL y fechas.

Encuentra hoteles de cuatro estrellas en París con cancelación gratuita cerca del centro, y lista precio y puntuación de reseñas.

Una llamada, 10 créditos. La calificación de estrellas, la política de cancelación y la distancia son filtros en una sola solicitud.

Compara la estadía más barata en París contra Roma para las mismas fechas.

Dos llamadas, 20 créditos, una búsqueda por ciudad.

La herramienta de propiedad necesita las mismas fechas y cantidades de huéspedes que la búsqueda, porque la disponibilidad y el precio dependen del período. Una búsqueda para preseleccionar más una llamada de detalle en tres propiedades es una búsqueda y tres llamadas de propiedad.

Herramientas

Dos herramientas, de solo lectura. Las muestras a continuación están recortadas de llamadas reales, y los precios cambian constantemente. Léelas como formas. Cada nombre de herramienta enlaza a su referencia de endpoint, que lleva la lista completa de campos.

Las muestras son el payload, no la respuesta completa. Un resultado tools/call lleva un bloque de texto, y ese texto es en sí mismo JSON que contiene url, status, text y json, con los datos extraídos bajo json. Desde una respuesta JSON-RPC cruda, la ruta es result.content[0].text, analizada, luego .json. Un cliente de chat lo desenvuelve por ti, y el código que habla directamente con el endpoint no lo hace.

Obtener resultados de búsqueda de Booking.com

hasdata_booking_search_getBookingSearchResults

Una página de estadías por destino y fechas.

ParámetroTipoObligatorioNotas
keywordstringDestino, como Paris o un nombre de propiedad específico
checkInDate / checkOutDatestringYYYY-MM-DD, check-in en el futuro y antes del check-out
rooms / adults / childrennumberComposición de huéspedes. Pasa children: 0 cuando no hay ninguno
childrenAgesstringEdades separadas por comas, obligatorio cuando children > 0
sortstringpriceLowestFirst, ratingHighToLow, bestReviewedAndLowestPrice, distanceFromDowntown y más
propertyType__ / rating__ / reviewScore__arrayTipo de propiedad, calificación de estrellas y rangos de puntuación de huéspedes
facilities__ / roomFacilities__ / reservationPolicy__arrayFiltros de instalaciones, en la habitación y cancelación
price_min_ / price_max_numberBanda de precio total de la estadía
pagenumberAlrededor de 25 resultados por página, 2 para la siguiente página

La referencia documenta el conjunto completo de filtros, incluidos distancia, comidas, accesibilidad, preferencia de cama y grupo de viaje.

Devuelve searchInformation, un array results, y pagination con page, totalResults y totalPages. Cada resultado lleva hotelId, title, url, el room ofrecido y bedTypes, un objeto location, un objeto policies, un objeto price, el rating de estrellas, un objeto reviews con score, count y una etiqueta de texto, y un photo.

El campo de descuento en price se escribe dicsount (dicsountRaw y dicsountParsed), lo que refleja la clave upstream. Lee esa ortografía, no discount. También ten en cuenta que rating es la calificación oficial de estrellas mientras que reviews.score es la puntuación de huéspedes sobre 10, dos 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" }
}

Obtener detalles de propiedad de Booking.com

hasdata_booking_place_getBookingPlaceDetails

Una propiedad en su totalidad, por su URL y el período de estadía.

ParámetroTipoObligatorioNotas
urlstringUna URL de propiedad de Booking.com, el campo url de un resultado de búsqueda
checkInDate / checkOutDatestringYYYY-MM-DD, el período para cotizar y verificar disponibilidad
rooms / adults / childrennumberComposición de huéspedes, mismo significado que la herramienta de búsqueda
childrenAgesstringEdades separadas por comas, obligatorio cuando children > 0

Devuelve la página como secciones en lugar de un objeto plano: overview (id, title, propertyType, un address estructurado, un description, highlights, mostPopularFacilities y photos), bookingDetails (el período y la moneda que reflejan los precios), un array rooms de las suites disponibles, cada una con name, beds, facilities y variants con precio, una lista facilities, houseRules, un array ratings de puntuaciones por categoría, reviews y 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 }
  ]
}

Errores y rutas de fallo

Tu cliente casi nunca ve un código de error HTTP de una llamada de herramienta. La capa MCP responde 200 y pone el fallo dentro del resultado, con isError establecido en true y el motivo como texto. El agente lee un mensaje donde podrías esperar una línea de estado.

Una clave incorrecta aparece como salida de herramienta, no como conexión fallida. tools/list acepta cualquier clave no vacía y devuelve ambas herramientas, por lo que el cliente completa su handshake y muestra verde. La primera llamada de herramienta luego regresa con isError: true y el texto HasData API error: 401 Unauthorized. Vigila esa cadena, porque nada antes en el flujo informa el problema.

Una clave faltante es el único error HTTP real. La autorización se ejecuta antes de cualquier herramienta, y la conexión misma falla con 401. Los encabezados CORS están presentes, y un cliente de navegador lee el estado y no un fallo de red opaco.

Un argumento que rompe el esquema de una herramienta se rechaza antes de convertirse en un scrape. El servidor responde con isError: true y el texto MCP error -32602: Input validation error, nombrando el campo infractor. Un recuento de children sin childrenAges coincidente, o un check-out en o antes del check-in, se detecta aquí.

Una búsqueda sin disponibilidad devuelve un resultado exitoso con un array results vacío, no un error. Un destino y período sin nada abierto aún regresa con requestMetadata.status establecido en ok. Prueba la longitud del array antes de iterar.

Una URL de propiedad que ya no resuelve devuelve 400 con requestMetadata.status establecido en error.

Los resultados que llevan datos también llevan un requestMetadata.id que vale la pena citar en soporte.

Precios, nivel gratuito y límites

Cada herramienta de Booking.com cuesta 10 créditos por llamada exitosa. El tamaño de la respuesta no cambia el precio. Una página de búsqueda de 25 estadías cuesta lo mismo que una con dos.

La prueba gratuita es de 1,000 créditos durante 30 días sin tarjeta, que son 100 llamadas de Booking.com. Después, una cuenta activa sigue recibiendo 100 créditos recargados cada día cuando su saldo baja de 100, por lo que un agente de bajo volumen funciona en el nivel gratuito indefinidamente.

Los planes de pago comienzan en $49 al mes por 200,000 créditos, que son 20,000 llamadas. El precio unitario baja con el volumen, desde $2.45 por 1,000 llamadas en el plan inicial hasta $0.99 en Business, $0.83 en Growth y $0.75 en los planes de alto volumen más grandes.

Tu plan también establece la concurrencia. La prueba gratuita permite 1 solicitud a la vez, Startup 15, Business 30, Growth 50, y los planes de alto volumen van de 200 a 1,500. Maneja el caso de desbordamiento de forma defensiva en cualquier cosa desatendida.

Una solicitud que regresa con un código distinto de 200 no se factura. Una llamada exitosa que no encuentra nada sigue siendo una llamada.

Selección de herramientas

El parámetro de consulta apis decide qué herramientas ve tu agente. Menos herramientas significa menos contexto gastado en definiciones de herramientas, y menos oportunidades de que el modelo alcance la incorrecta.

?apis=booking                    the two tools in this repo
?apis=booking,airbnb             add Airbnb stays
?apis=booking,google_travel      add Google Hotels and Flights

El parámetro toma nombres de proveedores como booking y nombres de API individuales como booking_search. Los nombres mal escritos se ignoran. Si todos los nombres están mal, la solicitud falla con 400, y el cuerpo lista tanto lo que no reconoció como todos los valores válidos. Elimina el parámetro y el mismo endpoint expone las 57 herramientas de HasData.

Cómo se compara

Los programas propios de Booking.com, la Demand API y la red de socios afiliados, están destinados a socios aprobados que envían reservas y ganan comisiones, no son una forma autónoma de leer el mercado público. Para buscar alojamientos y leer propiedades arbitrarias, la vía es extraer las páginas públicas, y este servidor lo hace detrás de un esquema estable.

Programas de socios de Booking.comEste servidor
PropósitoEnviar reservas como afiliado aprobadoLeer el mercado público
AccesoAprobación de socioUna clave y una URL
Búsqueda en el mercadoDentro de los términos del socioSí, con filtros enriquecidos
ConfiguraciónIncorporación empresarialNinguna
SalidaFeeds de sociosJSON estructurado, precio y puntuación preanalizados

Lo que este servidor no hace. Sin reservas, sin pagos, sin comisiones de socios, sin datos de cuenta. Lee lo que un visitante sin sesión puede ver en Booking.com.

Preguntas frecuentes

¿Existe un servidor MCP oficial de Booking.com?

Booking.com no publica uno. Este está mantenido por HasData y lee páginas públicas, por lo que no necesita una cuenta de Booking.com.

¿Qué es un servidor MCP de Booking.com?

Un servidor que expone los datos de Booking.com como herramientas que un cliente de IA puede llamar. El cliente envía una llamada de herramienta a través del Model Context Protocol, el servidor obtiene los datos y devuelve JSON estructurado, y el modelo trabaja con el resultado. Este expone dos herramientas y se ejecuta de forma remota.

¿Necesito una cuenta de Booking.com o aprobación de socio?

No. La única credencial es tu clave de HasData. No hay incorporación de socios, porque las herramientas leen páginas públicas de Booking.com.

¿Por qué la herramienta de propiedades necesita fechas?

Porque la disponibilidad, las opciones de habitación y el precio dependen de la ventana de estancia. Pasa los mismos checkInDate, checkOutDate y recuentos de huéspedes que usaste en la búsqueda, y el detalle reflejará esa ventana.

¿Cuál es la diferencia entre calificación y puntuación de reseñas?

rating es la calificación oficial por estrellas de la propiedad. reviews.score es la puntuación de reseñas de huéspedes sobre 10. Un hotel de tres estrellas puede tener una puntuación de huéspedes de 9.0, así que lee la que te interese.

¿Puedo usar esto junto con otras APIs de HasData?

Sí. El parámetro apis acepta una lista, y ?apis=booking,airbnb le da a tu agente Booking.com más Airbnb. Elimina el parámetro y obtienes todo.

¿Está HasData afiliado a Booking.com?

No. HasData es un servicio independiente y no está afiliado, respaldado ni patrocinado por Booking.com. Booking.com es una marca comercial de su respectivo propietario.

Cumplimiento y datos personales

HasData accede únicamente a datos disponibles públicamente. Los términos de una plataforma pueden restringir el acceso automatizado, y tú eres responsable de tu propio cumplimiento. Cuando los datos que recopilas incluyan información personal, asegúrate de tener una base legal para ello según el GDPR, la CCPA o las normas equivalentes en tu jurisdicción.

Enlaces de HasData

Página de producto y generador de solicitudesBooking.com Scraper API
Documentación del servidorMCP server docs
Las 57 herramientas en un solo servidorHasData/hasdata-mcp
Guías de clientesMCP clients and integrations
Todo lo demás que extraemosBooking.com Scraper API and 54 more
Planes y costos de créditosPlans and credit costs
Claves y usoHasData dashboard
Lanzador de Node en npm@hasdata/booking-mcp
Lanzador de Python en PyPIhasdata-booking-mcp

Desarrollo

Este repositorio es configuración y documentación para un servidor remoto. No hay paso de compilación ni nada que contenerizar.

Las pruebas en test/ verifican el contrato de las herramientas, la parte que puede romperse sin un commit aquí. Comprueban que ?apis=booking devuelve exactamente dos herramientas, que cada herramienta sigue declarando sus parámetros requeridos, que ningún nombre ha cambiado y que la clave en uso es realmente aceptada. Esa última comprobación llama a una herramienta de verdad y cuesta 10 créditos, que es el precio de un canario que puede fallar por la razón correcta.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

La misma suite se ejecuta en CI en cada push y una vez a la semana de forma programada, porque la lista de herramientas upstream puede cambiar sin que nadie toque este repositorio. Un fallo significa que la lista de herramientas se movió, la clave dejó de funcionar o el endpoint era inalcanzable, y el mensaje de la aserción indica cuál.

Contribuciones

Las correcciones a las tablas de herramientas y a los ejemplos de respuestas son la contribución más útil, porque son las partes que se desvían. Incluye la llamada que hiciste y la respuesta que obtuviste. Las solicitudes de extracción de forks ejecutan la suite sin clave, y las comprobaciones en vivo se omiten en lugar de ponerse en rojo.

Licencia

MIT. Ver LICENSE.