En esta página, se proporciona una referencia para agregar lenguaje de marcado de datos estructurados a los datos de precios de tus hoteles.
Descripción general
Los datos estructurados de precios de hoteles se usan para explicar, validar y mostrar en detalle los precios que aparecen en tu sitio web, sin importar la interfaz de usuario. También incluye el precio base, las tarifas, las habitaciones, los impuestos y las tarifas, y los campos relacionados con los precios.
Google recomienda a los socios que anoten sus páginas web con datos estructurados estandarizados que los rastreadores puedan leer; proporcionados por schema.org, para obtener con precisión los precios de las páginas web.
Esto permite escalar las validaciones de precisión del precio mediante la mejora de la confiabilidad de los rastreadores. El beneficio para ti es un aumento en la cantidad de validaciones de precisión del precio y la capacidad de depurar directamente los problemas de precisión del precio, además de tener una puntuación de precisión del precio coherente.
Si aún no estás familiarizado con los datos estructurados, obtén más información sobre el formato y el vocabulario de datos estructurados.
Hoteles de Google recomienda el formato JSON-LD
para realizar anotaciones en tus páginas web. Consulta Formatos admitidos para obtener más información sobre otros formatos aceptables. En esta documentación, se proporciona
contenido de referencia detallado específico para la implementación de datos estructurados en hoteles.
Los datos estructurados de Hotel
se usan para anotar campos específicos del hotel en tu página web. Los datos estructurados de Hotel
tienen las siguientes propiedades:
Propiedades
name
yaddress
Propiedad
makesOffer
Propiedad
Hotel priceSpecification
Propiedad
hasMerchantReturnPolicy
Propiedad
eligibleCustomerType
Los datos estructurados de HotelRoom
se usan para anotar campos específicos de la sala en tu página web.
Los datos estructurados de HotelRoom
tienen las siguientes propiedades:
Propiedad
offers
Propiedades
bed
yoccupancy
Propiedad
HotelRoom priceSpecification
Propiedad
includesObject
Propiedad
availability
Propiedad
amenityFeature
Datos estructurados de hoteles
Propiedades name
y address
Las propiedades name
y address
se usan para anotar el nombre y la ubicación del hotel. Las siguientes son las propiedades name
y address
:
"@type": "Hotel",
"name": "hotel-name",
"identifier": "hotel-id-1234",
"address": {
"@type": "PostalAddress",
"addressCountry": "XX",
"addressLocality": "City Name",
"addressRegion": "State Name",
"postalCode": "01234",
"streetAddress": "1234 Main St."
},
Sintaxis
Las propiedades name
y address
usan la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "hotel-name",
"identifier": "hotel-id-1234",
"address": {
"@type": "PostalAddress",
"addressCountry": "XX",
"addressLocality": "City Name",
"addressRegion": "State Name",
"postalCode": "01234",
"streetAddress": "1234 Main St."
},
"makesOffer": {
"@type": ["Offer", "LodgingReservation"]
...
}
}
Propiedades
Las siguientes son las propiedades name
y address
:
Propiedad | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
Hotel.name | Required | string | El nombre del hotel |
Hotel.identifier | Required | string | El ID del hotel del socio. El identificador debe ser una cadena única por hotel y debe coincidir exactamente con la cadena que se usa en el feed de precios. |
Hotel.address | Optional | PostalAddress | Es la dirección o ubicación del hotel. |
Ejemplos
Nombre y dirección
A continuación, se muestra un ejemplo básico para agregar anotaciones name
y address
:
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "Mountain Hotel",
"identifier": "hotel-id-1234",
"address": {
"@type": "PostalAddress",
"addressCountry": "AT",
"addressLocality": "Innsbruck",
"addressRegion": "Tyrol",
"postalCode": "6020",
"streetAddress": "Technikerstrasse 21"
},
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
}
}
}
makesOffer
propiedad
Las anotaciones makesOffer
se usan para marcar los itinerarios de tu hotel.
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"availability": "https://schema.org/InStock",
...
}
Sintaxis
La propiedad makesOffer
usa la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "hotel-name",
"identifier": "hotel-id-1234",
"address": { ... },
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"availability": "https://schema.org/InStock",
"priceSpecification": { ... }
}
}
Propiedades
Las siguientes son las propiedades de makesOffer
:
Propiedad | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
makesOffer | Required | Offer and LodgingReservation | Las ofertas de hoteles para el itinerario especificado.
La propiedad |
LodgingReservation.checkinTime | Required | DateTime | Es la hora de entrada en la zona horaria del usuario. Si no se menciona tu zona horaria, se considerará la del hotel. |
LodgingReservation.checkoutTime | Required | DateTime | Es la hora de salida en la zona horaria del usuario. Si no se menciona tu zona horaria, se considerará la del hotel. |
Ejemplo
makesOffer
El siguiente es un ejemplo básico para anotar tus ofertas de hoteles. Puedes especificar varias ofertas para un itinerario, pero primero debes especificar la tarifa que muestra Google, seguida de otras. El importe del precio especificado incluye todos los impuestos aplicables.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "Mountain Hotel",
"identifier": "hotel-id-1234",
"address": { ... },
"makesOffer": [
{
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
}
},
{
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1200.74,
"priceCurrency": "USD"
}
}
]
}
Hotel priceSpecification
propiedad
Esta propiedad se usa para anotar la información de precios de tu hotel o habitación de hotel. Hay dos propiedades adicionales que se requieren para anotar los precios y los impuestos. Debes usar CompoundPriceSpecification para especificar la información de precios totales, como la tarifa base, los impuestos y los descuentos.
Usa UnitPriceSpecification para especificar impuestos adicionales o tipos de cargos especiales, como ResortFee
, GenericTax
y ServiceFee
. La propiedad priceSpecification
se agrupa con la propiedad Offer
.
{
...
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": "float",
"priceCurrency": "currency"
},
...
]
}
}
Sintaxis
La propiedad Hotel priceSpecification
usa la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "Hotel",
...
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
...
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "",
"price": "float",
"priceCurrency": "currency"
},
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": "float",
"priceCurrency": "currency",
"priceComponentType": "GenericTax",
"potentialAction": {
"@type": "https://schema.org/PayAction",
"recipient": {
"@type": "OnlineBusiness",
"name": "name-of-the-business"
}
}
},
{
"@type": "UnitPriceSpecification",
"name": "Discount",
"price": "float",
"priceCurrency": "currency",
"priceComponentType": "Discount"
}
]
}
}
}
Microdatos
<div itemscope itemtype="https://schema.org/Hotel">
<meta itemprop="name" content="hotel-name"/>
...
<div itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation" itemprop="makesOffer">
...
<div itemscope itemtype="https://schema.org/CompoundPriceSpecification" itemprop="priceSpecification">
<meta itemprop="price" content="float"/>
<meta itemprop="priceCurrency" content="currency"/>
<div itemscope itemtype="https://schema.org/UnitPriceSpecification" itemprop="priceComponent">
<meta itemprop="name" content=""/>
<meta itemprop="price" content="float"/>
<meta itemprop="priceCurrency" content="currency"/>
</div>
<div itemscope itemtype="https://schema.org/UnitPriceSpecification" itemprop="priceComponent">
<meta itemprop="name" content="GenericTax" />
<meta itemprop="price" content="float"/>
<meta itemprop="priceCurrency" content="currency"/>
<meta itemprop="priceComponentType" content="GenericTax"/>
</div>
<div itemscope itemtype="https://schema.org/UnitPriceSpecification" itemprop="priceComponent">
<meta itemprop="name" content="Discount"/>
<meta itemprop="price" content="float"/>
<meta itemprop="priceCurrency" content="currency"/>
<meta itemprop="priceComponentType" content="Discount"/>
</div>
</div>
</div>
</div>
Propiedades
Las siguientes son las propiedades de hotel priceSpecification
:
Propiedad | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
Hotel.Offer.priceSpecification.price | Required | float | Precio total del hotel con impuestos y tarifas incluidos. Siempre debes anotar la tarifa de Google en tu página de destino junto con los detalles completos de la tarifa. La anotación de detalles de las tarifas te permite completar las verificaciones de precisión del precio. Google acepta precios a nivel de hotel y de habitación. |
Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Un código de moneda de tres letras para el precio especificado. P. ej.: "USD"
. |
Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | Desglose del precio total del hotel, con impuestos y tarifas incluidos. Existen dos tipos de datos estructurados de precios:
Debes establecer los valores en la propiedad |
Hotel.Offer.priceSpecification.priceComponent. potentialAction | Optional | PayAction | Es el punto de pago del hotel.Los flujos de pago del hotel incluyen los precios que se cobran al momento de la salida en el sitio de reservas y en el hotel al momento del registro de entrada. Debes usar la propiedad Google admite las dos configuraciones siguientes para el destinatario de
|
Ejemplos
Ejemplos de JSON-LD
Precio
El siguiente es un ejemplo básico para agregar datos estructurados de precios a tu página web. Se pueden incluir varias ofertas a nivel de hotel en la propiedad makesOffer
.
Los tipos de PostalAddress
, como addressCountry
, postalCode
y streetAddress
, entre otros campos, son obligatorios si eliges especificar la propiedad address
. La tarifa mostrada por Google debe aparecer primero en la propiedad makesOffer
. El importe del precio especificado incluye todos los impuestos aplicables.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ACME Hotel",
"identifier": "hotel-id-1234",
"address": {
"@type": "PostalAddress",
"addressCountry": "AT",
"addressLocality": "Innsbruck",
"addressRegion": "Tyrol",
"postalCode": "6020",
"streetAddress": "Technikerstrasse 21"
},
"makesOffer": [
{
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
}
},
{
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1200.74,
"priceCurrency": "USD"
}
},
...
]
}
Desglose de precios
El siguiente es un ejemplo de la propiedad priceSpecification
con el
desglose del precio. La tarifa base y los impuestos como el impuesto genérico y el descuento se definen con el componente UnitPriceSpecification
. Recuerda configurar el campo priceComponentType
con los valores correspondientes al componente UnitPriceSpecification
.
El precio total por la duración de la estadía debe especificarse en la propiedad CompoundPriceSpecification
. El desglose del precio debe especificarse en la propiedad priceComponent
.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ACME Hotel",
"identifier": "hotel-id-1234",
"address": {...},
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "",
"price": 1150,
"priceCurrency": "USD"
},
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": 172.74,
"priceCurrency": "USD",
"priceComponentType": "GenericTax"
},
{
"@type": "UnitPriceSpecification",
"name": "Discount",
"price": -100,
"priceCurrency": "USD",
"priceComponentType": "Discount"
}
]
}
}
}
Punto de pago
El siguiente es un ejemplo de la especificación de potentialAction
en el uso del tipo de destinatario de PayAction
.
El precio total del paquete es de USD 1,170. El sitio web en línea cobra una parte del precio total de USD 1,150 en el momento de la reserva especificada mediante el "@type": "OnlineBusiness"
, y el usuario debe pagar los USD 20 restantes cuando se hace el registro en el hotel, que se especifica mediante @type": "Hotel"
.
Debes especificar el componente potentialAction
para desglosar el pago al momento de la reserva y en el hotel. Si no se especifica,
payAction
interpretará que el pago al momento de la reserva es la forma de pago
predeterminada.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ACME Hotel",
"identifier": "hotel-id-1234",
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00]",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1170,
"priceCurrency": "USD",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"price": 1150,
"priceCurrency": "USD",
"potentialAction": {
"@type": "https://schema.org/PayAction",
"recipient": {
"@type": "OnlineBusiness",
"name": "myonlinebusiness"
}
}
},
{
"@type": "UnitPriceSpecification",
"price": 20,
"priceCurrency": "USD",
"potentialAction": {
"@type": "https://schema.org/PayAction",
"recipient": {
"@type": "Hotel",
"name": "The Langham, Boston",
"address": { ... }
}
}
}
]
}
}
}
Ejemplo de microdatos
Desglose de precios
El siguiente es un ejemplo de la propiedad priceSpecification
con el
desglose del precio. La tarifa base y los impuestos como el impuesto genérico y el descuento se definen con el componente UnitPriceSpecification
. Recuerda establecer la propiedad name
con los valores correspondientes al componente UnitPriceSpecification
.
El precio total por la duración de la estadía debe especificarse en la propiedad CompoundPriceSpecification
. El desglose del precio debe especificarse en la propiedad priceComponent
.
<div itemscope itemtype="https://schema.org/Hotel">
<meta itemprop="name" content="ACME Hotel"/>
<meta itemprop="identifier" content="hotel-id-1234"/>
<div itemscope itemtype="https://schema.org/PostalAddress" itemprop="address">
<meta itemprop="addressCountry" content="US" />
<meta itemprop="addressLocality" content="Mountain View" />
<meta itemprop="addressRegion" content="Santa Clara" />
<meta itemprop="postalCode" content="94040" />
<meta itemprop="streetAddress" content="123 Main street" />
</div>
<div itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation" itemprop="makesOffer">
<meta itemprop="checkinTime" content="2023-03-10 15:00:00" />
<meta itemprop="checkoutTime" content="2023-03-16 10:00:00"/>
<div itemscope itemtype="https://schema.org/CompoundPriceSpecification" itemprop="priceSpecification">
<meta itemprop="price" content="1222.74" />
<meta itemprop="priceCurrency" content="USD" />
<div itemscope itemtype="https://schema.org/UnitPriceSpecification" itemprop="priceComponent">
<meta itemprop="name" content="" />
<meta itemprop="price" content="1150" />
<meta itemprop="priceCurrency" content="USD" />
</div>
<div itemscope itemtype="https://schema.org/UnitPriceSpecification" itemprop="priceComponent">
<meta itemprop="name" content="GenericTax" />
<meta itemprop="price" content="172.74" />
<meta itemprop="priceCurrency" content="USD" />
<meta itemprop="priceComponentType" content="GenericTax" />
</div>
<div itemscope itemtype="https://schema.org/UnitPriceSpecification" itemprop="priceComponent">
<meta itemprop="name" content="Discount" />
<meta itemprop="price" content="-100" />
<meta itemprop="priceCurrency" content="USD" />
<meta itemprop="priceComponentType" content="Discount" />
</div>
</div>
</div>
</div>
hasMerchantReturnPolicy
propiedad
Esta propiedad se usa para anotar la política de reembolso del comercio en los itinerarios.
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"refundType": "https://schema.org/FullRefund",
"merchantReturnDays": "YYYY-MM-DD[THH:mm:ss]",
"restockingFee": 0
}
Sintaxis
hasMerchantReturnPolicy
tiene la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "Hotel",
...
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"priceSpecification": { ... },
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"refundType": "https://schema.org/FullRefund",
"merchantReturnDays": "YYYY-MM-DD[THH:mm:ss]",
"restockingFee": 0
}
}
}
Propiedad
La siguiente es la propiedad hasMerchantReturnPolicy
:
Atributo | ¿Es obligatorio? | Tipo | Descripción |
---|---|---|---|
Offer.hasMerchantReturnPolicy | Optional | MerchantReturnPolicy | La política de reembolso del comercio Los socios deben usar
Si no se especifica |
Ejemplo
Política de devoluciones
El siguiente es un ejemplo básico de datos estructurados de un hotel con detalles de la habitación y el precio total con impuestos y tarifas. Este ejemplo corresponde a una estadía que se puede cancelar sin cargos hasta las 11 p.m. (UTC) del 18 de diciembre de 2023. Los socios deben usar "MerchantReturnPolicy.restockingFee"
para indicar políticas de cancelación que no reembolsan el importe total de la estadía. El valor predeterminado de restockingFee
es $0.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ACME Hotel",
"identifier": "hotel-id-1234",
"description": "Beautiful resort in the outskirts of the city",
"address": {...},
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-12-15 16:00:00",
"checkoutTime": "2023-12-20 11:00:00",
"priceSpecification": {...},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"refundType": "https://schema.org/FullRefund",
"merchantReturnDays": "2023-12-18 23:00:00",
"restockingFee": 0
}
}
}
eligibleCustomerType
propiedad
Esta propiedad se puede usar para anotar los programas de recompensas que se proporcionan para los clientes de membresías de hoteles.
"eligibleCustomerType": "RewardsMember",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency"
}
Sintaxis
La propiedad eligibleCustomerType
tiene la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "Hotel",
...
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"eligibleCustomerType": "RewardsMember",
"priceSpecification": { ... }
}
}
Propiedad
La siguiente es la propiedad eligibleCustomerType
:
Atributo | ¿Es obligatorio? | Tipo | Descripción |
---|---|---|---|
Offer.eligibleCustomerType | Optional | BusinessEntityType | Los programas de lealtad o las recompensas para miembros que se ofrecen a los clientes. Muchas páginas de hoteles muestran tarifas para miembros junto con tarifas públicas, a fin de alentar a los usuarios a registrarse en sus programas de lealtad. Las tarifas restringidas a públicos específicos, como las tarifas para miembros, se pueden especificar mediante la configuración de la propiedadOffer.eligibleCustomerType . |
Ejemplos
Tarifas para miembros
El siguiente es un ejemplo básico de precios para miembros o una especificación de tarifa protegida para los programas de lealtad. El cliente es un "miembro del programa de recompensas" del hotel.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ACME Hotel",
"identifier": "hotel-id-1234",
"address": {...},
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"name": "RewardsMember",
"checkinTime": "2023-12-15 16:00:00",
"checkoutTime": "2023-12-20 11:00:00",
"eligibleCustomerType": "RewardsMember",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1342.74,
"priceCurrency": "USD",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "Base rate",
"price": 1069.98,
"priceCurrency": "USD"
},
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": 172.74,
"priceCurrency": "currency"
},
{
"@type": "UnitPriceSpecification",
"name": "ResortFee",
"price": 100,
"priceCurrency": "USD"
}
]
}
}
}
Tarifas normales y para miembros
Este es un ejemplo de anotaciones de precios normales y de tarifas para miembros. Primero se muestran los precios para miembros, seguidos de las tarifas normales.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ACME Hotel",
"identifier": "hotel-id-1234",
"address": {...},
"makesOffer": [
{
"@type": ["Offer", "LodgingReservation"],
"name": "RewardsMember",
"checkinTime": "2023-12-15 16:00:00",
"checkoutTime": "2023-12-20 11:00:00",
"eligibleCustomerType": "RewardsMember",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1342.74,
"priceCurrency": "USD",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "Base rate",
"price": 1069.98,
"priceCurrency": "USD"
},
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": 172.74,
"priceCurrency": "currency"
},
{
"@type": "UnitPriceSpecification",
"name": "ResortFee",
"price": 100,
"priceCurrency": "USD"
}
]
}
},
{
"@type": ["Offer", "LodgingReservation"],
"name": "regularRate",
"checkinTime": "2023-12-15 16:00:00",
"checkoutTime": "2023-12-20 11:00:00",
"priceSpecification": {
"price": 1572.24,
"priceCurrency": "USD",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "Base rate",
"price": 1369.98,
"priceCurrency": "USD"
},
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": 202.26,
"priceCurrency": "currency"
},
{
"@type": "UnitPriceSpecification",
"name": "ResortFee",
"price": 100,
"priceCurrency": "USD"
}
]
}
}
]
}
Datos estructurados de HotelRoom
offers
propiedad
Las anotaciones offers
se usan para marcar los itinerarios de las salas. Debes usar la propiedad offers
para la especificación de HotelRoom
.
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "hotel-room-id-1234",
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"priceSpecification": {...}
}
Sintaxis
La propiedad offers
tiene la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "HotelRoom",
"identifier": "hotel-room-id-1234",
"offers": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
...
}
}
}
Propiedades
Las siguientes son las propiedades de offers
:
Propiedad | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
offers | Required | Offer and LodgingReservation | La especificación del precio de la habitación para el itinerario determinado. La propiedad |
LodgingReservation.checkinTime | Required | DateTime | Es la hora de entrada en la zona horaria del usuario. Si no se menciona tu zona horaria, se considerará la del hotel. |
LodgingReservation.checkoutTime | Required | DateTime | Es la hora de salida en la zona horaria del usuario. Si no se menciona tu zona horaria, se considerará la del hotel. |
Ejemplo
ofertas
A continuación, se muestra un ejemplo básico para especificar offers
en la propiedad HotelRoom
.
{
"@context": "https://schema.org",
"@type": "HotelRoom",
"identifier": "hotel-room-id-1234",
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "rate-plan-id-of-member-rate",
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
}
}
}
Propiedad bed
y occupancy
La propiedad bed
se usa para anotar el tipo y la cantidad de camas disponibles en la habitación. La propiedad occupancy
se usa para anotar la cantidad de huéspedes en la sala. Las propiedades bed
y occupancy
se pueden especificar con la propiedad HotelRoom
.
"@type": "Hotel",
"identifier": "hotel-id-1234",
"containsPlace": {
"@type": ["HotelRoom", "Product"],
"identifier": "hotel-room-id",
"bed": {
"@type": "BedDetails",
"numberOfBeds": "integer",
"typeOfBed": "KING"
},
"occupancy": {
"@type": "QuantitativeValue",
"value": "integer"
}
}
Sintaxis
Las propiedades bed
y occupancy
tienen la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "hotel-name",
"identifier": "hotel-id-1234",
"containsPlace": {
"@type": ["HotelRoom", "Product"],
"name": "room-name",
"identifier": "hotel-room-id-1234",
"bed": {
"@type": "BedDetails",
"numberOfBeds": "integer",
"typeOfBed": "KING"
},
"occupancy": {
"@type": "QuantitativeValue",
"value": "integer"
},
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "rate-plan-id-of-member-rate",
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
"priceComponent": {
"@type": "UnitPriceSpecification",
"name": "",
"price": "float",
"priceCurrency": "currency"
},
...
}
}
}
}
Las propiedades bed
y occupancy
solo se pueden configurar con la propiedad HotelRoom
. La información específica de la habitación, como las tarifas por habitación, se puede incluir en la propiedad Hotel
a través de la propiedad containsPlace
. Consulta el ejemplo de especificación Hotel
y HotelRoom
.
Propiedades
Las siguientes son las propiedades bed
y occupancy
:
Propiedad | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
HotelRoom.bed | Optional (Recommended) | bed | Indica el tipo de camas incluidas en el alojamiento y la cantidad de ocupantes en la habitación. Los valores admitidos son los siguientes:
|
HotelRoom.occupancy | Optional (Recommended) | QuantitativeValue | Es la cantidad de huéspedes en la habitación del hotel. El tipo de ocupación es La ocupación es una propiedad explícita de |
containsPlace | Optional (Recommended) | LocationFeatureSpecification | Se usa para anotar las tarifas por habitación asociadas con habitaciones específicas. También se puede usar para especificar las comodidades de la habitación. Obtén más información para usar |
Ejemplos
HotelRoom
El siguiente es un ejemplo básico de camas y ocupaciones para una especificación de habitación.
{
"@context": "https://schema.org",
"@type": ["HotelRoom", "Product"],
"name": "Deluxe Room, 1 King Bed",
"identifier": "hotel-room-id-1234",
"bed": [
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "KING"
},
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "SINGLE"
}
],
"occupancy": {
"@type": "QuantitativeValue",
"value": 2
},
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "rate-plan-id-of-member-rate",
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
}
}
}
Hotel y HotelRoom
A continuación, se muestra un ejemplo de la anotación de las propiedades Hotel
y HotelRoom
junto con bed
, occupancy
y priceSpecification
.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "hotel-name",
"identifier": "hotel-id-1234",
"containsPlace": {
"@type": ["HotelRoom", "Product"],
"name": "Deluxe Room, 1 King Bed",
"identifier": "hotel-room-id",
"bed": {
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "KING"
},
"occupancy": {
"@type": "QuantitativeValue",
"value": 2
},
"amenityFeature": {
"@type": "LocationFeatureSpecification",
"name": "Minibar",
"value": true
},
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "rate-plan-id-of-member-rate",
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
}
}
}
}
HotelRoom priceSpecification
propiedad
La especificación de precio de una habitación de hotel es similar a la de un hotel.La diferencia es que los precios de las habitaciones se especifican con la propiedad Product.offers
en lugar de Hotel.makesOffer
.
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
"priceComponent": {
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": "float",
"priceCurrency": "currency"
}
...
}
Sintaxis
La propiedad priceSpecification
para habitaciones de hotel tiene la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": ["HotelRoom", "Product"],
...
"bed": {
"@type": "BedDetails",
"numberOfBeds": "integer",
"typeOfBed": "KING"
},
"occupancy": {
"@type": "QuantitativeValue",
"value": "integer"
},
"offers": {
"@type": ["Offer", "LodgingReservation"],
...
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "",
"price": "float",
"priceCurrency": "currency"
},
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": "float",
"priceCurrency": "currency",
"priceComponentType": "GenericTax"
},
{
"@type": "UnitPriceSpecification",
"name": "Discount",
"price": "float",
"priceCurrency": "currency",
"priceComponentType": "Discount"
}
]
}
}
}
Propiedades
Las siguientes son las propiedades de HotelRoom priceSpecification
:
Propiedad | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
Hotel.Offer.priceSpecification.price | Required | float | Precio por habitación que incluye los impuestos y las tarifas del Siempre debes anotar la tarifa de Google en tu página de destino junto con los detalles completos de la tarifa. La anotación de detalles de las tarifas te permite completar las verificaciones de precisión del precio. Google acepta precios a nivel de hotel y de habitación. |
Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Un código de moneda de tres letras para el precio especificado. P. ej.: "USD"
. |
Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | Desglose del precio total (incluidos los impuestos y las tarifas de la habitación de hotel) y la ocupación con ofertas vinculadas a
|
Ejemplos
Precio total de la habitación
El siguiente es un ejemplo básico para definir el precio total de la duración de la estadía y el precio por ocupación.
{
"@context": "https://schema.org",
"@type": ["HotelRoom", "Product"],
"name": "Deluxe Room King, 1 Single Bed",
"identifier": "hotel-room-id-1234",
"bed": [
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "KING"
},
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "SINGLE"
}
],
"occupancy": {
"@type": "QuantitativeValue",
"value": 2
},
"offers": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1232.74,
"priceCurrency": "USD"
}
},
...
}
Desglose del precio de la habitación
El siguiente es un ejemplo de precio por habitación o plan. El desglose del precio se define por el tipo de habitación, como Deluxe
, y los tipos bed
y occupancy
, como camas KING
y SINGLE
, y una ocupación de 2 huéspedes.
{
"@context": "https://schema.org",
"@type": ["HotelRoom", "Product"],
"name": "Deluxe Room King, 1 Single Bed",
"identifier": "hotel-room-id-1234",
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "rate-plan-id-of-member-rate",
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"bed": [
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "KING"
},
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "SINGLE"
}
],
"occupancy": {
"@type": "QuantitativeValue",
"value": 2
},
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "Base rate",
"price": 1150,
"priceCurrency": "USD"
},
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": 172.74,
"priceCurrency": "USD",
"priceComponentType": "GenericTax"
},
{
"@type": "UnitPriceSpecification",
"name": "Discount",
"price": -100,
"priceCurrency": "USD",
"priceComponentType": "Discount"
}
]
}
}
}
includesObject
propiedad
Esta propiedad se usa para anotar los servicios específicos de tarifas que se proporcionan en el hotel o la habitación, como las opciones de comidas y el servicio de valet. Puedes anotar includesObject
en la propiedad Hotel
o HotelRoom
.
{
"includesObject": [
{
"@type": "TypeAndQuantityNode",
"typeOfGood": {
"@type": "Service",
"name": "Valet"
}
},
{
"@type": "TypeAndQuantityNode",
"amountOfThisGood": "float",
"unitText": "currency",
"typeOfGood": {
"@type": "FoodService",
"name": "MealCredit"
}
}
]
}
Sintaxis
includesObject
tiene la siguiente sintaxis para los servicios específicos de tarifas disponibles en la sala:
JSON-LD
{
"@context": "https://schema.org",
...
"@type": ["HotelRoom", "Product"],
...
"offers": {
"@type": ["Offer", "LodgingReservation"],
...
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency"
},
"includesObject": [
{
"@type": "TypeAndQuantityNode",
"typeOfGood": {
"@type": "Service",
"name": "Valet"
}
},
{
"@type": "TypeAndQuantityNode",
"amountOfThisGood": "float",
"unitText": "currency",
"typeOfGood": {
"@type": "FoodService",
"name": "MealCredit"
}
}
]
}
}
Propiedad
includesObject
tiene la siguiente propiedad:
Atributo | ¿Es obligatorio? | Tipo | Descripción |
---|---|---|---|
Offer.includesObject | Optional | TypeAndQuantityNode | Los servicios que se proporcionan en el hotel o la habitación Las funciones específicas de tarifas se incluyen con la propiedad Las funciones específicas de tarifas también pueden incluirse en las ofertas del nivel básico o se pueden especificar como complementos por un precio adicional.
|
Ejemplo
Servicios
El siguiente es un ejemplo básico de funciones específicas de tarifas para el servicio de estacionamiento y los servicios de comida. Las funciones específicas para tarifas se deben especificar con la propiedad "Offer.includesObject"
. El campo de nombre de "TypeAndQuantityNode.typeOfGood"
debe usarse para indicar el tipo de servicio.
{
"@context": "https://schema.org",
"@type": ["HotelRoom", "Product"],
"name": "Deluxe Room, 1 King Bed",
"identifier": "hotel-room-id-1234",
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "rate-plan-id-of-member-rate",
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
},
"includesObject": [
{
"@type": "TypeAndQuantityNode",
"typeOfGood": {
"@type": "Service",
"name": "Valet"
}
},
{
"@type": "TypeAndQuantityNode",
"amountOfThisGood": 50,
"unitText": "USD",
"typeOfGood": {
"@type": "FoodService",
"name": "MealCredit"
}
}
]
}
}
availability
propiedad
La propiedad offer.availability
se usa para anotar los itinerarios que se agotaron para las habitaciones de hotel.
"offers": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"availability": "https://schema.org/SoldOut"
}
Sintaxis
La propiedad availability
tiene la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
...
"@type": ["HotelRoom", "Product"],
"name": "room-type",
"identifier": "hotel-room-id-1234",
"bed": {
"@type": "BedDetails",
"numberOfBeds": "integer",
"typeOfBed": "KING"
},
"occupancy": {
"@type": "QuantitativeValue",
"value": "integer"
},
"offers": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"availability": "https://schema.org/SoldOut"
}
}
Propiedad
La siguiente es la propiedad availability
:
Atributo | ¿Es obligatorio? | Tipo | Descripción |
---|---|---|---|
Offer.availability | Optional | ItemAvailability | La disponibilidad del hotel o la habitación Las tarifas se extraen de
Una oferta sin un No es necesario especificar |
Ejemplo
Disponibilidad
El siguiente es un ejemplo básico para mostrar la falta de disponibilidad de una habitación de hotel. Debes incluir el tipo de cama, la cantidad de camas y los detalles de ocupación de la habitación especificada.
{
"@context": "https://schema.org",
"@type": ["HotelRoom", "Product"],
"name": "Deluxe Room, 1 King Bed",
"identifier": "hotel-room-id-1234",
"bed": [
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "KING"
},
{
"@type": "BedDetails",
"numberOfBeds": 1,
"typeOfBed": "SINGLE"
}
],
"occupancy": {
"@type": "QuantitativeValue",
"value": 2
},
"offers": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"availability": "https://schema.org/SoldOut",
"priceSpecification": {...}
}
}
amenityFeature
propiedad
Las comodidades se pueden especificar en el tipo Hotel
o HotelRoom
con la propiedad amenityFeature
. Debes usar la propiedad containsPlace
para especificar las comodidades que se ofrecen en la habitación.
{
"@type": "Hotel",
"amenityFeature": [
{
"@type": "LocationFeatureSpecification",
"name": "HotTub",
"hoursAvailable": {
"@type": "OpeningHoursSpecification",
"opens": "HH:mm:ss",
"closes": "HH:mm:ss"
}
},
{
"@type": "LocationFeatureSpecification",
"name": "GymFitnessEquipment",
"value": "boolean"
}
],
"containsPlace": {
"@type": "HotelRoom",
"amenityFeature": [
{
"@type": "LocationFeatureSpecification",
"name": "Minibar",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Smoking",
"value": false
}
]
}
}
Sintaxis
Las propiedades amenityFeature
y containsPlace
tienen la siguiente sintaxis:
JSON-LD
{
"@context": "https://schema.org",
"@type": "Hotel",
...
"amenityFeature": {
"@type": "LocationFeatureSpecification",
"name": "HotTub",
"hoursAvailable": {
"@type": "OpeningHoursSpecification",
"opens": "HH:mm:ss",
"closes": "HH:mm:ss"
}
},
"containsPlace": {
"@type": "HotelRoom",
"amenityFeature": {
"@type": "LocationFeatureSpecification",
"name": "Minibar",
"value": "boolean"
}
}
}
Comodidades
Las siguientes comodidades se permiten y se definen en la propiedad name
.
Atributo | ¿Es obligatorio? | Tipo | Descripción |
---|---|---|---|
amenityFeature.AC | Optional | boolean | Si la propiedad tiene aire acondicionado. |
amenityFeature.AirportShuttle | Optional | boolean | Si el host proporciona transporte desde y hacia el aeropuerto o hacia otras terminales. |
amenityFeature.Balcony | Optional | boolean | Si el alojamiento tiene balcón. |
amenityFeature.BeachAccess | Optional | boolean | Si la propiedad tiene acceso a una playa pública cercana. |
amenityFeature.ChildFriendly | Optional | boolean | Si la propiedad es apta para niños. |
amenityFeature.Crib | Optional | boolean | Si la propiedad proporciona una cuna. |
amenityFeature.Elevator | Optional | boolean | Si la propiedad tiene ascensor. |
amenityFeature.FirePlace | Optional | boolean | Si el alojamiento tiene chimenea |
amenityFeature.FreeBreakfast | Optional | boolean | Si la propiedad tiene desayuno incluido para todos los huéspedes Usa las funciones de tarifas para indicar si el desayuno se incluye solo en planes de tarifas específicos. |
amenityFeature.GymFitnessEquipment | Optional | boolean | Si la propiedad tiene un gimnasio o cualquier equipo de entrenamiento. |
amenityFeature.Heating | Optional | boolean | Si el alojamiento tiene calefacción. |
amenityFeature.HotTub | Optional | boolean | Si la propiedad tiene jacuzzi. |
amenityFeature.InstantBookable | Optional | boolean | Si la propiedad se puede reservar de inmediato a través del proceso de confirmación de la compra La alternativa es esperar la aprobación. |
amenityFeature.IroningBoard | Optional | boolean | Si la propiedad dispone de tabla de planchar. |
amenityFeature.Kitchen | Optional | boolean | Si el alojamiento tiene cocina. |
amenityFeature.Microwave | Optional | boolean | Indica si el alojamiento tiene microondas disponible. |
amenityFeature.OpenAirBath(Hotels only) | Optional | boolean | Si el alojamiento tiene un baño al aire libre adjunto. Si se especifica a nivel de la habitación, el baño debe ser privado solo para los ocupantes. |
amenityFeature.OutdoorGrill | Optional | boolean | Si la propiedad tiene parrilla. |
amenityFeature.OvenStove | Optional | boolean | Si la propiedad tiene estufa. |
amenityFeature.Patio | Optional | boolean | Si la propiedad tiene patio. |
amenityFeature.Pool | Optional | boolean | Si el alojamiento tiene piscina. |
amenityFeature.PrivateBeachAccess | Optional | boolean | Si la propiedad tiene acceso exclusivo a una playa privada. |
amenityFeature.SelfCheckinCheckout | Optional | boolean | Si la propiedad admite el registro de entrada y salida automáticos |
amenityFeature.WasherDryer | Optional | boolean | Si el alojamiento tiene electrodomésticos de lavandería. |
amenityFeature.Wifi | Optional | boolean | Indica si la propiedad tiene Wi-Fi. |
amenityFeature.Smoking | Optional | boolean | Si el alojamiento permite fumar |
amenityFeature.InternetType | Optional | Enum | El tipo de Internet disponible en la propiedad. Los valores admitidos son los que se detallan a continuación:
|
amenityFeature.ParkingType | Optional | Enum | El tipo de estacionamiento disponible en la propiedad. Los valores admitidos son los que se detallan a continuación:
|
amenityFeature.PoolType | Optional | Enum | El tipo de piscina disponible en la propiedad. Los valores admitidos son los que se detallan a continuación:
|
amenityFeature.RoomStyle | Optional | Enum | Indica si la habitación tiene un diseño de estilo japonés. Los valores admitidos son los que se detallan a continuación:
|
amenityFeature.LicenseNum | Required | string | Es el número de licencia del negocio que se mostrará en la propiedad en determinadas regiones del mundo. Se puede repetir y, si existen varias
licencias, se recomienda agregar el propietario o la autoridad de
la licencia. Por ejemplo, |
Propiedades
Las siguientes son las propiedades de amenityFeature
:
Propiedad | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
amenityFeature | Optional | LocationFeatureSpecification | Las comodidades que se proporcionan en el hotel o la habitación Se puede especificar
con la propiedad Las comodidades se pueden especificar en los niveles |
containsPlace | Optional | LocationFeatureSpecification | Las comodidades que se proporcionan en el hotel o la habitación a todos los huéspedes. Se puede especificar con
|
Ejemplo
Comodidades del hotel y la habitación
El siguiente es un ejemplo de un hotel con piscina abierta de 10 a.m. a 10 p.m. y sin gimnasio disponible en la propiedad. La habitación del hotel no es para fumadores y tiene un minibar.
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ACME Hotel",
"address": { ... },
"amenityFeature": [
{
"@type": "LocationFeatureSpecification",
"name": "HotTub",
"hoursAvailable": {
"@type": "OpeningHoursSpecification",
"opens": "10:00:00",
"closes": "22:00:00"
}
},
{
"@type": "LocationFeatureSpecification",
"name": "GymFitnessEquipment",
"value": false
}
],
"containsPlace": {
"@type": "HotelRoom",
"amenityFeature": [
{
"@type": "LocationFeatureSpecification",
"name": "Minibar",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Smoking",
"value": false
}
],
"offers": {
"@type": ["Offer", "LodgingReservation"],
"identifier": "rate-plan-id-of-member-rate",
"checkinTime": "2023-03-10 15:00:00",
"checkoutTime": "2023-03-16 10:00:00",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": 1222.74,
"priceCurrency": "USD"
}
}
}
}