Cette page fournit une référence vous permettant d'ajouter des balisages de données structurées aux pages de vos hôtels les données tarifaires.
Présentation
Les données structurées Prix de l'hôtel permettent d'expliquer, de valider et d'afficher des informations détaillées les prix indiqués sur votre site Web, quelle que soit l'interface utilisateur. Ce comprend également le prix de base, les tarifs, les chambres, les frais et liés aux taxes et aux tarifs.
Google recommande aux partenaires d'annoter leurs pages Web avec des Données structurées lisibles par un ordinateur pour les robots d'exploration fourni par schema.org pour récupérer précisément les prix ; de vos pages Web.
Cela permet d'ajuster la validation de la précision des prix en améliorant de la fiabilité des robots d'exploration. L'avantage pour vous est d'augmenter le nombre de les validations de la précision des prix et la capacité à déboguer les problèmes de précision des prix et d'avoir un taux de précision des prix cohérent.
Si vous ne connaissez pas encore les données structurées, consultez vocabulaire des données structurées pour en savoir plus. et le format de texte.
Google Hotels recommande le format JSON-LD
pour annoter vos pages Web. Consultez
Formats compatibles
pour en savoir plus sur les autres formats acceptés. Cette documentation fournit
un contenu de référence détaillé spécifique à l'implémentation des données structurées dans la section "Hôtels".
Les données structurées Hotel
permettent d'annoter les champs spécifiques aux hôtels dans les
d'une page Web. Les données structurées Hotel
ont les propriétés suivantes:
name
etaddress
propriétésmakesOffer
propriétéHotel priceSpecification
propriétéhasMerchantReturnPolicy
propriétéeligibleCustomerType
propriété
Les données structurées HotelRoom
permettent d'annoter les champs spécifiques à la chambre dans
votre page Web.
Les données structurées HotelRoom
ont les propriétés suivantes:
offers
propriétéPropriétés
bed
etoccupancy
Propriété
HotelRoom priceSpecification
includesObject
propriétéavailability
propriétéamenityFeature
propriété
Données structurées d'hôtel
Propriétés name
et address
Les propriétés name
et address
permettent d'annoter le nom de l'hôtel et
l'emplacement. Voici les propriétés name
et 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."
},
Syntaxe
Les propriétés name
et address
utilisent la syntaxe suivante:
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"]
...
}
}
Propriétés
Voici les propriétés name
et address
:
Propriété | Obligatoire ? | Type | Description |
---|---|---|---|
Hotel.name | Required | string | Nom de l'hôtel |
Hotel.identifier | Required | string | Les partenaires ID de l'hôtel. L'identifiant doit être une chaîne unique par hôtel et doit correspondre exactement par la chaîne utilisée dans le flux des prix. |
Hotel.address | Optional | PostalAddress | Adresse ou emplacement de l'hôtel. |
Exemples
Nom et adresse
Voici un exemple de base d'ajout d'annotations name
et 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
établissement
Les annotations makesOffer
permettent de baliser
vos séjours d'hôtels.
"makesOffer": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"availability": "https://schema.org/InStock",
...
}
Syntaxe
La propriété makesOffer
utilise la syntaxe suivante:
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": { ... }
}
}
Propriétés
Voici les propriétés makesOffer
:
Propriété | Obligatoire ? | Type | Description |
---|---|---|---|
makesOffer | Required | Offer and LodgingReservation | Offre(s) d'hôtel pour le séjour donné.
La propriété |
LodgingReservation.checkinTime | Required | DateTime | Heure d'arrivée dans le fuseau horaire de l'utilisateur. Si votre fuseau horaire n'est pas indiqué, le fuseau horaire de l'hôtel est pris en compte. |
LodgingReservation.checkoutTime | Required | DateTime | Heure de départ dans le fuseau horaire de l'utilisateur. Si votre fuseau horaire n'est pas indiqué, le fuseau horaire de l'hôtel est pris en compte. |
Exemple
makesOffer
Voici un exemple de base pour annoter vos offres d'hôtels. Vous pouvez plusieurs offres pour un séjour, mais vous devez spécifier Tarif affiché d'abord par Google, suivi des autres tarifs. Le montant du prix inclut l'ensemble des taxes applicables.
{
"@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
établissement
Cet établissement est utilisé pour annoter les informations tarifaires de votre hôtel ou hôtel.
salles. Deux propriétés supplémentaires sont requises pour annoter vos
les prix et les taxes. Vous devez utiliser CompoundPriceSpecification.
pour spécifier les informations tarifaires totales, telles que le tarif de base, les taxes et les remises.
Utiliser UnitPriceSpecification
spécifier des taxes supplémentaires ou des types spéciaux de frais ;
comme ResortFee
, GenericTax
et ServiceFee
. priceSpecification
est intégrée à la propriété Offer
.
{
...
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
"priceComponent": [
{
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": "float",
"priceCurrency": "currency"
},
...
]
}
}
Syntaxe
La propriété Hotel priceSpecification
utilise la syntaxe suivante:
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"
}
]
}
}
}
Microdonnées
<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>
Propriétés
Voici les propriétés hotel priceSpecification
:
Propriété | Obligatoire ? | Type | Description |
---|---|---|---|
Hotel.Offer.priceSpecification.price | Required | float | Prix total de l'hôtel, taxes et frais compris. Le tarif de Google doit toujours être annoté sur votre page de destination, au même titre que le détail complet de vos tarifs. L'annotation des détails des tarifs vous permet la précision des prix. Google accepte à la fois les niveaux d'hôtel et de chambre de base. |
Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Code de devise à trois lettres correspondant au prix spécifié. Exemple: "USD"
. |
Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | Détail du prix total, taxes et frais compris pour l'hôtel. Il existe deux types de données structurées de prix:
Vous devez définir les valeurs dans la propriété |
Hotel.Offer.priceSpecification.priceComponent. potentialAction | Optional | PayAction | Point de paiement de l'hôtel. Les flux de paiement de l'hôtel incluent les prix. qui sont facturés à l'heure de départ sur le site de réservation et à à l'hôtel lors de l'arrivée. Vous devez utiliser la propriété Google accepte les deux paramètres suivants pour les
|
Exemples
Exemples JSON-LD
Prix
Voici un exemple de base illustrant comment ajouter des données structurées de prix à votre
d'une page Web. Vous pouvez inclure plusieurs offres au niveau d'un hôtel dans le champ
makesOffer
.
Types PostalAddress
tels que addressCountry
, postalCode
,
streetAddress
et d'autres champs sont obligatoires si vous choisissez de spécifier le
address
. Le tarif affiché par Google doit être indiqué en premier dans la
makesOffer
. Le montant du prix indiqué inclut tous les prix
taxes.
{
"@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"
}
},
...
]
}
Détails du prix
Voici un exemple de propriété priceSpecification
avec la propriété
le détail du prix. Le taux de base, les taxes telles que la taxe générique et la remise, sont
défini à l'aide du composant UnitPriceSpecification
. N'oubliez pas de définir
le champ priceComponentType
avec les valeurs correspondant aux
Composant UnitPriceSpecification
.
Le prix total pour la durée du séjour doit être indiqué dans le
CompoundPriceSpecification
. Le détail du prix doit être de
spécifié dans la propriété 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"
}
]
}
}
}
Point de paiement
Voici un exemple de spécification potentialAction
dans l'utilisation
Type de destinataire de PayAction
.
Le prix total du séjour est de 1 170 $et le site Web en ligne facture une partie
du prix total, qui s'élève à 1 150 $au moment de la réservation, spécifié à l'aide de
"@type": "OnlineBusiness"
, et l'utilisateur doit payer les 20 $restants à
l'heure d'arrivée à l'hôtel, spécifiée à l'aide des
@type": "Hotel"
Vous devez spécifier le composant potentialAction
pour effectuer la répartition
au moment de la réservation et à l'hôtel. Si elle n'est pas spécifiée,
payAction
considère le paiement au moment de la réservation comme le paiement par défaut
mode de paiement.
{
"@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": { ... }
}
}
}
]
}
}
}
Exemple de microdonnées
Détails du prix
Voici un exemple de propriété priceSpecification
avec la propriété
le détail du prix. Le taux de base, les taxes telles que la taxe générique et la remise, sont
défini à l'aide du composant UnitPriceSpecification
. N'oubliez pas de définir
name
avec les valeurs correspondant à
Composant UnitPriceSpecification
.
Le prix total pour la durée du séjour doit être indiqué dans le
CompoundPriceSpecification
. Le détail du prix doit être de
spécifié dans la propriété 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
établissement
Cette propriété permet d'annoter les conditions de remboursement du marchand dans les séjours.
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"refundType": "https://schema.org/FullRefund",
"merchantReturnDays": "YYYY-MM-DD[THH:mm:ss]",
"restockingFee": 0
}
Syntaxe
Le hasMerchantReturnPolicy
utilise la syntaxe suivante:
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
}
}
}
Propriété
Voici la propriété hasMerchantReturnPolicy
:
Attribut | Requis ? | Type | Description |
---|---|---|---|
Offer.hasMerchantReturnPolicy | Optional | MerchantReturnPolicy | Les conditions de remboursement du marchand Les partenaires doivent utiliser
Si |
Exemple
Conditions de retour
Voici un exemple de base de données structurées pour un hôtel proposant des chambres
détails et prix total, taxes et frais compris. Cet exemple indique un séjour
pouvant être annulés sans frais jusqu'à 23h (UTC) le
18 décembre 2023. Les partenaires doivent utiliser
"MerchantReturnPolicy.restockingFee"
pour indiquer les modalités d'annulation
qui ne remboursent pas le montant total du séjour. Les restockingFee
par défaut
à 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
établissement
Cette propriété peut être utilisée pour annoter les programmes de fidélité proposés pour les hôtels des clients de type "membres".
"eligibleCustomerType": "RewardsMember",
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency"
}
Syntaxe
La propriété eligibleCustomerType
utilise la syntaxe suivante:
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": { ... }
}
}
Propriété
Voici la propriété eligibleCustomerType
:
Attribut | Requis ? | Type | Description |
---|---|---|---|
Offer.eligibleCustomerType | Optional | BusinessEntityType | Les programmes de fidélité ou les récompenses sans frais pour clients. De nombreuses pages d'hôtels affichent les tarifs pour les membres avec les tarifs publics, pour inciter les utilisateurs à s'inscrire à leur programme de fidélité. Tarifs limités à des audiences spécifiques, comme les tarifs pour les membres, en définissant la propriétéOffer.eligibleCustomerType . |
Exemples
Tarifs pour les membres
Voici un exemple basique de tarif pour les membres ou de tarif délimité spécifications pour les programmes de fidélité. Le client est un "membre des récompenses" de l'hôtel.
{
"@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"
}
]
}
}
}
Membre et tarifs standards
Il s'agit d'un exemple d'annotations de prix standards et pour les membres. La Les tarifs pour les membres sont indiqués en premier, suivis des tarifs standards.
{
"@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"
}
]
}
}
]
}
Données structurées HotelRoom
offers
établissement
Les annotations offers
sont utilisées pour baliser votre salle
d'itinéraires. Vous devez utiliser la propriété offers
pour la spécification 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": {...}
}
Syntaxe
La propriété offers
utilise la syntaxe suivante:
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",
...
}
}
}
Propriétés
Voici les propriétés offers
:
Propriété | Obligatoire ? | Type | Description |
---|---|---|---|
offers | Required | Offer and LodgingReservation | Spécification du prix de la chambre pour l'itinéraire donné. La propriété |
LodgingReservation.checkinTime | Required | DateTime | Heure d'arrivée dans le fuseau horaire de l'utilisateur. Si votre fuseau horaire n'est pas indiqué, le fuseau horaire de l'hôtel est pris en compte. |
LodgingReservation.checkoutTime | Required | DateTime | Heure de départ dans le fuseau horaire de l'utilisateur. Si votre fuseau horaire n'est pas indiqué, le fuseau horaire de l'hôtel est pris en compte. |
Exemple
offres
Voici un exemple de base pour spécifier offers
dans 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"
}
}
}
Propriétés bed
et occupancy
La propriété bed
permet d'annoter le type et le nombre de lits.
disponible dans la salle. La propriété occupancy
permet d'annoter le nombre
d'invités dans la salle. Les propriétés bed
et occupancy
peuvent être spécifiées à l'aide de
la propriété 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"
}
}
Syntaxe
Les propriétés bed
et occupancy
utilisent la syntaxe suivante:
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"
},
...
}
}
}
}
Les propriétés bed
et occupancy
ne peuvent être définies qu'à l'aide de HotelRoom
. Vous pouvez inclure des informations spécifiques à une chambre, y compris les tarifs de chaque chambre.
à la propriété Hotel
via la propriété containsPlace
. Consultez le
Exemple de spécification Hotel
et HotelRoom
.
Propriétés
Voici les propriétés bed
et occupancy
:
Propriété | Obligatoire ? | Type | Description |
---|---|---|---|
HotelRoom.bed | Optional (Recommended) | bed | Le type de lit(s) inclus dans l'hébergement et le nombre de dans la salle. Les valeurs acceptées sont les suivantes :
|
HotelRoom.occupancy | Optional (Recommended) | QuantitativeValue | Nombre de personnes dans la chambre d'hôtel. Le type d'occupation est
L'occupation est une propriété explicite de
|
containsPlace | Optional (Recommended) | LocationFeatureSpecification | Il permet d'annoter les prix de la chambre associés à des salles. Il permet également d'indiquer les services proposés dans la chambre. Pour en savoir plus sur l'utilisation de |
Exemples
HotelRoom
Voici un exemple de base du nombre de lits et du nombre de personnes pour une chambre. spécifique.
{
"@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 et HotelRoom
Voici un exemple d'annotation de Hotel
et HotelRoom
.
ainsi que bed
, occupancy
et 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
établissement
Les spécifications du prix des chambres d'hôtel sont semblables à celles des hôtels.
différence est que les prix des chambres sont spécifiés à l'aide de la propriété Product.offers
au lieu de la propriété Hotel.makesOffer
.
"priceSpecification": {
"@type": "CompoundPriceSpecification",
"price": "float",
"priceCurrency": "currency",
"priceComponent": {
"@type": "UnitPriceSpecification",
"name": "GenericTax",
"price": "float",
"priceCurrency": "currency"
}
...
}
Syntaxe
La propriété priceSpecification
pour les chambres d'hôtel utilise la syntaxe suivante:
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"
}
]
}
}
}
Propriétés
Voici les propriétés HotelRoom priceSpecification
:
Propriété | Obligatoire ? | Type | Description |
---|---|---|---|
Hotel.Offer.priceSpecification.price | Required | float | Le prix par chambre, taxes et frais compris
Le tarif de Google doit toujours être annoté sur votre page de destination, au même titre que l'intégralité de vos tarifs. L'annotation des détails des tarifs vous permet la précision des prix. Google accepte à la fois les niveaux d'hôtel et de chambre de base. |
Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Code de devise à trois lettres correspondant au prix spécifié. Exemple: "USD"
. |
Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | Répartition du prix total, taxes et frais compris pour l'hôtel
la chambre et le nombre de personnes avec des offres associées à
|
Exemples
Prix total de la chambre
Voici un exemple de base illustrant la définition du prix total pour la durée du séjour et le prix par nombre de personnes.
{
"@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"
}
},
...
}
Détail du prix des chambres
Voici un exemple de prix par chambre ou par forfait. Détail du prix
est défini pour le type de chambre, par exemple la chambre Deluxe
, ainsi que les attributs bed
et occupancy
.
tels que KING
et SINGLE
, et un nombre de 2 personnes.
{
"@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
établissement
Cette propriété permet d'annoter les services spécifiques aux tarifs fournis dans l'hôtel.
ou une chambre (options de repas et service de voiturier, par exemple). Vous pouvez annoter
includesObject
dans la propriété Hotel
ou HotelRoom
.
{
"includesObject": [
{
"@type": "TypeAndQuantityNode",
"typeOfGood": {
"@type": "Service",
"name": "Valet"
}
},
{
"@type": "TypeAndQuantityNode",
"amountOfThisGood": "float",
"unitText": "currency",
"typeOfGood": {
"@type": "FoodService",
"name": "MealCredit"
}
}
]
}
Syntaxe
Le includesObject
utilise la syntaxe suivante pour les services spécifiques au tarif
disponibles dans la salle:
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"
}
}
]
}
}
Propriété
includesObject
a la propriété suivante:
Attribut | Requis ? | Type | Description |
---|---|---|---|
Offer.includesObject | Optional | TypeAndQuantityNode | Services fournis dans l'hôtel ou la chambre. Les caractéristiques propres au tarif sont incluses dans le
Des fonctionnalités spécifiques au tarif peuvent également être incluses dans les offres de base. ou peuvent être spécifiés comme modules complémentaires moyennant un supplément. Le
|
Exemple
Services
Voici un exemple de base de caractéristiques spécifiques à un tarif pour le service de voiturier
et les services de restauration. Les caractéristiques propres au tarif doivent être spécifiées dans
"Offer.includesObject"
. Le champ Nom de
"TypeAndQuantityNode.typeOfGood"
doit être utilisé pour indiquer le type
Google Cloud.
{
"@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
établissement
La propriété offer.availability
permet d'annoter les séjours complets.
pour les chambres d'hôtel.
"offers": {
"@type": ["Offer", "LodgingReservation"],
"checkinTime": "YYYY-MM-DD[THH:mm:ss]",
"checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
"availability": "https://schema.org/SoldOut"
}
Syntaxe
La propriété availability
utilise la syntaxe suivante:
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"
}
}
Propriété
Voici la propriété availability
:
Attribut | Requis ? | Type | Description |
---|---|---|---|
Offer.availability | Optional | ItemAvailability | Disponibilité de l'hôtel ou de la chambre. Les tarifs sont extraits de .
Une offre sans
|
Exemple
Disponibilité
L'exemple suivant illustre l'indisponibilité des chambres d'hôtel. Toi doit inclure le type de lit, le nombre de lits et les informations concernant le nombre de personnes pour la salle spécifiée.
{
"@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
établissement
Les services peuvent être spécifiés de type Hotel
ou HotelRoom
à l'aide de la propriété
amenityFeature
. Vous devez utiliser la propriété containsPlace
pour spécifier
sont à disposition en chambre.
{
"@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
}
]
}
}
Syntaxe
Les propriétés amenityFeature
et containsPlace
présentent les caractéristiques suivantes :
syntaxe:
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"
}
}
}
Services
Les services suivants sont autorisés et définis dans la propriété name
.
Attribut | Requis ? | Type | Description |
---|---|---|---|
amenityFeature.AC | Optional | boolean | Indique si l'établissement est climatisé. |
amenityFeature.AirportShuttle | Optional | boolean | Le service de transport depuis et vers l'aéroport d'autres terminaux. |
amenityFeature.Balcony | Optional | boolean | Indique si l'hébergement dispose d'un balcon. |
amenityFeature.BeachAccess | Optional | boolean | Indique si l'établissement est proche d'une plage publique. |
amenityFeature.ChildFriendly | Optional | boolean | Indique si l'établissement est adapté aux enfants. |
amenityFeature.Crib | Optional | boolean | Indique si l'établissement fournit un berceau. |
amenityFeature.Elevator | Optional | boolean | Indique si l'établissement dispose d'un ascenseur. |
amenityFeature.FirePlace | Optional | boolean | Indique si l'hébergement est doté d'une cheminée. |
amenityFeature.FreeBreakfast | Optional | boolean | Indique si l'établissement propose un petit-déjeuner gratuit pour tous les clients. Utilisez caractéristiques de tarification pour indiquer si le petit-déjeuner n'est inclus qu'à un tarif spécifique de votre abonnement. |
amenityFeature.GymFitnessEquipment | Optional | boolean | Indique si l'établissement dispose d'une salle de sport ou d'équipements de fitness. |
amenityFeature.Heating | Optional | boolean | Indique si l'hébergement est chauffé. |
amenityFeature.HotTub | Optional | boolean | Indique si l'établissement dispose d'un bain à remous. |
amenityFeature.InstantBookable | Optional | boolean | Indique si l'établissement peut être réservé instantanément via le paiement processus. L'alternative est l'attente d'approbation. |
amenityFeature.IroningBoard | Optional | boolean | Indique si l'établissement propose des planches à repasser. |
amenityFeature.Kitchen | Optional | boolean | Indique si l'hébergement est équipé d'une cuisine. |
amenityFeature.Microwave | Optional | boolean | Indique si l'établissement est équipé d'un four à micro-ondes. |
amenityFeature.OpenAirBath(Hotels only) | Optional | boolean | Indique si l'hébergement dispose d'un bain en plein air. Si spécifié au niveau de la chambre, la salle de bain doit être privée uniquement pour les occupants de la chambre. |
amenityFeature.OutdoorGrill | Optional | boolean | Indique si l'établissement est doté d'un barbecue. |
amenityFeature.OvenStove | Optional | boolean | Indique si la propriété est équipée d'un poêle. |
amenityFeature.Patio | Optional | boolean | Indique si l'établissement possède un patio. |
amenityFeature.Pool | Optional | boolean | Indique si l'hébergement est équipé d'une piscine. |
amenityFeature.PrivateBeachAccess | Optional | boolean | Indique si l'établissement dispose d'un accès dédié à une plage non publique. |
amenityFeature.SelfCheckinCheckout | Optional | boolean | Indique si l'établissement permet l'arrivée et le départ sans hésiter. |
amenityFeature.WasherDryer | Optional | boolean | Indique si l'établissement dispose d'appareils électroménagers. |
amenityFeature.Wifi | Optional | boolean | Indique si l'établissement dispose d'une connexion Wi-Fi. |
amenityFeature.Smoking | Optional | boolean | Indique si l'établissement est autorisé à fumer. |
amenityFeature.InternetType | Optional | Enum | Type d'Internet disponible dans l'établissement. Voici les valeurs possibles :
|
amenityFeature.ParkingType | Optional | Enum | Type de stationnement disponible dans l'établissement. Voici les valeurs possibles :
|
amenityFeature.PoolType | Optional | Enum | Type de piscine disponible dans l'établissement. Voici les valeurs possibles :
|
amenityFeature.RoomStyle | Optional | Enum | Indique si la pièce est de style japonais. Voici les valeurs possibles :
|
amenityFeature.LicenseNum | Required | string | Numéro de licence de l'établissement à afficher sur la propriété
dans certaines régions du monde. Il peut être répété, et si plusieurs
existent, nous vous recommandons d'ajouter le propriétaire ou l'autorité
la licence. Par exemple : |
Propriétés
Voici les propriétés amenityFeature
:
Propriété | Obligatoire ? | Type | Description |
---|---|---|---|
amenityFeature | Optional | LocationFeatureSpecification | Services fournis dans l'hôtel ou la chambre. Il peut être spécifié
à l'aide de la propriété Les services peuvent être spécifiés à l' |
containsPlace | Optional | LocationFeatureSpecification | Services proposés à tous les clients de l'hôtel ou de la chambre. Il
peut être spécifié à l'aide de
|
Exemple
Services de l'hôtel et des chambres
Voici un exemple d'hôtel avec une piscine ouverte de 10h à 22h et aucune salle de sport n'est disponible dans l'établissement. La chambre de l'hôtel est non-fumeur. Elles sont équipées d'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"
}
}
}
}