Primeros pasos con la API de actividades de XeniCómo reservar una actividadCómo buscar etiquetas y categorías de actividadesCómo cancelar una reserva de actividadCómo comprobar la disponibilidad de la actividadCómo obtener detalles de la actividadCómo recuperar los detalles de la reserva de actividadesCómo buscar actividades con filtrosCómo buscar destinos de actividadesAPI de alquiler de coches: introducciónAPI de alquiler de coches: comprensión de los campos de respuestaCómo reservar un alquiler de cochesCómo obtener detalles del vehículo de alquiler y complementos de equipoCómo recuperar o cancelar una reserva de alquiler de cochesCómo buscar autos de alquiler disponiblesCómo buscar ubicaciones de recogidaCómo utilizar los filtros de búsqueda de alquiler de cochesMejores prácticas de integración de API de ofertasPreguntas frecuentes sobre la API de ofertasPrimeros pasos con la API de ofertas de XeniReferencia de encabezados y parámetros de solicitud de API de ofertasOfertas API Monedas admitidas y localizaciónCómo mostrar ofertas en su aplicaciónCómo buscar ofertas de hoteles por ubicaciónCódigos de error de la API de vuelos y solución de problemasPrimeros pasos con la API de vuelos de XeniCómo reservar un vueloCómo comprobar la disponibilidad y el precio de los vuelosCómo confirmar o cancelar una reserva de vueloCómo recuperar las reglas de tarifas de un vueloCómo recuperar los detalles de la reserva de un vueloCómo buscar aeropuertos usando AutocompletarCómo buscar vuelosCómo utilizar filtros, clasificación y paginación de búsqueda de vuelosCómo comprobar la disponibilidad y el precio de las habitacionesCómo filtrar los resultados de los alquileres vacacionalesCómo obtener detalles, comodidades y accesibilidad de la propiedad del resortCómo mantener y confirmar una reserva de resortCómo liberar una retención de resortCómo recuperar los detalles de la reserva del resortCómo buscar complejos turísticos disponiblesCómo buscar destinos turísticosCómo buscar ubicaciones de alquiler vacacionalCómo buscar alquileres vacacionalesCómo utilizar filtros de búsqueda y clasificación de complejos turísticosComenzando con la API de Xeni ResortsAPI de Resorts: comprensión de los estados y políticas de las reservasPrimeros pasos con la API de alquileres vacacionalesPreguntas frecuentes sobre alquileres vacacionalesTipos de propiedades admitidas para alquileres vacacionalesComprensión de la búsqueda asincrónica para alquileres vacacionalesAutenticación y firmas APIReserva de hoteles: API directa y pago SSOManejo de errores, límites de tasas y mejores prácticasPrimeros pasos con la API de Xeni HotelesGestión de reservas: estado, recuperación y cancelaciónConfirmación de precios y ciclo de vida del tokenRecuperar detalles del hotel y disponibilidad de habitacionesBúsqueda de hoteles: ubicaciones, filtros y paginaciónBuscando HotelesGestión de sesiones e ID de correlaciónAutenticación API y obtención de claves API

Búsqueda de hoteles: ubicaciones, filtros y paginación

Última actualización: 2026-02-13

Búsqueda de hoteles: ubicaciones, filtros y paginación

La búsqueda de hotel es un proceso de dos pasos. Primero, resuelva el nombre de un destino en coordenadas geográficas utilizando el punto final de autocompletar. Luego, use esas coordenadas para buscar propiedades disponibles. Este artículo cubre ambos pasos con todo detalle, incluido cómo aplicar filtros y paginar conjuntos de resultados grandes.

Paso 1: Buscar ubicaciones (Autocompletar)

El punto final de autocompletar resuelve una consulta de texto libre en resultados de ubicación estructurados con coordenadas. Admite nombres de ciudades, nombres de regiones, nombres de países e incluso nombres de hoteles específicos.

Punto final

GET /hotels/api/v2/autocomplete?key={query}

Parámetros

XENIKB PH35
ParámetroTipo eRequeridoDescripción
clave XENIKBPH42stringBuscar consulta. Ejemplos: "Miami", "París", "Hilton Garden Posada"

Solicitud de ejemplo

GET /hotels/api/v2/autocomplete?key=MiamiAuthorization: {signature}Content-Type: application/json

Ejemplo de respuesta

