Cotización simple
GET /v1/quotes devuelve la cotización de un hotel. Identifícalo por
hotel_id (el preferido: resuelve directo, sin paso de emparejamiento) o,
si todavía no tienes uno, por name + city/lat/lon para que el
emparejamiento confirme el hotel correcto por distancia GPS.
Tu primer request
Sección titulada «Tu primer request»curl "https://api.rateshooter.com/v1/quotes?hotel_id=2008&checkin=2026-12-10&checkout=2026-12-11&adults=2" \ -H "Authorization: Bearer <tu_api_key>"{
"status": "ok",
"hotel": {
"resolved_name": "Grand Oasis Cancun",
"hotel_id": 2008,
"verified": true
},
"offers": [
{
"vendor": "The Grand Oasis Cancun - All Inclusive",
"price_per_night": 245.40494,
"total_price": 245.40494,
"taxes_included": true
},
{
"vendor": "Super.com",
"price_per_night": 185.50781,
"total_price": 185.50781,
"taxes_included": true
},
{
"vendor": "trivago DEALS",
"price_per_night": 189.47403,
"total_price": 189.47403,
"taxes_included": true
},
{
"vendor": "Traveluro",
"price_per_night": 187.65692,
"total_price": 187.65692,
"taxes_included": true
},
{
"vendor": "Billabook.com",
"price_per_night": 210,
"total_price": 210,
"taxes_included": true
},
{
"vendor": "goseek.com",
"price_per_night": 219.50781,
"total_price": 219.50781,
"taxes_included": true
},
{
"vendor": "Despegar",
"price_per_night": 301.375,
"total_price": 301.375,
"taxes_included": true
},
{
"vendor": "Expedia.mx",
"price_per_night": 302.93268,
"total_price": 302.93268,
"taxes_included": true
},
{
"vendor": "Agoda",
"price_per_night": 230.1875,
"total_price": 230.1875,
"taxes_included": true
},
{
"vendor": "Booking.com",
"price_per_night": 297.90625,
"total_price": 297.90625,
"taxes_included": true
},
{
"vendor": "Priceline",
"price_per_night": 305.90625,
"total_price": 305.90625,
"taxes_included": true
},
{
"vendor": "Evendo",
"price_per_night": 256.15396,
"total_price": 256.15396,
"taxes_included": true
},
{
"vendor": "Central de Reservas",
"price_per_night": 247.38129,
"total_price": 247.38129,
"taxes_included": true
},
{
"vendor": "Hotel prive",
"price_per_night": 292.5,
"total_price": 292.5,
"taxes_included": true
},
{
"vendor": "Hoteles.com",
"price_per_night": 302.93268,
"total_price": 302.93268,
"taxes_included": true
},
{
"vendor": "Qantas Hotels",
"price_per_night": 302.1284,
"total_price": 302.1284,
"taxes_included": true
},
{
"vendor": "klook",
"price_per_night": 235.61737,
"total_price": 235.61737,
"taxes_included": true
},
{
"vendor": "Clicktrip.com",
"price_per_night": 241.47806,
"total_price": 241.47806,
"taxes_included": true
}
],
"meta": {
"offers_count": 18,
"billable": true
},
"stay": {
"checkin": "2026-12-10",
"checkout": "2026-12-11",
"nights": 1,
"adults": 2,
"rooms": 1,
"children": [],
"currency": "USD"
}
}
Parámetros
Sección titulada «Parámetros»| Parámetro | Obligatorio | Descripción |
|---|---|---|
hotel_id |
no* | El id del hotel. Preferido: resuelve directo, sin emparejamiento. |
hotel_ref |
no* | Un id que ya tengas, con prefijo namespace:id (p. ej. code:100231). |
name |
no* | Solo cuando no tienes un id. Busca en nuestro catálogo por nombre. |
city |
no | Contexto para humanos; no se usa para emparejar. |
lat / lon |
no | Envíalos junto con name: la distancia GPS confirma el emparejamiento. |
country |
no | ISO-3166-1 alfa-2. Acota candidatos al emparejar por name. |
phone |
no | Solo sus últimos 8 dígitos se comparan. Puede promover un candidato. |
checkin / checkout |
sí | YYYY-MM-DD. checkout debe ser posterior a checkin. |
adults |
sí | Adultos de la estancia. |
rooms |
no | Habitaciones. Por defecto 1. |
children |
no | Edades de los menores, separadas por coma (0 a 17). |
currency |
no | Por defecto USD. |
market |
no | Punto de venta. Por defecto mx. |
max_age |
no | Antigüedad de caché aceptable, en segundos. 0 fuerza una consulta en vivo. Por defecto 300. |
max_wait_ms |
no | Cuánto espera este request a que una celda de alta ocupación se caliente. |
* Debes enviar al menos uno de hotel_id, hotel_ref o name.
Leyendo la respuesta
Sección titulada «Leyendo la respuesta»hotel: el hotel resuelto (resolved_name,hotel_id,verified).offers: una entrada por canal con oferta.price_per_nightsiempre incluye impuestos — es el único campo comparable entre canales.meta.offers_count: cuántos canales respondieron.meta.billable: si esta llamada se cobra (ver qué se cobra).stay: la estancia normalizada que usó la cotización.
Headers de la respuesta
Sección titulada «Headers de la respuesta»| Header | Qué informa |
|---|---|
X-HotelQuotes-Charged |
Cuántos hotel-quotes cobró esta llamada. |
X-Quota-Limit / X-Quota-Used / X-Quota-Remaining |
Tu cuota mensual. |
X-Request-Id |
Identificador de la llamada, útil para soporte. |
Cuando el grupo no es cotizable
Sección titulada «Cuando el grupo no es cotizable»Un grupo que no cabe en las habitaciones del hotel responde 422, no 200
con una lista vacía:
{
"status": "not_quotable",
"reason": "rooms_insufficient",
"min_rooms": 3,
"max_rooms": 14,
"message": "Este grupo necesita al menos 3 habitaciones"
}
min_rooms y max_rooms viajan siempre en este caso, para que puedas
mostrarle al usuario el rango válido sin adivinarlo. Más casos en
errores y límites.