Precios de hoteles: habilita la navegación del rastreador y el etiquetado de precios

En esta guía, se describe cómo etiquetar tu sitio web con microdatos y atributos de navegación para que el rastreador de precisión del precio de Google pueda navegar automáticamente por tu embudo de reservas y validar las tarifas de tus habitaciones.

Para obtener la especificación técnica completa de todas las propiedades de datos estructurados disponibles (incluidos los impuestos, las tarifas y los detalles de las habitaciones desglosados), consulta la referencia de datos estructurados de precios de hoteles.


Usa atributos HTML data-nav-* personalizados para anotar elementos interactivos y declarar etapas del embudo para que el rastreador pueda recorrer tu flujo de reservas.

1.1 Declaración de la etapa superior de la página (data-nav-stage)

Cada página de tu embudo de reservas que muestra tarifas debe declarar su etapa, adjunta a la etiqueta <body> o a una etiqueta de contenedor principal (como <div>, <section>, o <main>). Esto le indica al rastreador qué etapa del flujo de reservas está activa y ayuda a solucionar problemas más adelante.

  • data-nav-stage (recomendado): Declara la etapa activa del embudo. Si bien no es estrictamente obligatorio, especificar nombres (por ejemplo, "landing", "room-selection", "checkout", "ready-for-payment") ayuda a identificar la etapa activa durante la validación.

1.2 Indicador de etapa final (data-nav-stage-final)

En la página final que muestra los precios antes de que el usuario ingrese información personal o de pago información, agrega la marca de etapa final a tu contenedor superior de la página junto con una declaración de etapa (por ejemplo, data-nav-stage="ready-for-payment").

  • data-nav-stage-final (Opcional): Se establece en "true" (data-nav-stage-final="true") en la página de precios final antes del pago. Esto le indica al rastreador que esta página es la final y que se puede extraer el precio para la validación. Esta página debe contener la estructura de precios con el etiquetado de microdatos.

1.3 Atributos de interacción de ruta crítica

En las páginas intermedias, etiqueta los elementos interactivos (botones o vínculos) que hacen avanzar al usuario por la ruta crítica de la reserva. Si se requieren varias acciones en la misma página, especifica el orden de ejecución. El rastreador sigue el orden especificado antes de intentar extraer el precio en la página final.

Atributo Valor obligatorio Objetivo
data-nav-criticalpath "true" Marca el botón o vínculo obligatorio en el que el rastreador debe hacer clic para avanzar.
data-nav-interactiontype "CLICK" Declara que se requiere una acción de clic para avanzar en el flujo.
data-nav-interactionorder "1", "2", ... Declara la secuencia de ejecución si se requieren varias acciones en la misma página.

Ejemplo de navegación mínima

<button data-nav-criticalpath="true"
        data-nav-interactiontype="CLICK"
        data-nav-interactionorder="1">
  Continue
</button>

2. Declaración de precios (microdatos)

En la página accesible final de tu embudo de reservas (antes de ingresar información personal o de pago), etiqueta la oferta de precios (una oferta de precios) con etiquetas de microdatos. Solo se debe etiquetar una oferta en la página, lo que indica qué tarifa extrae el rastreador, que corresponde a la tarifa seleccionada en Google antes de que el usuario llegue a tu sitio web. Para obtener detalles sobre la definición de parámetros de la página de destino, consulta variables y condiciones.

Si bien Google admite por completo la jerarquía completa en la referencia de datos estructurados de precios de hoteles (incluidas las tarifas base desglosadas, los impuestos individuales, las tarifas y los detalles de las habitaciones), Google también acepta un árbol de datos estructurados simplificado para que te resulte más fácil etiquetar los precios de los hoteles en tus páginas web.

El precio total de la estadía es obligatorio para las tarifas disponibles. Si un itinerario o una habitación no están disponibles o están agotados, declara https://schema.org/SoldOut en makesOffer sin un priceSpecification:

<div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
  <meta itemprop="availability" content="https://schema.org/SoldOut"/>
  Sold Out
</div>

Para obtener más información, consulta la availability propiedad especificación.

2.1 Árbol de datos estructurados simplificado

Para simplificar el etiquetado en tus páginas de reservas, solo debes declarar el hotel raíz y el contenedor de reservas, las fechas de estadía (YYYY-MM-DD), la ocupación y una sola oferta que contenga el precio total de la estadía:

Hotel / LodgingReservation (Root Container)
├── identifier                   [Meta/Attribute] Hotel ID
├── name                         [Visible text] Hotel Name
├── checkinTime / checkoutTime   [Visible text with YYYY-MM-DD in content="..."] Stay Dates
├── numAdults / numChildren      [Visible text] Occupancy
└── makesOffer (Offer)
    └── priceSpecification (CompoundPriceSpecification)
        ├── priceCurrency        [ISO Code, such as "USD"] Currency
        └── price                [Visible text] Total Stay Price (Taxes & Fees Included)

2.2 Reglas de visibilidad críticas

