En esta página, se proporciona una referencia para agregar lenguaje de marcado de datos estructurados a las propiedades datos de precios.
Descripción general
Los datos estructurados de precios de hoteles se usan para explicar, validar y mostrar en detalle los precios de hoteles que aparecen en tu sitio web, independientemente de la interfaz de usuario. Esta también incluye el precio base, las tarifas, las habitaciones, las tarifas y campos relacionados con impuestos y precios.
Google recomienda que los socios anoten sus páginas web con Datos estructurados que los rastreadores pueden leer automáticamente proporcionado por schema.org, para recopilar precios con precisión de tus páginas web.
Esto permite escalar las validaciones de precisión del precio mejorando la la confiabilidad de los rastreadores. El beneficio es un aumento en la cantidad de Validaciones de precisión del precio y capacidad de depurar problemas de precisión del precio de forma directa y 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 vocabulario de datos estructurados y formato.
Hoteles de Google recomienda el formato JSON-LD
para anotar 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 los campos específicos del hotel en tu
página web. Los datos estructurados de Hotel
tienen las siguientes propiedades:
name
yaddress
propiedadesmakesOffer
propiedadHotel priceSpecification
propiedadhasMerchantReturnPolicy
propiedadeligibleCustomerType
propiedad
Los datos estructurados de HotelRoom
se usan para anotar campos específicos de salas en
tu página web.
Los datos estructurados de HotelRoom
tienen las siguientes propiedades:
offers
propiedadPropiedades
bed
yoccupancy
Propiedad
HotelRoom priceSpecification
includesObject
propiedadavailability
propiedadamenityFeature
propiedad
Datos estructurados del hotel
Propiedades name
y address
Las propiedades name
y address
se usan para anotar el nombre del hotel y
ubicación. 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 | Los socios ID de hotel. 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 | Indica la dirección o ubicación del hotel. |
Ejemplos
Nombre y dirección
El siguiente es un ejemplo básico de cómo agregar las 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 el lenguaje de marcado
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 | Son las ofertas de hoteles para el itinerario determinado.
La propiedad |
LodgingReservation.checkinTime | Required | DateTime | Indica la hora de entrada en la zona horaria del usuario. Si tu zona horaria no es se menciona, entonces, se considera la zona horaria del hotel. |
LodgingReservation.checkoutTime | Required | DateTime | Indica la hora de salida en la zona horaria del usuario. Si tu zona horaria no es se menciona, entonces, se considera la zona horaria 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 debes especificar la Es la tasa que muestra Google primero seguida de otras tarifas. 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 hotel
salas de reuniones. Hay dos propiedades adicionales que se requieren para anotar tus
impuestos y precios. Debes usar CompoundPriceSpecification
para especificar la información de los precios totales, como la tarifa base, los impuestos y los descuentos.
Cómo usar UnitPriceSpecification
para especificar impuestos adicionales o tipos de cargos especiales
como ResortFee
, GenericTax
y ServiceFee
. priceSpecification
se incluye 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 | Es el precio total del hotel con impuestos y tarifas incluidos. La tarifa de Google siempre debe anotarse en la página de destino, junto con los detalles completos de tu tarifa. Los detalles de tasa de anotación te permiten completar Verificaciones de precisión del precio. Google acepta el nivel de hotel y de habitación precios. |
Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Es un código de moneda de tres letras para el precio especificado. P. ej., "USD"
. |
Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | El 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 | El punto de pago del hotel (los flujos de pago del hotel incluyen precios) que se cobran a la hora de salida en el sitio de reservas y en el hotel durante el registro de entrada. Debes usar la propiedad Google admite los siguientes dos parámetros de configuración para
|
Ejemplos
Ejemplos de JSON-LD
Precio
El siguiente es un ejemplo básico de cómo agregar datos estructurados de precios a tu
página web. Puedes incluir múltiples ofertas a nivel del hotel en el
makesOffer
.
Los tipos PostalAddress
, como addressCountry
, postalCode
,
streetAddress
y otros campos son obligatorios si eliges especificar la
propiedad address
. La tarifa que se muestra en Google debe aparecer primero en la
makesOffer
. El importe del precio especificado incluye todos los valores
impuestos.
{
"@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 la
el desglose del precio. La tarifa base, los impuestos (como el impuesto genérico y el descuento) se
se define con el componente UnitPriceSpecification
. Recuerda establecer
priceComponentType
con los valores correspondientes a
El componente UnitPriceSpecification
.
El precio total por la duración de la estadía debe especificarse en el
CompoundPriceSpecification
. El desglose del precio debe ser
especificadas 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 especificación de potentialAction
para usar
Tipo de destinatario de PayAction
.
El precio total del paquete es de USD 1,170 y el sitio web en línea cobra una parte
del precio total, que es de $1150 en el momento de la reserva especificado usando el valor
"@type": "OnlineBusiness"
y el usuario debe pagar los USD 20 restantes a
la hora de entrada en el hotel que se especifica usando el
@type": "Hotel"
Debes especificar el componente potentialAction
para realizar el desglose.
el pago en el momento de la reserva y en el hotel. Si no se especifica,
payAction
interpreta que el pago en el momento de la reserva es el predeterminado.
forma de pago.
{
"@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 la
el desglose del precio. La tarifa base, los impuestos (como el impuesto genérico y el descuento) se
se define con el componente UnitPriceSpecification
. Recuerda establecer
name
por los valores correspondientes a
El componente UnitPriceSpecification
.
El precio total por la duración de la estadía debe especificarse en el
CompoundPriceSpecification
. El desglose del precio debe ser
especificadas 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 de comercios 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 de los comercios Los socios deben usar
Si no se especifica |
Ejemplo
Política de devoluciones
El siguiente es un ejemplo básico de datos estructurados para un hotel con habitación
detalles y el precio total con impuestos y tarifas. Este ejemplo denota una estadía
que se puede cancelar sin cargo hasta las 11 p.m. (UTC) del
18 de diciembre de 2023. Los socios deben usar
"MerchantReturnPolicy.restockingFee"
para indicar las políticas de cancelación
que no reembolsen el importe total de la estadía. Los valores predeterminados de restockingFee
a $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 el hotel para los clientes con membresías.
"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 clientes. Muchas páginas de hoteles muestran las tarifas para miembros junto con las tarifas públicas, para alentar a los usuarios a registrarse en sus programas de lealtad. Tarifas restringidas para públicos particulares, como tarifas para miembros, se pueden especificar la propiedadOffer.eligibleCustomerType |
Ejemplos
Tarifas para miembros
El siguiente es un ejemplo básico de precios para miembros o tarifas protegidas especificación para los programas de lealtad. El cliente es un "miembro de las recompensas". de el 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"
}
]
}
}
}
Miembro y tarifas habituales
Este es un ejemplo de las anotaciones de precios de tarifas regulares y para miembros. El Los precios para miembros aparecen primero, seguidos de las tarifas regulares.
{
"@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 tu sala
itinerarios. 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 | Es la especificación de precio de la habitación para el itinerario determinado. La propiedad |
LodgingReservation.checkinTime | Required | DateTime | Indica la hora de entrada en la zona horaria del usuario. Si tu zona horaria no es se menciona, entonces, se considera la zona horaria del hotel. |
LodgingReservation.checkoutTime | Required | DateTime | Indica la hora de salida en la zona horaria del usuario. Si tu zona horaria no es se menciona, entonces, se considera la zona horaria del hotel. |
Ejemplo
ofertas
El siguiente es un ejemplo básico para especificar offers
en HotelRoom
propiedad.
{
"@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 de cama y la cantidad de camas.
disponibles en la sala. La propiedad occupancy
se usa para anotar el número.
de invitados en la sala. Las propiedades bed
y occupancy
pueden especificarse
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 HotelRoom
propiedad. Se puede incluir información específica de las habitaciones, como tarifas a nivel de habitación.
a la propiedad Hotel
a través de la propiedad containsPlace
. Consulta las
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 | El tipo de cama incluida 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 un
La ocupación es una propiedad explícita de
|
containsPlace | Optional (Recommended) | LocationFeatureSpecification | Se usa para anotar las tarifas a nivel de las habitaciones asociadas con determinados salas de reuniones. También se puede usar para especificar las comodidades de la habitación. Más información para usar |
Ejemplos
HotelRoom
El siguiente es un ejemplo básico de las camas y la ocupación de una habitación especificació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
El siguiente es un ejemplo de anotación de 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
Las especificaciones del precio de la habitación del hotel son similares a las del precio.
La diferencia es que los precios de las habitaciones se especifican con la propiedad Product.offers
.
en lugar de la propiedad 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 | El precio por habitación con impuestos y tarifas incluidos
La tarifa de Google siempre debe anotarse en la página de destino, junto con los detalles completos de tu tarifa. Los detalles de tasa de anotación te permiten completar Verificaciones de precisión del precio. Google acepta el nivel de hotel y de habitación precios. |
Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Es un código de moneda de tres letras para el precio especificado. P. ej., "USD"
. |
Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | El desglose del precio total del hotel con impuestos y tarifas incluidos
la habitación 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 por la longitud 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. Desglose del precio
se define para el tipo de habitación, como Deluxe
, y bed
y occupancy
tipo, como camas KING
y SINGLE
y una capacidad 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 de tarifas específicas que se proporcionan en el hotel
o a la habitación, como opciones de comida y servicio de valet. Puedes agregar anotaciones
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 de tarifas específicas.
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 | Son los servicios que se proporcionan en el hotel o la habitación. Las funciones de tarifas específicas se incluyen
Las funciones específicas de la tarifa también pueden incluirse en las ofertas de nivel básico. o pueden especificarse como complementos por un precio adicional.
|
Ejemplo
Servicios
El siguiente es un ejemplo básico de funciones con tarifas específicas para el servicio de estacionamiento
y servicios de comida. Las funciones específicas para cada velocidad deben especificarse con el
"Offer.includesObject"
. El campo de nombre de
Se debe usar "TypeAndQuantityNode.typeOfGood"
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 agotados.
por las habitaciones del 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 | Indica la disponibilidad del hotel o la habitación. Las tarifas se extraen de
Una oferta sin un No es necesario que |
Ejemplo
Disponibilidad
El siguiente es un ejemplo básico para mostrar la falta de disponibilidad de habitaciones de hotel. Tú debe incluir el tipo de cama, la cantidad de camas y los detalles de ocupación para 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
Los servicios pueden especificarse en el tipo Hotel
o HotelRoom
con el
propiedad amenityFeature
. Debes usar la propiedad containsPlace
para especificar
adicionales 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 lo 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 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 anfitrión ofrece transporte desde y hacia el aeropuerto otras terminales. |
amenityFeature.Balcony | Optional | boolean | Indica si la 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 la alojamiento tiene chimenea. |
amenityFeature.FreeBreakfast | Optional | boolean | Si la propiedad tiene desayuno incluido para todos los huéspedes. Usa funciones de tarifa para indicar si el desayuno está incluido solo para una tarifa específica de los planes de negocios de los socios. |
amenityFeature.GymFitnessEquipment | Optional | boolean | Si la propiedad tiene un gimnasio o cualquier equipo de entrenamiento |
amenityFeature.Heating | Optional | boolean | Indica si la alojamiento tiene calefacción. |
amenityFeature.HotTub | Optional | boolean | Si la propiedad tiene jacuzzi. |
amenityFeature.InstantBookable | Optional | boolean | Si la propiedad se puede reservar al instante a través de la confirmación de la compra el proceso de administración de recursos. La alternativa es esperar la aprobación. |
amenityFeature.IroningBoard | Optional | boolean | Si la propiedad dispone de tabla de planchar. |
amenityFeature.Kitchen | Optional | boolean | Indica si el alojamiento tiene cocina. |
amenityFeature.Microwave | Optional | boolean | Si el alojamiento tiene un microondas disponible |
amenityFeature.OpenAirBath(Hotels only) | Optional | boolean | Indica si el alojamiento tiene un baño al aire libre conectado. 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 una estufa. |
amenityFeature.Patio | Optional | boolean | Si la propiedad tiene patio. |
amenityFeature.Pool | Optional | boolean | Indica 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 registro de entrada y salida de autoservicio. |
amenityFeature.WasherDryer | Optional | boolean | Si la alojamiento tiene electrodomésticos de lavandería |
amenityFeature.Wifi | Optional | boolean | Indica si la propiedad cuenta con Wi-Fi. |
amenityFeature.Smoking | Optional | boolean | Si en el alojamiento se 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 | Número de licencia de la empresa que se mostrará en la propiedad
en ciertas regiones del mundo. Se puede repetir y, si hay varios
existen licencias, se recomienda agregar al propietario o la autoridad del
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 |
containsPlace | Optional | LocationFeatureSpecification | Las comodidades que se proporcionan en el hotel o la habitación a todos los huéspedes del hotel. Integra
se puede especificar con el
|
Ejemplo
Comodidades del hotel y la habitación
El siguiente es un ejemplo de un hotel con una piscina abierta de 10 a.m. a 10 p.m. y no hay un gimnasio disponible en la propiedad. No se permite fumar en la habitación del hotel y tiene 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"
}
}
}
}