Recetas/Añade una ciudad y mira la demanda que crean sus eventos
Código Feed6 min

Añade una ciudad y mira la demanda que crean sus eventos

Events es la única API Feed sin import que lanzar: Veetal construye el dataset ciudad a ciudad y tu parte es un solo paso, dar de alta la location. Lo que vuelve no es una agenda, es una previsión de demanda por noche, por perfil de huésped y por anillo de distancia.

Añade una ciudad y mira la demanda que crean sus eventos

Qué vas a construir

Un año de eventos de Barcelona con, para cada uno, roomnights totales, la ventana de reserva (que abre antes que el evento), presión diaria contra el inventario de la ciudad, el reparto por categoría de hotel y perfil de huésped, y la distribución geográfica por anillos.

Cómo funciona

  1. 01Lo único que tienes que hacer
  2. 02Lee el calendario
  3. 03La parte que pone precio a las habitaciones
  4. 04Dónde en la ciudad, no solo cuántas
  5. 05Asistencia no es demanda
  6. 06Los tipos que se comportan distinto
  7. 07Qué pasa después

Paso a paso

Al terminar podrás preguntar "qué está pasando en Barcelona y cuánta demanda hotelera va a generar" y obtener una respuesta con roomnights por día, presión sobre el inventario de la ciudad y en qué zona se van a reservar esas habitaciones.

Qué necesitas: el destino dado de alta como location en tu cuenta. Nada más.

Lo que cuesta: los eventos se facturan por location y por mes, no por petición. No hay import que lanzar ni schedule que configurar — leer es la parte barata.

Lo único que tienes que hacer

Events es la rara entre las APIs Feed: no tiene import. El dataset lo produce el propio pipeline de Veetal, ciudad a ciudad. Tu parte del contrato es un solo paso: decirnos qué ciudad te importa.

En Locations, Add locations, y busca el destino. El diálogo declara su propósito en el subtítulo: "You will use them to search events in the destination".

Cuatro Barcelonas en cuatro países

Barcelona devuelve cuatro candidatas en cuatro países. Elige la que no es y todos los eventos que leas después son de otra ciudad. Usa Show Map si el nombre no basta para decidir.

⚠️ El nombre tiene que ser el real del destino — rebautizarlo devuelve el error 731.

La location dada de alta, con su tier y sus coordenadas

La fila enseña el tier y las coordenadas que resolvió el backend. El id de esa fila es el location_id que pide toda llamada de eventos.

Fíjate en lo que esta API no tiene: ni pestaña de Imports, ni import que lanzar. La página del feed de Events solo tiene Locations, Events, Schedules y Requests, y su pestaña Events trae cinco gráficas — por tipo, por tipo de público, evolución, mensual y por asistentes.

Lee el calendario

GET /v2/feed/events/{location_id}, con un rango de fechas opcional y min_impact. Esta es una respuesta real de Barcelona, recortada a lo que importa:

JSON
{
  "name": "Smart City Expo World Congress",
  "acronym": "SCEWC",
  "type": "fair_convention",
  "subtype": "congress_technology",
  "status": "verified",
  "dates": { "start": "2026-11-03", "end": "2026-11-05", "duration_days": 3 },
  "location": {
    "venue": "Fira Barcelona - Recinte de Gran Via",
    "address": "Av. Joan Carles I, 64, 08908 Barcelona, Spain"
  },
  "attendance": { "unique_visitors": 27000, "magnitude": "medium" }
}

Hasta ahí podrías llegar con una web de agenda. El resto es para lo que existe de verdad el dataset.

La parte que pone precio a las habitaciones

JSON
"hotel_impact": {
  "level": "high",
  "score": 0.559,
  "total_roomnights": 63061,
  "booking_window": { "start": "2026-11-02", "end": "2026-11-06" },
  "city_pressure": {
    "city_inventory_rooms": 40000,
    "peak_pressure_pct": 0.5592,
    "avg_pressure_pct": 0.3153,
    "peak_day": "2026-11-03",
    "days_at_or_above_80pct": 0
  }
}

63.061 roomnights sobre una ciudad de 40.000 habitaciones, con un pico del 55,9 % de todo el inventario el 3 de noviembre. Los porcentajes de presión son fracciones de 0 a 1, y pueden pasar de 1 — eso significa que el evento pide más habitaciones de las que tiene la ciudad.

Fíjate en que la ventana de reserva abre el 2 de noviembre, el día anterior al arranque del congreso. Los delegados llegan la noche antes. Si tu calendario de tarifas trata el 2 de noviembre como un lunes cualquiera, ya has dejado dinero encima de la mesa antes de que empiece el evento.

Después desglosa la demanda día a día:

JSON
{
  "date": "2026-11-03",
  "roomnights": 22367,
  "pressure_pct": 0.5592,
  "by_category": { "budget_hotels": 1734, "mid_range_hotels": 12737, "luxury_hotels": 7896 },
  "by_profile": { "international_business": 17290, "national_business": 4592, "international_leisure": 276 }
}