JSON
{
  "data": [
    {
      "id": "12345",
      "name": "Miami",
      "full_name": "Miami, Florida, United States",
      "country": "United States",
      "state": "Florida",
      "location": {
        "lat": 25.7617,
        "long": -80.1918
      }
    },
    {
      "id": "12346",
      "name": "Miami Beach",
      "full_name": "Miami Beach, Florida, United States",
      "country": "United States",
      "state": "Florida",
      "location": {
        "lat": 25.7907,
        "long": -80.13
      }
    }
  ]
}

Campos de respuesta

X ENIKBPH63TipoXENIKBPH6 7
CampoDescripción
idX ENIKBPH73stringÚnico ubicación identificador.
na yocadenaCorto ubicación nombre.
fullna yostringCompletamente nombre calificado (ciudad, estado, país).
país). ystringPaís nombre.
estado stringEstado o provincia (donde aplicable).
ubicación n.latnúmeroLatitud coordenada.
ubicación .longnúmeroLongitud coordenada.

Importante: Los encabezados de respuesta incluirán un valor x-correlation-id. Debes capturar y pasar este valor en los encabezados de todas las llamadas API posteriores dentro de la misma sesión de búsqueda. Consulte Administración de sesiones e ID de correlación para obtener más detalles.

*

Paso 2: Buscar hoteles

Una vez que tenga las coordenadas del paso de autocompletar, utilice el punto final de búsqueda de hoteles para encontrar propiedades disponibles.

Punto final

POST /hotels/api/v2/properties?page={page}&limit={limit}

Parámetros de consultaXENIKB PH154XENIKB PH_161entero
ParámetroTipoXENI KBPH148PredeterminadoDescripción
página1Página numero para paginación.
límite__XENIKBPH174 _entero20Número de resultados por página.

Cuerpo de solicitud

CampoTipoXEN IKBPH192RequeridoDescripción
checkindate XENIKBPH204stringRegistro fecha en AAAA-MM-DD formato.
fecha de pagoXENIKBPH217 stringPagar fecha en formato AAAA-MM-DD. debe ser después checkindate.
occu pancyarrayArray de objetos de ocupación de habitaciones (ver abajo).
latX ENIKBPH246númeroLatitud desde autocompletar resultados.
largoX ENIKBPH258númeroLongitud desde autocompletar resultados.
paísderesidenciaXENIKB PH269stringISO Código de país de dos letras del huésped (p. ej., "US").
sort XENIKBPH283arrayNoClasificación criterios. Consulte la sección Clasificación abajo.
filtros objetoNoFiltro criterios. Consulte la sección Filtros a continuación.
isasyncXENIKBPH311 _booleanoNoConjunto a false para resultados sincrónicos (recomendado).

Objeto de ocupación

Cada elemento de la matriz occupancy representa una habitación:

XE NIKBPH329TipoXENIKBPH333
CampoDescripción
adultosX ENIKBPH339enteroNúmero de huéspedes adultos (mayores de 18 años). Mínimo: 1.
niños XENIKBPH349__enteroNúmero de niños. Establezca en 0 si none.
childagesmatriz de números enterosEdades de cada niño. Debe tener exactamente childs elementos. Ejemplo: [5, 12].

Ejemplo: Habitación individual, 2 adultos

JSON
"occupancy": [  {    "adults": 2,    "childs": 0,    "childages": []  }]

Ejemplo: Habitación individual, 2 adultos + 1 niño de 8 años

JSON
"occupancy": [  {    "adults": 2,    "childs": 1,    "childages": [8]  }]

Ejemplo: dos habitaciones

JSON
"occupancy": [  {    "adults": 2,    "childs": 0,    "childages": []  },  {    "adults": 1,    "childs": 2,    "childages": [5, 10]  }]

*

Filtros

El objeto filters le permite limitar los resultados de la búsqueda. Todos los campos de filtro son opcionales.

XENIKBPH 387calificaciones
CampoXENIKBPH 378TipoDescripciónXENIKBPH3 82
matriz de números enterosCalificaciones de estrellas para incluir. Valores: 1 a 5. Ejemplo: [4, 5] para 4 y 5 estrellas hoteles.
amenidadesconjunto de stringsFiltrar por servicios. Valores comunes: "WiFi gratis", "Piscina", "Gimnasio", "Estacionamiento", "Restaurante", "Spa", "Admite mascotas", "Aeropuerto lanzadera".
XENIKBPH43 0minprecionúmeroMínimo precio total (USD).
maxpric enúmeroMáximo precio total (USD).
nombre XENIKBPH_451__cadenaFiltro por nombre del hotel (coincidencia parcial). Ejemplo: "Marriott".

