Cette page fournit une référence pour ajouter des balises de données structurées aux données tarifaires de vos hôtels.
Présentation
Les données structurées sur les prix des hôtels sont utilisées pour expliquer, valider et afficher en détail les prix des hôtels listés sur votre site Web, quelle que soit l'interface utilisateur. Cela inclut également le prix de base, les tarifs, les chambres, les frais et taxes, ainsi que les champs liés aux prix.
Google recommande aux partenaires d'annoter leurs pages Web avec des données structurées standardisées et lisibles par les robots d'exploration. Ces données sont fournies par schema.org et permettent d'extraire précisément les prix de vos pages Web.
Cela permet de faire évoluer les validations de la précision des prix en améliorant la fiabilité des robots d'exploration. Vous bénéficierez ainsi d'un plus grand nombre de validations de la précision des prix, de la possibilité de déboguer directement les problèmes de précision des prix et d'un taux de précision des prix cohérent.
Si vous découvrez les données structurées, consultez Vocabulaire et format des données structurées.
Google Hôtels recommande le format JSON-LD pour annoter vos pages Web. Pour en savoir plus sur les autres formats acceptés, consultez Formats acceptés. Cette documentation fournit des informations de référence détaillées sur l'implémentation des données structurées dans les hôtels.
Les données structurées Hotel permettent d'annoter les champs spécifiques aux hôtels sur votre page Web. Les données structurées Hotel présentent les propriétés suivantes :
Propriétés
nameetaddressPropriété
makesOfferPropriété
Hotel priceSpecificationPropriété
hasMerchantReturnPolicyPropriété
eligibleCustomerType
Les données structurées HotelRoom permettent d'annoter les champs spécifiques aux chambres sur votre page Web.
Les données structurées HotelRoom présentent les propriétés suivantes :
Propriété
offersPropriétés
bedetoccupancyPropriété
HotelRoom priceSpecificationPropriété
includesObjectPropriété
availabilityPropriété
amenityFeature
Données structurées d'hôtel
Propriétés name et address
Les propriétés name et address sont utilisées pour annoter le nom et l'emplacement de l'hôtel. 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 | Identifiant d'hôtel du partenaire. L'identifiant doit être une chaîne unique par hôtel et doit correspondre exactement à la chaîne utilisée dans le flux de 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 sont utilisées pour marquer 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 en question.
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 mentionné, celui 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 mentionné, celui de l'hôtel est pris en compte. |
Exemple
makesOffer
Voici un exemple de base pour annoter vos offres d'hôtel. Vous pouvez spécifier plusieurs offres pour un itinéraire, mais vous devez d'abord indiquer le tarif affiché sur Google, puis les autres tarifs. Le montant du prix indiqué inclut toutes les 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
Cette propriété permet d'annoter les informations tarifaires de votre hôtel ou de vos chambres d'hôtel. Deux propriétés supplémentaires sont requises pour annoter vos prix et vos taxes. Vous devez utiliser CompoundPriceSpecification pour spécifier les informations tarifaires totales, telles que le tarif de base, les taxes et les remises.
Utilisez UnitPriceSpecification pour spécifier des taxes supplémentaires ou des types de frais spéciaux tels que ResortFee, GenericTax et ServiceFee. La propriété priceSpecification est associé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 inclus. Le tarif Google doit toujours être indiqué sur votre page de destination, ainsi que tous les détails le concernant. Annoter les détails des tarifs vous permet de vérifier l'exactitude des prix. Google accepte les prix au niveau de l'hôtel et de la chambre. |
| Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Code à trois lettres de la devise du prix spécifié. Exemple : "USD"
. |
| Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | Répartition du prix total, y compris les taxes et les frais de l'hôtel. Il existe deux types de données structurées sur les 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 facturés au moment du paiement sur le site de réservation et à l'hôtel lors de l'enregistrement. Vous devez utiliser la propriété Google accepte les deux paramètres suivants pour le destinataire de
|
Exemples
Exemples JSON-LD
Prix
Voici un exemple de base d'ajout de données structurées sur les prix à votre page Web. Plusieurs offres au niveau de l'hôtel peuvent être incluses dans la propriété makesOffer.
Les types PostalAddress tels que addressCountry, postalCode, streetAddress et d'autres champs sont obligatoires si vous choisissez de spécifier la propriété address. Le taux affiché sur Google doit être indiqué en premier dans la propriété makesOffer. Le montant du prix spécifié inclut toutes les taxes applicables.
{
"@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 le détail du prix. Le taux de base, les taxes (comme la taxe générique) et la remise sont définis à l'aide du composant UnitPriceSpecification. N'oubliez pas de définir le champ priceComponentType avec les valeurs correspondant au composant UnitPriceSpecification.
Le prix total du séjour doit être indiqué dans la propriété CompoundPriceSpecification. Le détail du prix doit être 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 utilisant le type de destinataire de PayAction.
Le prix total du forfait est de 1 170 $. Le site Web facture une partie du prix total, soit 1 150 $, au moment de la réservation, comme indiqué à l'aide de "@type": "OnlineBusiness". L'utilisateur doit payer les 20 $restants au moment de l'enregistrement à l'hôtel, comme indiqué à l'aide de @type": "Hotel".
Vous devez spécifier le composant potentialAction pour répartir le paiement au moment de la réservation et à l'hôtel. Si aucune méthode n'est spécifiée, payAction interprète le paiement au moment de la réservation comme méthode de paiement par défaut.
{
"@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 le détail du prix. Le taux de base, les taxes (comme la taxe générique) et la remise sont définis à l'aide du composant UnitPriceSpecification. N'oubliez pas de définir la propriété name avec les valeurs correspondant au composant UnitPriceSpecification.
Le prix total du séjour doit être indiqué dans la propriété CompoundPriceSpecification. Le détail du prix doit être 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 itinéraires.
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"refundType": "https://schema.org/FullRefund",
"merchantReturnDays": "YYYY-MM-DD[THH:mm:ss]",
"restockingFee": 0
}
Syntaxe
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 | Obligatoire ? | Type | Description |
|---|---|---|---|
| Offer.hasMerchantReturnPolicy | Optional | MerchantReturnPolicy | 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 avec des informations sur les chambres et le prix total incluant les taxes et les frais. Cet exemple indique un séjour qui peut être annulé sans frais jusqu'à 23h (UTC) le 18 décembre 2023. Les partenaires doivent utiliser "MerchantReturnPolicy.restockingFee" pour indiquer les conditions d'annulation qui ne remboursent pas le montant total du séjour. La valeur par défaut de restockingFee est de 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 récompenses proposés aux clients membres d'hôtels.
"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 | Obligatoire ? | Type | Description |
|---|---|---|---|
| Offer.eligibleCustomerType | Optional | BusinessEntityType | Programmes de fidélité ou récompenses proposées aux clients. De nombreuses pages d'hôtels affichent des tarifs réservés aux membres ainsi que des tarifs publics pour inciter les utilisateurs à s'inscrire à leurs programmes de fidélité. Les tarifs réservés à certaines audiences, comme les tarifs pour les membres, peuvent être spécifiés en définissant la propriétéOffer.eligibleCustomerType. |
Exemples
Tarifs pour les membres
Voici un exemple de base de spécification de prix réservés aux membres ou de tarifs avec restriction pour les programmes de fidélité. Le client est membre du programme de fidélité 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"
}
]
}
}
}
Tarifs pour les membres et tarifs standards
Voici un exemple d'annotations de prix standard et de prix réservés aux membres. Le prix réservé aux membres est indiqué en premier, suivi 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 permettent de baliser vos itinéraires de chambres. 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 le séjour en question. 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 mentionné, celui 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 mentionné, celui de l'hôtel est pris en compte. |
Exemple
Pixel
Voici un exemple de base pour spécifier offers dans la propriété 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 disponibles dans la chambre. La propriété occupancy permet d'annoter le nombre de personnes dans la chambre. 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 ont 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 la propriété HotelRoom. Les informations spécifiques aux chambres, y compris les tarifs au niveau des chambres, peuvent être incluses dans la propriété Hotel via la propriété containsPlace. Consultez l'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 | Type de lit(s) inclus dans l'hébergement et nombre d'occupants dans la chambre. 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 | Elle permet d'annoter les tarifs au niveau des chambres associés à des chambres spécifiques. Il peut également être utilisé pour spécifier les équipements de la chambre. Découvrez comment utiliser |
Exemples
HotelRoom
Voici un exemple de base de lits et d'occupations pour une spécification de chambre.
{
"@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"
}
}
}
Hôtel et HotelRoom
Voici un exemple d'annotation des propriétés Hotel et HotelRoom avec 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
La spécification du prix d'une chambre d'hôtel est semblable à celle du prix d'un hôtel.La différence réside dans le fait 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 a 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 | Prix par chambre, taxes et frais inclus, pour le Le tarif Google doit toujours être indiqué sur votre page de destination, ainsi que tous les détails le concernant. Annoter les détails des tarifs vous permet de vérifier l'exactitude des prix. Google accepte les prix au niveau de l'hôtel et de la chambre. |
| Hotel.Offer.priceSpecification.priceCurrency | Required | currency | Code à trois lettres de la devise du prix spécifié. Exemple : "USD"
. |
| Hotel.Offer.priceSpecification.priceComponent | Optional | UnitPriceSpecification[] | Répartition du prix total, y compris les taxes et les frais pour la chambre d'hôtel et l'occupation avec les offres associées à
|
Exemples
Prix total de la chambre
Voici un exemple de base de définition du prix total pour la durée du séjour et du prix par occupation.
{
"@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étails du prix de la chambre
Voici un exemple de prix par chambre ou par forfait. La répartition du prix est définie pour un type de chambre, comme une chambre Deluxe, et pour un type bed et occupancy, comme KING et SINGLE lits, avec une occupation de deux 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 proposés dans l'hôtel ou la chambre, tels que les options de repas et le service de voiturier. 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
includesObject utilise la syntaxe suivante pour les services spécifiques aux tarifs disponibles dans la chambre :
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 présente la propriété suivante :
| Attribut | Obligatoire ? | Type | Description |
|---|---|---|---|
| Offer.includesObject | Optional | TypeAndQuantityNode | Services proposés dans l'hôtel ou la chambre Les fonctionnalités spécifiques aux tarifs sont incluses dans la propriété Des fonctionnalités spécifiques aux tarifs peuvent également être incluses dans les offres de base ou spécifiées en tant que modules complémentaires moyennant un supplément.
|
Exemple
Services
Voici un exemple de base de caractéristiques tarifaires pour les services de voiturier et de restauration. Les caractéristiques spécifiques aux tarifs doivent être spécifiées avec la propriété "Offer.includesObject". Le champ "name" (nom) sur "TypeAndQuantityNode.typeOfGood" doit être utilisé pour indiquer le type de service.
{
"@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 itinéraires 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 les propriétés availability :
| Attribut | Obligatoire ? | 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é
Voici un exemple de base pour illustrer l'indisponibilité d'une chambre d'hôtel. Vous devez inclure le type de lit, le nombre de lits et les informations sur l'occupation pour la chambre 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
Vous pouvez spécifier les services de type Hotel ou HotelRoom à l'aide de la propriété amenityFeature. Vous devez utiliser la propriété containsPlace pour spécifier les équipements fournis dans la 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 ont la syntaxe suivante :
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 | Obligatoire ? | Type | Description |
|---|---|---|---|
| amenityFeature.AC | Optional | boolean | Indique si l'établissement est climatisé. |
| amenityFeature.AirportShuttle | Optional | boolean | Indique si l'hôte assure le transport depuis et vers l'aéroport ou 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 à tous les clients. Utilisez les fonctionnalités tarifaires pour indiquer si le petit-déjeuner est inclus uniquement pour certains forfaits. |
| 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 dispose du chauffage. |
| 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 durant le processus de paiement. 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 un four à micro-ondes est disponible dans l'hébergement. |
| amenityFeature.OpenAirBath(Hotels only) | Optional | boolean | Indique si l'hébergement dispose d'un bain en plein air. Si elle est spécifiée au niveau de la chambre, la salle de bain doit être réservée aux occupants de la chambre. |
| amenityFeature.OutdoorGrill | Optional | boolean | Indique si l'établissement est doté d'un barbecue. |
| amenityFeature.OvenStove | Optional | boolean | Indique si l'établissement est équipé d'une cuisinière. |
| amenityFeature.Patio | Optional | boolean | Indique si l'établissement possède un patio. |
| amenityFeature.Pool | Optional | boolean | Indique si l'hébergement dispose 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 accepte l'arrivée et le départ autonomes. |
| amenityFeature.WasherDryer | Optional | boolean | Indique si l'hébergement est équipé d'appareils de buanderie. |
| amenityFeature.Wifi | Optional | boolean | Indique si l'établissement dispose du Wi-Fi. |
| amenityFeature.Smoking | Optional | boolean | Indique si l'hébergement autorise les fumeurs. |
| 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 chambre est de style japonais. Voici les valeurs possibles :
|
| amenityFeature.LicenseNum | Required | string | Numéro de licence de l'établissement qui doit être indiqué pour les établissements de certaines régions du monde. Il peut être répété et, si plusieurs licences existent, il est recommandé d'ajouter le propriétaire ou l'autorité de la licence. Par exemple : |
Propriétés
Voici les propriétés amenityFeature :
| Propriété | Obligatoire ? | Type | Description |
|---|---|---|---|
| amenityFeature | Optional | LocationFeatureSpecification | Équipements fournis dans l'hôtel ou la chambre. Vous pouvez le spécifier à l'aide de la propriété Les équipements peuvent être spécifiés au niveau |
| containsPlace | Optional | LocationFeatureSpecification | Équipements fournis dans l'hôtel ou la chambre à tous les clients. Il peut être spécifié à l'aide de
|
Exemple
Équipements de l'hôtel et de la chambre
Voici un exemple d'hôtel avec une piscine ouverte de 10h à 22h et sans salle de sport. La chambre d'hôtel est non-fumeur et dispose 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"
}
}
}
}