17.290 de esas roomnights son business internacional. Ese es un huésped completamente distinto —y un techo de precio completamente distinto— que un pico de ocio del mismo tamaño.

Dónde en la ciudad, no solo cuántas

JSON
"geographic_distribution": {
  "weighted_radius_km": 4.9,
  "concentration": "near_venue",
  "shares": { "at_venue": 0.092, "near_venue": 0.656, "regional": 0.025 },
  "rings": {
    "2000-5000": {
      "mid_range_hotels": { "roomnights": 20073, "impact": "high" },
      "luxury_hotels":    { "roomnights": 12909, "impact": "high" }
    }
  }
}

El 65,6 % de la demanda cae cerca del recinto, con un radio ponderado de 4,9 km, concentrada en hoteles de gama media y alta del anillo de 2 a 5 km. Si eres un hotel de gama media a dos kilómetros de Fira Gran Via, este evento es tuyo. Si eres un económico al otro lado de la ciudad, el mismo evento apenas te mueve — y el dataset te lo dice en vez de dejarte adivinar.

Asistencia no es demanda

Compara dos eventos de Barcelona del mismo feed:

Smart City ExpoManga Barcelona
Visitantes27.000167.000
Roomnights63.06174.226
Presión pico55,9 %48,3 %
Concentraciónnear_venue (4,9 km)mixed_city (7,2 km)

Manga Barcelona atrae seis veces más gente y genera solo un poco más de roomnights, con menos presión y repartidas más por la ciudad. La razón está en el audience mix: 26.936 de sus asistentes son local_no_stay — se van a dormir a casa. Un congreso de 27.000 delegados internacionales llena más habitaciones que una feria de 167.000 locales, y ese es justo el error en el que te mete leer una lista de "los eventos más grandes".

Los tipos que se comportan distinto

  • type: "cruise" añade un bloque cruise con la lista de escalas barco a barco: del 16 al 20 de octubre, 24 barcos, 81.232 pasajeros embarcando, 51.988 roomnights, cada escala con su fecha, su barco y sus pax. Son noches de pre y post crucero, estimadas desde el calendario del puerto.
  • type: "holiday" es informativo y no lleva impacto hotelero. Hay además una ruta propia, GET /v2/feed/events/{location_id}/holidays, para festivos oficiales y vacaciones escolares de los mercados emisores.
  • Los eventos recurrentes traen un array editions con los años anteriores, para que compares esta edición con las dos últimas antes de fiarte de la previsión.

Qué pasa después

Filtra con min_impact (de high para arriba suele ser el conjunto accionable) y event_type, y recorre el año con from_date/to_date. El maridaje natural es con el feed de mercado del destino: los eventos te dicen cuándo llega la demanda y de qué tipo, y el feed de búsqueda de destino te dice a cuánto la está cobrando tu competencia.

Preguntas

¿Tengo que lanzar un import para tener eventos?

No, y no hay ninguno que lanzar. Events es la única API Feed sin import y sin pestaña de imports: el dataset lo construye el propio pipeline de Veetal, ciudad a ciudad. Tú das de alta la location y lees.

El endpoint me devuelve un array vacío. ¿Qué pasa?

O la location no es de las que Veetal cubre todavía, o tu rango de fechas cae fuera de lo construido. Comprueba que la location es la correcta —Barcelona existe en cuatro países— y amplía from_date/to_date antes de concluir que no hay nada.

¿Qué significa una presión por encima de 1?

Que el evento necesita más habitaciones de las que tiene la ciudad. La presión se expresa como fracción de city_inventory_rooms de 0 a 1, y se le permite pasarse: es una estimación de demanda, no una lectura de ocupación. Todo lo que se acerque a 1 es una noche para tarificar con agresividad.

¿Por qué un evento con más visitantes genera menos roomnights?

Porque la asistencia cuenta personas y las roomnights cuentan camas. Mira el audience_mix: los asistentes clasificados como local_no_stay duermen en su casa. Manga Barcelona trae 167.000 visitantes pero 26.936 son locales, así que produce apenas más roomnights que un congreso internacional de 27.000 delegados.

¿Para qué sirve la ventana de reserva?

Es el rango de noches que el evento genera de verdad, y suele empezar antes que el propio evento — los delegados llegan la noche anterior. Esa primera noche es la que se le escapa a casi todos los calendarios de tarifas.

¿Cómo sé si un evento afecta a mi hotel en concreto?

Usa geographic_distribution. concentration y weighted_radius_km te dicen cómo de apretada está la demanda alrededor del recinto, y rings desglosa las roomnights por franja de distancia cruzada con categoría de hotel. Un evento near_venue a 4,9 km con impacto alto en gama media del anillo de 2 a 5 km es una propuesta muy distinta según dónde estés.

Construye el tuyo

Empieza gratis con 100 créditos de API. Sin tarjeta ni llamada comercial.

Whatsapp