Ejemplo: hoteles de 4+ estrellas con piscina de menos de $300

JSON
"filters": {  "ratings": [4, 5],  "amenities": ["Pool"],  "max_price": 300}

*

Clasificación

La matriz sort controla el orden de los resultados. Cada elemento es un objeto con campos key y order.

XENIKBPH47 1
Ordenar ClaveDescripción
precioOrdenar por tarifa total.
XENIKBPH489
PedidoDescripción
ascAscendente (el más bajo primero).
descDescendente (el más alto). primero).

Ejemplo

JSON
"sort": [{ "key": "price", "order": "asc" }]

*

Ejemplo de solicitud de búsqueda completa

POST /hotels/api/v2/properties?page=1&limit=20Authorization: {signature}x-correlation-id: {correlation_id}Content-Type: application/json

{ "checkindate": "2025-06-01", "checkoutdate": "2025-06-05", "occupancy": [ { "adults": 2, "childs": 0, "childages": [] } ], "lat": 25.7617, "long": -80.1918, "countryofresidence": "US", "sort": [{ "key": "price", "order": "asc" }], "filters": { "ratings": [4, 5], "amenities": ["Free WiFi", "Pool"], "maxprice": 400 }, "isasync": false}

Respuesta de búsqueda

JSON
{
  "data": {
    "total": 147,
    "hotels": [
      {
        "property_id": "XN00012345",
        "name": "Oceanview Resort & Spa",
        "ratings": {
          "star_rating": 4,
          "user_rating": 8.5,
          "review_count": 1240
        },
        "rate": {
          "base_rate": 756,
          "total_rate": 891.08,
          "currency": "USD",
          "taxandfees": 135.08,
          "recommendedsellingprice": 950,
          "saved_price": 58.92
        },
        "amenities": [
          "Free WiFi",
          "Pool",
          "Spa",
          "Restaurant",
          "Fitness Center"
        ],
        "image": {
          "large": "https://images.xeni.com/hotels/12345/main.jpg"
        },
        "contact": {
          "address": {
            "line_1": "123 Ocean Drive",
            "city": "Miami Beach",
            "state": "FL",
            "postal_code": "33139"
          }
        },
        "chain": "Independent",
        "distance": 2.4
      }
    ]
  }
}

Campos de respuesta clave

XENIKBPH517
CampoDescripción
datos.totalTotal número de propiedades coincidentes en todos páginas.
propertyidIdentificador único de hotel. Utilice esto para obtener detalles y disponibilidad. llamadas.
rate.baserateTarifa de la habitación antes de impuestos y tasas (para estancia completa).
rate.totalrateTotal precio incluyendo impuestos y tarifas.
rate.taxandfeesImpuestos y tarifa importe.
XENIKBPH562 tarifa.preciodeventarecomendadoRecomendado precio de venta al público (para margen cálculos).
rate.saved_priceAhorros comparados con el precio de venta recomendado.
distanceDistancia desde el centro de búsqueda en millas.

*

Paginación

Los resultados se paginan utilizando los parámetros de consulta page y limit.

  • El tamaño de página predeterminado es 20 resultados.
  • El campo data.total en la respuesta le indica el número total de propiedades coincidentes.
  • Calcular páginas totales: Math.ceil(total / limit).
  • Incrementar el parámetro page para recuperar el siguiente lote.

Ejemplo: Obteniendo la página 2

POST /hotels/api/v2/properties?page=2&limit=20

Utilice el mismo cuerpo de solicitud y encabezados que la búsqueda original. El ID de correlación debe permanecer igual durante toda la sesión.

Consejos de paginación

  • Si recibes menos resultados que limit, has llegado a la última página.
  • Agregue nuevos resultados a su lista existente en lugar de reemplazarlos, para crear una vista completa para el usuario.
  • Evite solicitar tamaños de página muy grandes. El valor predeterminado de 20 proporciona un buen equilibrio entre rendimiento e integridad.
*

_Artículo siguiente: Recuperación de detalles del hotel y disponibilidad de habitaciones
_

¿Te resultó útil este artículo?