Para garantizar una extracción de precios confiable, sigue estas reglas de visibilidad cuando etiquetes tu HTML:

  • El precio total de la estadía debe ser visible: Etiqueta el número de precio visible directamente en la página con itemprop="price". No uses metadatos ocultos (<meta>) ni valores de atributos (value="..." o content="...") para el número de precio.
  • Fechas de estadía legibles por máquinas: Etiqueta las fechas de estadía visibles en la página tanto como sea posible. Si es necesario, puedes usar el atributo content="..." en <span> elementos para proporcionar un formato YYYY-MM-DD estándar mientras se muestra la fecha visible (por ejemplo, <span itemprop="checkinTime" content="2026-08-10">August 10, 2026</span>).
  • Campos no visibles: Los campos que no se muestran directamente en la página (como el ID del hotel o el código de moneda) pueden usar <meta> etiquetas o content="..." atributos.

3. Ejemplos

En los siguientes ejemplos de extremo a extremo, se muestra cómo etiquetar los pasos intermedios del embudo y las páginas de finalización de compra finales con atributos de navegación y microdatos.

Ejemplo 1: Página intermedia con botón en el que se puede hacer clic

En el siguiente fragmento, se muestra una página intermedia de selección de habitaciones (room-selection) con un solo botón de acción de ruta crítica etiquetado para avanzar en el flujo:

<body data-nav-stage="room-selection">
  <!-- Main page content -->
  <button class="btn-continue"
          data-nav-criticalpath="true"
          data-nav-interactiontype="CLICK"
          data-nav-interactionorder="1">
    Book This Room
  </button>
</body>

Ejemplo 2: Página de precios final con indicador de etapa y microdatos mínimos

En el siguiente fragmento, se muestra la última página antes del pago (ready-for-payment) en la que se declara data-nav-stage-final="true" en el contenedor y el precio de estadía autorizado se expone de forma visible:

<body data-nav-stage="ready-for-payment" data-nav-stage-final="true">

  <!-- Root Container: Co-Typed Hotel & LodgingReservation -->
  <div itemscope itemtype="https://schema.org/Hotel https://schema.org/LodgingReservation">
    
    <!-- Hotel Identifier (Can be hidden meta tag) -->
    <meta itemprop="identifier" content="grand-view-001" />
    <h1 itemprop="name">Grand View Hotel</h1>
    
    <!-- Visible Stay Dates & Occupancy -->
    <p>
      Check-in: <span itemprop="checkinTime" content="2026-08-10">Aug 10, 2026</span> |
      Check-out: <span itemprop="checkoutTime" content="2026-08-15">Aug 15, 2026</span> |
      Guests: <span itemprop="numAdults">2</span> Adults, <span itemprop="numChildren">1</span> Child
    </p>

    <!-- Single Minimal Rate Offer -->
    <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
      <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
        
        <p class="summary-total">
          Total Stay Price (Taxes & Fees Included):
          
          <!-- 3-letter ISO Currency Code (can use content="" for hiding the 3-letter currency code while displaying a symbol) -->
          <span itemprop="priceCurrency" content="EUR">€</span>
          
          <!-- VISIBLE TOTAL STAY PRICE (Directly wrapped, no hidden attributes) -->
          <span itemprop="price">650.00</span>
        </p>

      </div>
    </div>

  </div>

</body>

4. Verifica tu implementación

Antes de implementar los cambios, prueba el lenguaje de marcado y el etiquetado de navegación para asegurarte de que el rastreador pueda validar correctamente tus datos de precios.

4.1 Verifica la estructura de precios y microdatos

Puedes usar el Validador de Schema.org o la Prueba de resultados enriquecidos de Google para inspeccionar los microdatos extraídos de la URL de tu página o del contenido HTML. Verifica los campos extraídos con la especificación en la referencia de datos estructurados de precios de hoteles, y asegúrate de que tu itemprop="price" elemento sea un elemento visible en la página.

4.2 Verifica la navegación

Para verificar tus etiquetas, abre las Herramientas para desarrolladores del navegador en Google Chrome. Para ello, haz clic con el botón derecho en tu página web y selecciona Inspeccionar (o presiona F12) para examinar el DOM de HTML.

Confirma que tu implementación cumpla con los siguientes requisitos de navegación:

  • Se declara la etapa superior de la página: Cada página del flujo de reservas incluye data-nav-stage="..." en su etiqueta <body> o de contenedor raíz, y la página de precios final incluye data-nav-stage-final="true".
  • La ruta crítica está completa: Las páginas intermedias tienen sus elementos interactivos (botones o vínculos) marcados con data-nav-criticalpath="true", data-nav-interactiontype y data-nav-interactionorder. Si hay varias acciones, asegúrate de que los números de pedido estén configurados correctamente.

4.3 Verifica la visibilidad y la calidad del lenguaje de marcado

Confirma que tus microdatos cumplan con todos los requisitos de estructura y visibilidad (para obtener detalles, consulta el árbol de datos estructurados simplificado y las reglas de visibilidad críticas):

  • Jerarquía estricta: Asegúrate de que tu lenguaje de marcado siga el orden de anidación requerido (ya sea el árbol simplificado o la especificación completa de la referencia de datos estructurados ). El rastreador podría omitir los elementos fuera de orden o anidados de forma incorrecta.
  • Precio visible: itemprop="price" contiene directamente el número de precio visible sin atributos ocultos ni etiquetas <meta>.
  • Fechas de estadía legibles por máquinas: checkinTime y checkoutTime contienen estándar YYYY-MM-DD (opcionalmente, se usan atributos content="...").
  • Etiquetado directo de elementos: Todas las propiedades visibles (nombre del hotel, fechas de estadía, ocupación) contienen texto visible de la página.