Riferimento ai dati strutturati dei prezzi degli hotel

Questa pagina fornisce le specifiche tecniche e il riferimento al vocabolario per i markup dei dati strutturati degli hotel di Schema.org.

Panoramica

I dati strutturati dei prezzi degli hotel forniscono un formato standardizzato e leggibile da macchina per spiegare, convalidare e visualizzare i prezzi degli hotel elencati sul tuo sito web, indipendentemente dal layout grafico. tra cui prezzi base, tariffe, specifiche delle camere, tasse e commissioni dettagliate e norme di prenotazione.

Google consiglia di annotare le pagine web con dati strutturati standardizzati forniti da Schema.org per estrarre con precisione i prezzi dalle pagine web.

I dati strutturati standard consentono di scalare le convalide dell'accuratezza del prezzo migliorando l'affidabilità dei crawler, aumentando il numero di convalide dell'accuratezza del prezzo, consentendo il debug diretto dei problemi di accuratezza del prezzo e mantenendo un punteggio di accuratezza del prezzo coerente.

Se non li hai mai utilizzati, scopri di più sul vocabolario e sul formato dei dati strutturati.

Google Hotels consiglia il formato microdati per impostazione predefinita per annotare le tue pagine web per i controlli di accuratezza del prezzo degli hotel. Il formato JSON-LD è obsoleto per la convalida dell'accuratezza del prezzo. Tieni presente che questo consiglio si applica rigorosamente alla convalida dell'accuratezza dei prezzi degli hotel e non influisce su altri utilizzi dei dati strutturati su Google (ad esempio i risultati avanzati della Ricerca Google). Per saperne di più sui formati supportati per le funzionalità di ricerca generali, consulta Formati supportati. Questa documentazione fornisce contenuti di riferimento dettagliati specifici per l'implementazione dei dati strutturati in Hotels.

I dati strutturati Hotel vengono utilizzati per annotare i campi specifici dell'hotel nella tua pagina web. I dati strutturati Hotel hanno le seguenti proprietà:

I dati strutturati di HotelRoom vengono utilizzati per annotare i campi specifici della camera nella tua pagina web.

I dati strutturati HotelRoom hanno le seguenti proprietà:

Gli attributi di navigazione vengono utilizzati per spiegare agli spider gli elementi interattivi e gli stati della pagina. Per maggiori informazioni, vedi Tagging della navigazione.

Dati strutturati dell'hotel

Le seguenti proprietà si applicano all'entità Hotel.

Proprietà name e address

Le proprietà name e address vengono utilizzate per annotare il nome e la posizione dell'hotel. Di seguito sono riportate le proprietà name e 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."
    },

Sintassi

Le proprietà name e address utilizzano la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">hotel-name</span>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
    <span itemprop="streetAddress">1234 Main St.</span>,
    <span itemprop="addressLocality">City Name</span>,
    <span itemprop="addressRegion">State Name</span>
    <span itemprop="postalCode">01234</span>
    <span itemprop="addressCountry">XX</span>
  </div>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    ...
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"]
    ...
  }
}

Proprietà

Di seguito sono riportate le proprietà name e address:

Proprietà Obbligatorio? Tipo Descrizione
Hotel.name Required string Il nome dell'hotel
Hotel.identifier Required string

L'ID hotel dei partner.

L'identificatore deve essere una stringa univoca per hotel e deve corrispondere esattamente alla stringa utilizzata nel feed dei prezzi.

Hotel.address Optional PostalAddress L'indirizzo o la posizione dell'hotel.

Esempio di nome e indirizzo

Di seguito è riportato un esempio di base di aggiunta delle annotazioni name e address:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <h1 itemprop="name">Mountain Hotel</h1>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
    <span itemprop="streetAddress">Technikerstrasse 21</span>,
    <span itemprop="addressLocality">Innsbruck</span>,
    <span itemprop="addressRegion">Tyrol</span>
    <span itemprop="postalCode">6020</span>
    <span itemprop="addressCountry">AT</span>
  </div>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
    </div>
  </div>
</div>

JSON-LD (obsoleto)

{
  "@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 struttura

Le annotazioni makesOffer vengono utilizzate per contrassegnare gli itinerari dell'hotel.

  "makesOffer": {
    "@type": ["Offer", "LodgingReservation"],
    "checkinTime": "YYYY-MM-DD[THH:mm:ss]",
    "checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
    "availability": "https://schema.org/InStock",
    ...
  }

Sintassi

La proprietà makesOffer utilizza la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">hotel-name</span>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="YYYY-MM-DDTHH:mm:ss">YYYY-MM-DD[THH:mm:ss]</time>
    Check-out: <time itemprop="checkoutTime" content="YYYY-MM-DDTHH:mm:ss">YYYY-MM-DD[THH:mm:ss]</time>
    <meta itemprop="availability" content="https://schema.org/InStock"/>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      ...
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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": { ... }
  }
}

Proprietà

Di seguito sono riportate le proprietà makesOffer:

Proprietà Obbligatorio? Tipo Descrizione
makesOffer Required Offer and LodgingReservation

L'offerta o le offerte dell'hotel per un determinato itinerario.

La proprietà makesOffer può contenere un array di offerte.

LodgingReservation.checkinTime Required DateTime

L'ora di check-in nel fuso orario dell'utente. Se il tuo fuso orario non è menzionato, viene preso in considerazione il fuso orario dell'hotel.

LodgingReservation.checkoutTime Required DateTime

L'ora di check-out nel fuso orario dell'utente. Se il tuo fuso orario non è menzionato, viene preso in considerazione il fuso orario dell'hotel.

Esempio di makesOffer

Di seguito è riportato un esempio di base per annotare le offerte per hotel. Puoi specificare più offerte per un itinerario, ma devi specificare prima la tariffa visualizzata su Google e poi le altre tariffe. L'importo del prezzo specificato include tutte le tasse applicabili.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">Mountain Hotel</span>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
    </div>
  </div>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1200.74</span>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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 struttura

Questa proprietà viene utilizzata per annotare le informazioni sui prezzi del tuo hotel o delle tue camere. Per annotare i prezzi e le tasse, sono necessarie due proprietà aggiuntive. Devi utilizzare CompoundPriceSpecification per specificare le informazioni sul prezzo totale, come la tariffa di base, le tasse e gli sconti. Utilizza UnitPriceSpecification per specificare tasse aggiuntive o tipi speciali di addebiti come ResortFee, GenericTax e ServiceFee. La proprietà priceSpecification è inclusa nel pacchetto della proprietà Offer.

  {
    ...
    "priceSpecification": {
      "@type": "CompoundPriceSpecification",
      "price": "float",
      "priceCurrency": "currency",
      "priceComponent": [
        {
          "@type": "UnitPriceSpecification",
          "name": "GenericTax",
          "price": "float",
          "priceCurrency": "currency"
        },
        ...
      ]
    }
  }

Sintassi

La proprietà Hotel priceSpecification utilizza la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">hotel-name</span>
  ...
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    ...
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name"></span>
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">GenericTax</span>
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>
        <meta itemprop="priceComponentType" content="GenericTax"/>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Discount</span>
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>
        <meta itemprop="priceComponentType" content="Discount"/>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
        }
      ]
    }
  }
}

Proprietà

Di seguito sono riportate le proprietà hotel priceSpecification:

Proprietà Obbligatorio? Tipo Descrizione
Hotel.Offer.priceSpecification.price Required float

Il prezzo totale, incluse tasse e commissioni, dell'hotel.

La tariffa Google deve sempre essere annotata nella pagina di destinazione insieme ai dettagli completi della tariffa. L'annotazione dei dettagli della tariffa ti consente di completare i controlli di accuratezza del prezzo. Google accetta prezzi a livello di hotel e di camera.

Hotel.Offer.priceSpecification.priceCurrency Required currency Un codice valuta di tre lettere per il prezzo specificato. Ad es. "USD" .
Hotel.Offer.priceSpecification.priceComponent Optional UnitPriceSpecification[]

Il prezzo totale dettagliato, incluse tasse e commissioni per l'hotel. Esistono due tipi di dati strutturati relativi al prezzo:

  • CompoundPriceSpecification fornisce i dettagli dei prezzi per includere quanto segue:

    • Tariffa di base: il prezzo base per notte

    • Tasse per soggiorno: il prezzo per notte con tasse.

    • Tariffe per occupante: il prezzo per notte per occupante.

    • Sconto: l'importo della detrazione.

  • UnitPriceSpecification viene utilizzato per specificare il tipo di addebiti. Devi includere i valori PriceComponentTypeEnumeration per specificare i costi aggiuntivi.

    I valori per PriceComponentTypeEnumeration sono:

    • Discount: lo sconto generico sul prezzo.

    • ResortFee: si tratta di un addebito aggiuntivo da pagare in hotel. Può variare in base al tipo di struttura ricettiva.

    • GenericTax: Si tratta di un'imposta aggiuntiva varia.

    • ServiceFee: si tratta di una commissione aggiuntiva addebitata dal canale di prenotazione.

    • TransferFee: È una commissione obbligatoria di fatto per il trasporto all'hotel, riscossa dall'hotel o dal canale di prenotazione.

Devi impostare i valori nella proprietà priceComponentType . Tutti i valori sono obbligatori se scegli di includere UnitPriceSpecification e devono essere specificati nella proprietà UnitPriceSpecification.

Hotel.Offer.priceSpecification.priceComponent. potentialAction Optional PayAction

Il punto di pagamento dell'hotel.I flussi di pagamento dell'hotel includono prezzi che vengono addebitati al momento del check-out sul sito di prenotazione e presso l'hotel al momento del check-in.

Devi utilizzare la proprietà potentialAction , inclusa nel campo "recipient" di PayAction, per indicare il punto di pagamento. Fai riferimento a PayAction per scoprire di più sulla proprietà recipient.

Google supporta le seguenti due impostazioni per il destinatario di PayAction:

  • recipient.@type = "OnlineBusiness" si riferisce al pagamento riscosso al momento della prenotazione dal commerciante online. Questa è l'impostazione predefinita se potentialAction non è specificato.

  • recipient.@type = "Hotel" si riferisce al pagamento riscosso in hotel.

Esempi

Di seguito sono riportati esempi di specifiche dei prezzi degli hotel.

Prezzo

Di seguito è riportato un esempio di base di aggiunta di dati strutturati relativi al prezzo alla tua pagina web. È possibile includere più offerte a livello di hotel nella proprietà makesOffer.

I tipi di PostalAddress, come addressCountry, postalCode, streetAddress e altri campi sono obbligatori se scegli di specificare la proprietà address. La tariffa visualizzata da Google deve essere elencata per prima nella proprietà makesOffer. L'importo del prezzo specificato include tutte le imposte applicabili.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">ACME Hotel</span>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
    <span itemprop="streetAddress">Technikerstrasse 21</span>,
    <span itemprop="addressLocality">Innsbruck</span>,
    <span itemprop="addressRegion">Tyrol</span>
    <span itemprop="postalCode">6020</span>
    <span itemprop="addressCountry">AT</span>
  </div>

  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
    </div>
  </div>

  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1200.74</span>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
      }
    }
  ]
}

Prezzo dettagliato

Di seguito è riportato un esempio della proprietà priceSpecification con la suddivisione del prezzo. La tariffa di base, le tasse come la tassa generica e lo sconto vengono definiti utilizzando il componente UnitPriceSpecification. Ricorda di impostare il campo priceComponentType con i valori corrispondenti al componente UnitPriceSpecification.

Il prezzo totale per la durata del soggiorno deve essere specificato nella proprietà CompoundPriceSpecification. La suddivisione del prezzo deve essere specificata nella proprietà priceComponent.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <h1 itemprop="name">ACME Hotel</h1>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
    <span itemprop="streetAddress">123 Main street</span>,
    <span itemprop="addressLocality">Mountain View</span>,
    <span itemprop="addressRegion">Santa Clara</span>
    <span itemprop="postalCode">94040</span>
    <span itemprop="addressCountry">US</span>
  </div>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>

    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      Total Price: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>

      <!-- Price Components -->
      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Base Rate</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1150</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">GenericTax</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">172.74</span>
        <meta itemprop="priceComponentType" content="GenericTax" />
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Discount</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">-100</span>
        <meta itemprop="priceComponentType" content="Discount" />
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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 di pagamento

Di seguito è riportato un esempio di specifica potentialAction nell'utilizzo del tipo di destinatario di PayAction.

Il prezzo totale del pacchetto è di 1170 $e il sito web online addebita una parte del prezzo totale, ovvero 1150 $, al momento della prenotazione specificata utilizzando "@type": "OnlineBusiness" e l'utente deve pagare i 20 $rimanenti al momento del check-in in hotel, specificato utilizzando @type": "Hotel".

Devi specificare il componente potentialAction per suddividere il pagamento al momento della prenotazione e in hotel. Se non è specificato, payAction interpreta il pagamento al momento della prenotazione come metodo di pagamento predefinito.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">ACME Hotel</span>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      Price Due: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1170</span>

      <!-- Paid Online -->
      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1150</span>
        <div itemprop="potentialAction" itemscope itemtype="https://schema.org/PayAction">
          <div itemprop="recipient" itemscope itemtype="https://schema.org/OnlineBusiness">
            <span itemprop="name">myonlinebusiness</span>
          </div>
        </div>
      </div>

      <!-- Paid at Hotel -->
      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">20</span>
        <div itemprop="potentialAction" itemscope itemtype="https://schema.org/PayAction">
          <div itemprop="recipient" itemscope itemtype="https://schema.org/Hotel">
            <span itemprop="name">The Langham, Boston</span>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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": { ... }
            }
          }
        }
      ]
    }
  }
}

hasMerchantReturnPolicy struttura

Questa proprietà viene utilizzata per annotare le norme sui rimborsi del commerciante negli itinerari.

    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "refundType": "https://schema.org/FullRefund",
      "merchantReturnDays": "YYYY-MM-DD[THH:mm:ss]",
      "restockingFee": 0
    }

Sintassi

hasMerchantReturnPolicy ha la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  ...
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    ...
    <div itemprop="hasMerchantReturnPolicy" itemscope itemtype="https://schema.org/MerchantReturnPolicy">
      <link itemprop="returnPolicyCategory" href="https://schema.org/MerchantReturnFiniteReturnWindow"/>
      <link itemprop="refundType" href="https://schema.org/FullRefund"/>
      <meta itemprop="merchantReturnDays" content="YYYY-MM-DDTHH:mm:ss"/>
      <meta itemprop="restockingFee" content="0"/>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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
    }
  }
}

Proprietà

Di seguito è riportata la proprietà hasMerchantReturnPolicy:

Attributo Obbligatorio? Tipo Descrizione
Offer.hasMerchantReturnPolicy Optional MerchantReturnPolicy

Le norme sui rimborsi del commerciante. I partner devono utilizzare MerchantReturnPolicy.restockingFee per indicare le norme di cancellazione che non rimborsano l'intero importo per la durata del soggiorno.

Se hasMerchantReturnPolicy non è specificato o è lasciato vuoto, si presume che l'importo non sia rimborsabile. Puoi specificare la normativa di non rimborsabilità utilizzando la proprietà returnPolicyCategory: MerchantReturnNotPermitted.

Esempio di norme sui resi

Di seguito è riportato un esempio di base di dati strutturati per un hotel con dettagli della camera e prezzo totale con tasse e commissioni. Questo esempio indica un soggiorno che può essere annullato senza addebiti fino alle 23:00 (UTC) del 18 dicembre 2023. I partner devono utilizzare "MerchantReturnPolicy.restockingFee" per indicare le norme di cancellazione che non prevedono il rimborso dell'intero importo del soggiorno. Il valore predefinito di restockingFee è $0.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">ACME Hotel</span>
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    ...
    <div itemprop="hasMerchantReturnPolicy" itemscope itemtype="https://schema.org/MerchantReturnPolicy">
      <link itemprop="returnPolicyCategory" href="https://schema.org/MerchantReturnFiniteReturnWindow"/>
      <link itemprop="refundType" href="https://schema.org/FullRefund"/>
      Cancellation Deadline: <time itemprop="merchantReturnDays" content="2023-12-18T23:00:00">2023-12-18 23:00:00</time>
      Fee: $<span itemprop="restockingFee">0</span>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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 struttura

Questa proprietà può essere utilizzata per annotare i programmi fedeltà forniti per i clienti con abbonamento all'hotel.

"eligibleCustomerType": "RewardsMember",
"priceSpecification": {
    "@type": "CompoundPriceSpecification",
    "price": "float",
    "priceCurrency": "currency"
 }

Sintassi

La proprietà eligibleCustomerType ha la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  ...
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <meta itemprop="eligibleCustomerType" content="RewardsMember"/>
    ...
  </div>
</div>

JSON-LD (ritirato)

{
  "@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": { ... }
  }
}

Proprietà

Di seguito è riportata la proprietà eligibleCustomerType:

Attributo Obbligatorio? Tipo Descrizione
Offer.eligibleCustomerType Optional BusinessEntityType

I programmi fedeltà o i premi per i membri offerti ai clienti.

Molte pagine degli hotel mostrano le tariffe per i membri insieme a quelle pubbliche, per incoraggiare gli utenti a iscriversi ai loro programmi fedeltà. Le tariffe limitate a segmenti di pubblico particolari, come le tariffe per i membri, possono essere specificate impostando la proprietà Offer.eligibleCustomerType.

Esempi

Di seguito sono riportati alcuni esempi di tariffe per i membri del programma fedeltà.

Tariffe per i membri

Di seguito è riportato un esempio di base di specifica di prezzi per i membri o tariffe con limitazioni per i programmi fedeltà. Il cliente è un "membro del programma a premi" dell'hotel.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">ACME Hotel</span>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
    <!-- Address details -->
  </div>

  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <span itemprop="name">RewardsMember</span>
    <meta itemprop="eligibleCustomerType" content="RewardsMember"/>

    Check-in: <time itemprop="checkinTime" content="2023-12-15T16:00:00">Dec 15, 2023 4:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-12-20T11:00:00">Dec 20, 2023 11:00 AM</time>

    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      Total: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1342.74</span>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Base rate</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1069.98</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">GenericTax</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">172.74</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">ResortFee</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">100</span>
      </div>
    </div>
  </div>
</div>

JSON-LD (obsoleto)

{
  "@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"
        }
      ]
    }
  }
}

Tariffe per i membri e tariffe standard

Questo è un esempio di annotazioni dei prezzi delle tariffe regolari e per i membri. I prezzi per gli abbonati sono elencati per primi, seguiti dalle tariffe standard.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">ACME Hotel</span>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
    <!-- Address details -->
  </div>

  <!-- Member Rate -->
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <span itemprop="name">RewardsMember</span>
    <meta itemprop="eligibleCustomerType" content="RewardsMember"/>

    Check-in: <time itemprop="checkinTime" content="2023-12-15T16:00:00">Dec 15, 2023 4:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-12-20T11:00:00">Dec 20, 2023 11:00 AM</time>

    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      Total: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1342.74</span>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Base rate</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1069.98</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">GenericTax</span>: <span itemprop="priceCurrency" content="currency">$</span><span itemprop="price">172.74</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">ResortFee</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">100</span>
      </div>
    </div>
  </div>

  <!-- Regular Rate -->
  <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <span itemprop="name">regularRate</span>

    Check-in: <time itemprop="checkinTime" content="2023-12-15T16:00:00">Dec 15, 2023 4:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-12-20T11:00:00">Dec 20, 2023 11:00 AM</time>

    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      Total: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1572.24</span>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Base rate</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1369.98</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">GenericTax</span>: <span itemprop="priceCurrency" content="currency">$</span><span itemprop="price">202.26</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">ResortFee</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">100</span>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
          }
        ]
      }
    }
  ]
}

Dati strutturati HotelRoom

Le seguenti proprietà si applicano all'entità HotelRoom.

offers struttura

Le annotazioni offers vengono utilizzate per contrassegnare gli itinerari delle camere. Devi utilizzare la proprietà offers per la specifica 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": {...}
}

Sintassi

La proprietà offers ha la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom">
  <meta itemprop="identifier" content="hotel-room-id-1234"/>
  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="YYYY-MM-DDTHH:mm:ss">YYYY-MM-DD[THH:mm:ss]</time>
    Check-out: <time itemprop="checkoutTime" content="YYYY-MM-DDTHH:mm:ss">YYYY-MM-DD[THH:mm:ss]</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>
      ...
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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",
      ...
    }
  }
}

Proprietà

Di seguito sono riportate le proprietà offers:

Proprietà Obbligatorio? Tipo Descrizione
offers Required Offer and LodgingReservation

La specifica del prezzo della camera per l'itinerario specificato.

La proprietà offers può contenere un array di offerte.

LodgingReservation.checkinTime Required DateTime

L'ora di check-in nel fuso orario dell'utente. Se il tuo fuso orario non è menzionato, viene preso in considerazione il fuso orario dell'hotel.

LodgingReservation.checkoutTime Required DateTime

L'ora di check-out nel fuso orario dell'utente. Se il tuo fuso orario non è menzionato, viene preso in considerazione il fuso orario dell'hotel.

Esempio di offers

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom">
  <meta itemprop="identifier" content="hotel-room-id-1234"/>
  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <meta itemprop="identifier" content="rate-plan-id-of-member-rate"/>
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
    }
  }
}

Proprietà bed e occupancy

La proprietà bed viene utilizzata per annotare il tipo di letto e il numero di letti disponibili nella camera. La proprietà occupancy viene utilizzata per annotare il numero di ospiti nella camera. Le proprietà bed e occupancy possono essere specificate utilizzando la proprietà 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"
  }
}

Sintassi

Le proprietà bed e occupancy hanno la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">hotel-name</span>
  <meta itemprop="identifier" content="hotel-id-1234"/>
  <div itemprop="containsPlace" itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
    <span itemprop="name">room-name</span>
    <meta itemprop="identifier" content="hotel-room-id-1234"/>

    <!-- Bed Details -->
    <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
      <span itemprop="numberOfBeds">integer</span>
      <span itemprop="typeOfBed">KING</span>
    </div>

    <!-- Occupancy -->
    <div itemprop="occupancy" itemscope itemtype="https://schema.org/QuantitativeValue">
      Occupancy: <span itemprop="value">integer</span>
    </div>

    <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
      ...
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
        },
        ...
      }
    }
  }
}

Le proprietà bed e occupancy possono essere impostate solo utilizzando la proprietà HotelRoom. Le informazioni specifiche per la camera, incluse le tariffe a livello di camera, possono essere incluse nella proprietà Hotel tramite la proprietà containsPlace. Fai riferimento all'esempio di specifica Hotel e HotelRoom.

Proprietà

Di seguito sono riportate le proprietà bed e occupancy:

Proprietà Obbligatorio? Tipo Descrizione
HotelRoom.bed Optional (Recommended) bed

Il tipo di letto o letti inclusi nell'alloggio e il numero di occupanti nella camera.

I valori supportati sono:

  • CALIFORNIA_KING
  • KING
  • QUEEN
  • FULL
  • DOUBLE
  • SEMI_DOUBLE
  • SINGLE
HotelRoom.occupancy Optional (Recommended) QuantitativeValue

Il numero di ospiti nella camera d'hotel. Il tipo di occupazione è QuantitativeValue.

L'occupazione è una proprietà esplicita di HotelRoom, non di un Offer specifico. Le tariffe devono essere taggate solo per l'occupazione richiesta.

containsPlace Optional (Recommended) LocationFeatureSpecification

Viene utilizzato per annotare le tariffe a livello di camera associate a camere specifiche. Può essere utilizzato anche per specificare i comfort in camera.

Scopri di più su come utilizzare containsPlace nella proprietà amenityFeature.

Esempi

Di seguito sono riportati alcuni esempi di specifiche di letti e occupazione.

Esempio di HotelRoom

Di seguito è riportato un esempio di base di letti e occupazioni per una specifica di camera.

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
  <meta itemprop="identifier" content="hotel-room-id-1234"/>
  <span itemprop="name">Deluxe Room, 1 King Bed</span>

  <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
    <span itemprop="numberOfBeds">1</span>
    <span itemprop="typeOfBed">KING</span>
  </div>
  <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
    <span itemprop="numberOfBeds">1</span>
    <span itemprop="typeOfBed">SINGLE</span>
  </div>

  <div itemprop="occupancy" itemscope itemtype="https://schema.org/QuantitativeValue">
    Occupancy: <span itemprop="value">2</span>
  </div>

  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <meta itemprop="identifier" content="rate-plan-id-of-member-rate"/>
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
    }
  }
}

Esempio di Hotel e HotelRoom

Di seguito è riportato un esempio di annotazione delle proprietà Hotel e HotelRoom insieme a bed, occupancy e priceSpecification.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">hotel-name</span>
  <meta itemprop="identifier" content="hotel-id-1234"/>

  <div itemprop="containsPlace" itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
    <span itemprop="name">Deluxe Room, 1 King Bed</span>
    <meta itemprop="identifier" content="hotel-room-id"/>

    <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
      <span itemprop="numberOfBeds">1</span>
      <span itemprop="typeOfBed">KING</span>
    </div>

    <div itemprop="occupancy" itemscope itemtype="https://schema.org/QuantitativeValue">
      Occupancy: <span itemprop="value">2</span>
    </div>

    <div itemprop="amenityFeature" itemscope itemtype="https://schema.org/LocationFeatureSpecification">
      <span itemprop="name">Minibar</span>
      <meta itemprop="value" content="true"/>
    </div>

    <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
      <meta itemprop="identifier" content="rate-plan-id-of-member-rate"/>
      Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
      Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
      <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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 struttura

La specifica del prezzo della camera d'hotel è simile a quella del prezzo dell'hotel.La differenza è che i prezzi delle camere vengono specificati utilizzando la proprietà Product.offers anziché la proprietà Hotel.makesOffer.

"priceSpecification": {
  "@type": "CompoundPriceSpecification",
  "price": "float",
  "priceCurrency": "currency",
  "priceComponent": {
    "@type": "UnitPriceSpecification",
    "name": "GenericTax",
    "price": "float",
    "priceCurrency": "currency"
  }
  ...
}

Sintassi

La proprietà priceSpecification per le camere d'albergo ha la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
  ...
  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    ...
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name"></span>
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">GenericTax</span>
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>
        <meta itemprop="priceComponentType" content="GenericTax"/>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Discount</span>
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">float</span>
        <meta itemprop="priceComponentType" content="Discount"/>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
        }
      ]
    }
  }
}

Proprietà

Di seguito sono riportate le proprietà HotelRoom priceSpecification:

Proprietà Obbligatorio? Tipo Descrizione
Hotel.Offer.priceSpecification.price Required float

Il prezzo per camera, incluse tasse e commissioni per il Product.

La tariffa Google deve sempre essere annotata nella pagina di destinazione insieme ai dettagli completi della tariffa. L'annotazione dei dettagli della tariffa ti consente di completare i controlli di accuratezza del prezzo. Google accetta prezzi a livello di hotel e di camera.

Hotel.Offer.priceSpecification.priceCurrency Required currency Un codice valuta di tre lettere per il prezzo specificato. Ad es. "USD" .
Hotel.Offer.priceSpecification.priceComponent Optional UnitPriceSpecification[]

Il prezzo totale dettagliato, incluse tasse e commissioni per la camera dell'hotel e l'occupazione con offerte collegate a HotelRoom e Product. Esistono due tipi di dati strutturati relativi al prezzo:

  • CompoundPriceSpecification fornisce i dettagli dei prezzi per includere quanto segue:

    • Tariffa di base: il prezzo base per notte

    • Tasse per soggiorno: il prezzo per notte con tasse.

    • Tariffe per occupante: il prezzo per notte per occupante.

      occupancy è una proprietà esplicita di HotelRoom, non di un Offer specifico. Le tariffe devono essere taggate solo per l'occupazione richiesta.

    • Sconto: l'importo della detrazione.

  • UnitPriceSpecification viene utilizzato per specificare il tipo di addebiti. Devi includere i valori PriceComponentTypeEnumeration per specificare i costi aggiuntivi.

    I valori per PriceComponentTypeEnumeration sono:

    • Discount: lo sconto generico sul prezzo.

    • ResortFee: è un costo aggiuntivo da pagare in hotel. Può variare in base al tipo di struttura ricettiva.

    • GenericTax: Si tratta di un'imposta aggiuntiva varia.

    • ServiceFee: è una tariffa aggiuntiva addebitata dal canale di prenotazione.

    Devi impostare i valori nella proprietà name di UnitPriceSpecification. Se scegli di includere la suddivisione del prezzo, tutti i valori sono obbligatori e devono essere specificati nel componente UnitPriceSpecification.

Esempi

Di seguito sono riportati esempi di specifiche di prezzo HotelRoom.

Esempio di prezzo totale della camera

Di seguito è riportato un esempio di base di definizione del prezzo totale per la durata del soggiorno e del prezzo per occupazione.

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
  <span itemprop="name">Deluxe Room King, 1 Single Bed</span>
  <meta itemprop="identifier" content="hotel-room-id-1234"/>

  <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
    <span itemprop="numberOfBeds">1</span>
    <span itemprop="typeOfBed">KING</span>
  </div>
  <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
    <span itemprop="numberOfBeds">1</span>
    <span itemprop="typeOfBed">SINGLE</span>
  </div>

  <div itemprop="occupancy" itemscope itemtype="https://schema.org/QuantitativeValue">
    Occupancy: <span itemprop="value">2</span>
  </div>

  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1232.74</span>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
    }
  }
}

Esempio di ripartizione del prezzo della camera

Di seguito è riportato un esempio di prezzo per camera o piano. La suddivisione del prezzo è definita per il tipo di camera, ad esempio camera Deluxe, e per il tipo bed e occupancy, ad esempio letti KING e SINGLE e un'occupazione di 2 ospiti.

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
  <span itemprop="name">Deluxe Room King, 1 Single Bed</span>
  <meta itemprop="identifier" content="hotel-room-id-1234"/>

  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <meta itemprop="identifier" content="rate-plan-id-of-member-rate"/>
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>

    <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
      <span itemprop="numberOfBeds">1</span>
      <span itemprop="typeOfBed">KING</span>
    </div>
    <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
      <span itemprop="numberOfBeds">1</span>
      <span itemprop="typeOfBed">SINGLE</span>
    </div>

    <div itemprop="occupancy" itemscope itemtype="https://schema.org/QuantitativeValue">
      Occupancy: <span itemprop="value">2</span>
    </div>

    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      Total: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Base rate</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1150</span>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">GenericTax</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">172.74</span>
        <meta itemprop="priceComponentType" content="GenericTax"/>
      </div>

      <div itemprop="priceComponent" itemscope itemtype="https://schema.org/UnitPriceSpecification">
        <span itemprop="name">Discount</span>: <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">-100</span>
        <meta itemprop="priceComponentType" content="Discount"/>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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 struttura

Questa proprietà viene utilizzata per annotare i servizi specifici per la tariffa forniti nell'hotel o nella camera, come le opzioni per i pasti e il servizio di parcheggio e riconsegna auto. Puoi annotare includesObject nella proprietà Hotel o HotelRoom.

{
  "includesObject": [
    {
      "@type": "TypeAndQuantityNode",
      "typeOfGood": {
        "@type": "Service",
        "name": "Valet"
      }
    },
    {
      "@type": "TypeAndQuantityNode",
      "amountOfThisGood": "float",
      "unitText": "currency",
      "typeOfGood": {
        "@type": "FoodService",
        "name": "MealCredit"
      }
    }
  ]
}

Sintassi

includesObject ha la seguente sintassi per i servizi specifici per la tariffa disponibili nella stanza:

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
  ...
  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    ...
    <div itemprop="includesObject" itemscope itemtype="https://schema.org/TypeAndQuantityNode">
      <div itemprop="typeOfGood" itemscope itemtype="https://schema.org/Service">
        <span itemprop="name">Valet</span>
      </div>
    </div>

    <div itemprop="includesObject" itemscope itemtype="https://schema.org/TypeAndQuantityNode">
      <meta itemprop="amountOfThisGood" content="float"/>
      <meta itemprop="unitText" content="currency"/>
      <div itemprop="typeOfGood" itemscope itemtype="https://schema.org/FoodService">
        <span itemprop="name">MealCredit</span>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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"
        }
      }
    ]
  }
}

Proprietà

includesObject ha la seguente proprietà:

Attributo Obbligatorio? Tipo Descrizione
Offer.includesObject Optional TypeAndQuantityNode

I servizi forniti nell'hotel o nella camera.

Le funzionalità specifiche per la tariffa sono incluse nella proprietà includesObject. Il campo Nome su "TypeAndQuantityNode.typeOfGood" deve essere utilizzato per indicare il tipo di servizio, ad esempio servizio di parcheggio e riconsegna auto o servizio di ristorazione.

Le funzionalità specifiche della tariffa possono essere incluse anche nelle offerte di livello base o possono essere specificate come componenti aggiuntivi a un prezzo aggiuntivo.

includesObject richiede un valore di tipo TypeAndQuantityNode come segue:

  • BreakfastIncluded
  • DinnerIncluded
  • Valet
  • MealCredit

Esempio di includesObject

Di seguito è riportato un esempio di base di funzionalità specifiche per le tariffe per il servizio di parcheggio e i servizi di ristorazione. Le funzionalità specifiche della tariffa devono essere specificate con la proprietà Offer.includesObject. Il campo Nome in TypeAndQuantityNode.typeOfGood deve essere utilizzato per indicare il tipo di servizio.

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
  <span itemprop="name">Deluxe Room, 1 King Bed</span>
  <meta itemprop="identifier" content="hotel-room-id-1234"/>

  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    <meta itemprop="identifier" content="rate-plan-id-of-member-rate"/>
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>

    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
    </div>

    <!-- Included Services -->
    <div itemprop="includesObject" itemscope itemtype="https://schema.org/TypeAndQuantityNode">
      <div itemprop="typeOfGood" itemscope itemtype="https://schema.org/Service">
        <span itemprop="name">Valet</span>
      </div>
    </div>

    <div itemprop="includesObject" itemscope itemtype="https://schema.org/TypeAndQuantityNode">
      <meta itemprop="amountOfThisGood" content="50"/>
      <meta itemprop="unitText" content="USD"/>
      <div itemprop="typeOfGood" itemscope itemtype="https://schema.org/FoodService">
        <span itemprop="name">MealCredit</span>
      </div>
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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 struttura

La proprietà offer.availability viene utilizzata per annotare gli itinerari esauriti per le camere d'hotel.

"offers": {
    "@type": ["Offer", "LodgingReservation"],
    "checkinTime": "YYYY-MM-DD[THH:mm:ss]",
    "checkoutTime": "YYYY-MM-DD[THH:mm:ss]",
    "availability": "https://schema.org/SoldOut"
}

Sintassi

La proprietà availability ha la seguente sintassi:

Microdati

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

JSON-LD (ritirato)

{
  "@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"
  }
}

Proprietà

Di seguito è riportata la proprietà availability:

Attributo Obbligatorio? Tipo Descrizione
Offer.availability Optional ItemAvailability

La disponibilità dell'hotel o della camera.

Le tariffe vengono estratte da schema.org/Offer e le informazioni sulle tariffe non vengono create utilizzando schema.org/Hotel o schema.org/HotelRoom. Ciò significa che anche gli itinerari che hanno registrato il tutto esaurito devono avere un'offerta.

Un'offerta senza priceSpecification è considerata non disponibile. Le offerte non disponibili devono essere specificate come "Offer.availability= https://schema.org/SoldOut".

Offer.availability non deve essere specificato se l'offerta è annotata con un priceSpecification. valido.

Esempio di availability

Di seguito è riportato un esempio di base per mostrare l'indisponibilità delle camere di hotel. Devi includere il tipo di letto, il numero di letti e i dettagli di occupazione per la camera specificata.

Microdati

<div itemscope itemtype="https://schema.org/HotelRoom https://schema.org/Product">
  <span itemprop="name">Deluxe Room, 1 King Bed</span>
  <meta itemprop="identifier" content="hotel-room-id-1234"/>

  <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
    <span itemprop="numberOfBeds">1</span>
    <span itemprop="typeOfBed">KING</span>
  </div>
  <div itemprop="bed" itemscope itemtype="https://schema.org/BedDetails">
    <span itemprop="numberOfBeds">1</span>
    <span itemprop="typeOfBed">SINGLE</span>
  </div>

  <div itemprop="occupancy" itemscope itemtype="https://schema.org/QuantitativeValue">
    Occupancy: <span itemprop="value">2</span>
  </div>

  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
    Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
    Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
    <meta itemprop="availability" content="https://schema.org/SoldOut"/>
    Sold Out

    <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
      <!-- Price Specification details -->
    </div>
  </div>
</div>

JSON-LD (ritirato)

{
  "@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 struttura

I servizi possono essere specificati nel tipo Hotel o HotelRoom utilizzando la proprietà amenityFeature. Devi utilizzare la proprietà containsPlace per specificare i servizi forniti nella camera.

{
  "@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
      }
    ]
  }
}

Sintassi

Le proprietà amenityFeature e containsPlace hanno la seguente sintassi:

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  ...
  <!-- Hotel Amenity -->
  <div itemprop="amenityFeature" itemscope itemtype="https://schema.org/LocationFeatureSpecification">
    <span itemprop="name">HotTub</span>
    <div itemprop="hoursAvailable" itemscope itemtype="https://schema.org/OpeningHoursSpecification">
      <time itemprop="opens" content="HH:mm:ss">HH:mm:ss</time>
      <time itemprop="closes" content="HH:mm:ss">HH:mm:ss</time>
    </div>
  </div>

  <div itemprop="containsPlace" itemscope itemtype="https://schema.org/HotelRoom">
    <!-- Room Amenity -->
    <div itemprop="amenityFeature" itemscope itemtype="https://schema.org/LocationFeatureSpecification">
      <span itemprop="name">Minibar</span>
      <meta itemprop="value" content="boolean"/>
    </div>
  </div>
</div>

JSON-LD (obsoleto)

{
  "@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"
    }
  }
}

Comfort

I seguenti comfort sono consentiti e definiti nella proprietà name.

Attributo Obbligatorio? Tipo Descrizione
amenityFeature.AC Optional boolean Indica se la proprietà è dotata di aria condizionata.
amenityFeature.AirportShuttle Optional boolean Indica se l'host offre un servizio di trasporto da e per l'aeroporto o altri terminal.
amenityFeature.Balcony Optional boolean Indica se l'alloggio è dotato di balcone.
amenityFeature.BeachAccess Optional boolean Indica se la proprietà ha accesso a una spiaggia pubblica nelle vicinanze.
amenityFeature.ChildFriendly Optional boolean Indica se la proprietà è adatta ai bambini.
amenityFeature.Crib Optional boolean Indica se la proprietà fornisce una culla.
amenityFeature.Elevator Optional boolean Indica se la proprietà è dotata di ascensore.
amenityFeature.FirePlace Optional boolean Indica se l'alloggio è dotato di camino.
amenityFeature.FreeBreakfast Optional boolean Indica se la colazione è inclusa nel prezzo per tutti gli ospiti. Utilizza le funzionalità delle tariffe per indicare se la colazione è inclusa solo per piani tariffari specifici.
amenityFeature.GymFitnessEquipment Optional boolean Indica se la proprietà ha una palestra o qualsiasi attrezzatura per il fitness.
amenityFeature.Heating Optional boolean Indica se l'alloggio è dotato di riscaldamento.
amenityFeature.HotTub Optional boolean Indica se la proprietà è dotata di vasca idromassaggio.
amenityFeature.InstantBookable Optional boolean Indica se la proprietà può essere prenotata istantaneamente tramite la procedura di pagamento. L'alternativa è attendere l'approvazione.
amenityFeature.IroningBoard Optional boolean Indica se la proprietà è dotata di ferro e asse da stiro.
amenityFeature.Kitchen Optional boolean Indica se l'alloggio è dotato di cucina.
amenityFeature.Microwave Optional boolean Indica se l'alloggio è dotato di forno a microonde.
amenityFeature.OpenAirBath(Hotels only) Optional boolean Indica se l'alloggio dispone di una vasca all'aperto. Se specificato a livello di camera, il bagno deve essere privato solo per gli occupanti della camera.
amenityFeature.OutdoorGrill Optional boolean Indica se la proprietà ha una griglia per barbecue.
amenityFeature.OvenStove Optional boolean Indica se la proprietà è dotata di fornello.
amenityFeature.Patio Optional boolean Indica se la proprietà è dotata di un patio.
amenityFeature.Pool Optional boolean Indica se l'alloggio è dotato di piscina.
amenityFeature.PrivateBeachAccess Optional boolean Indica se la proprietà ha accesso dedicato a una spiaggia non pubblica.
amenityFeature.SelfCheckinCheckout Optional boolean Indica se la proprietà supporta il self check-in e il self check-out.
amenityFeature.WasherDryer Optional boolean Indica se l'alloggio è dotato di lavatrice/asciugatrice.
amenityFeature.Wifi Optional boolean Indica se la proprietà è dotata di Wi-Fi.
amenityFeature.Smoking Optional boolean Indica se la struttura ricettiva consente di fumare.
amenityFeature.InternetType Optional Enum

Il tipo di connessione a internet disponibile nella proprietà.

I valori supportati sono:

  • FREE
  • PAID
  • NONE
amenityFeature.ParkingType Optional Enum

Il tipo di parcheggio disponibile nella proprietà.

I valori supportati sono:

  • FREE
  • PAID
  • NONE
amenityFeature.PoolType Optional Enum

Il tipo di piscina disponibile nella proprietà.

I valori supportati sono:

  • INDOOR
  • OUTDOOR
  • NONE
amenityFeature.RoomStyle Optional Enum

Indica se la stanza è progettata in stile giapponese.

I valori supportati sono:

  • WESTERN
  • JAPANESE
  • JAPANESE_WESTERN
amenityFeature.LicenseNum Required string

Numero di licenza dell'attività da mostrare sulla proprietà in alcune regioni del mondo. Può essere ripetuto e, se esistono più licenze, è consigliabile aggiungere il proprietario o l'autorità della licenza. Ad esempio, "Paris: 123456ABC"

Proprietà

Di seguito sono riportate le proprietà amenityFeature:

Proprietà Obbligatorio? Tipo Descrizione
amenityFeature Optional LocationFeatureSpecification

I servizi forniti nell'hotel o nella camera. Può essere specificato utilizzando la proprietà amenityFeature . I servizi devono essere disponibili per tutti gli ospiti dell'hotel, indipendentemente dal piano tariffario selezionato. amenityFeature viene specificato utilizzando il valore della proprietà LocationFeatureSpecification.

I servizi possono essere specificati a livello di Hotel o HotelRoom.

containsPlace Optional LocationFeatureSpecification

I servizi forniti nell'hotel o nella camera a tutti gli ospiti dell'hotel. Può essere specificato utilizzando amenityFeature . I servizi devono essere disponibili per tutti gli ospiti nella camera d'hotel, indipendentemente dal piano tariffario selezionato.

Hotel.containsPlace.amenityFeature sono i servizi forniti nell'hotel.

HotelRoom.containsPlace.amenityFeature sono i servizi forniti nella camera.

Esempio di comfort

Di seguito è riportato un esempio di base di un hotel con piscina aperta dalle 10:00 alle 22:00 e senza disponibilità di palestra nella struttura. La camera d'hotel è non fumatori e dispone di un minibar.

Microdati

<div itemscope itemtype="https://schema.org/Hotel">
  <span itemprop="name">ACME Hotel</span>

  <!-- Amenities -->
  <div itemprop="amenityFeature" itemscope itemtype="https://schema.org/LocationFeatureSpecification">
    <span itemprop="name">HotTub</span>
    <div itemprop="hoursAvailable" itemscope itemtype="https://schema.org/OpeningHoursSpecification">
      Open from <time itemprop="opens" content="10:00:00">10:00</time>
      to <time itemprop="closes" content="22:00:00">22:00</time>
    </div>
  </div>

  <div itemprop="amenityFeature" itemscope itemtype="https://schema.org/LocationFeatureSpecification">
    <span itemprop="name">GymFitnessEquipment</span>:
    <meta itemprop="value" content="false"/> No
  </div>

  <div itemprop="containsPlace" itemscope itemtype="https://schema.org/HotelRoom">
    <!-- Room Amenities -->
    <div itemprop="amenityFeature" itemscope itemtype="https://schema.org/LocationFeatureSpecification">
      <span itemprop="name">Minibar</span>:
      <meta itemprop="value" content="true"/> Yes
    </div>
    <div itemprop="amenityFeature" itemscope itemtype="https://schema.org/LocationFeatureSpecification">
      <span itemprop="name">Smoking</span>:
      <meta itemprop="value" content="false"/> No
    </div>

    <div itemprop="offers" itemscope itemtype="https://schema.org/Offer https://schema.org/LodgingReservation">
      <meta itemprop="identifier" content="rate-plan-id-of-member-rate"/>
      Check-in: <time itemprop="checkinTime" content="2023-03-10T15:00:00">Mar 10, 2023 3:00 PM</time>
      Check-out: <time itemprop="checkoutTime" content="2023-03-16T10:00:00">Mar 16, 2023 10:00 AM</time>
      <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
        <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price">1222.74</span>
      </div>
    </div>
  </div>
</div>

JSON-LD (obsoleto)

{
  "@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"
      }
    }
  }
}

Gli attributi HTML5 personalizzati con il prefisso data-nav- vengono utilizzati per annotare gli elementi interattivi e dichiarare gli stati della pagina, consentendo al crawler di navigare nel flusso di prenotazione.

Il tagging di navigazione utilizza la seguente sintassi degli attributi:

Attributi

<body data-nav-stage="stage_name">
  ...
  <button data-nav-criticalpath="true"
          data-nav-interactiontype="CLICK"
          data-nav-interactionorder="1">
    Action
  </button>
  ...
  <button data-nav-close="true">Dismiss</button>
</body>

Di seguito sono riportati gli attributi di navigazione:

Attributo Valori Descrizione
data-nav-stage landing, room-selection, checkout, confirmation Dichiara lo stato attivo della canalizzazione per i crawler. Allegato a <body> o al wrapper di primo livello.
data-nav-stage-final true, false Indicatore dell'ultima pagina del flusso (valore predefinito false). Se in una pagina non sono presenti elementi con data-nav-criticalpath="true", il crawler la considera automaticamente l'ultima pagina del flusso.
data-nav-criticalpath true, false Contrassegna un elemento con cui il crawler DEVE interagire per raggiungere la pagina di prenotazione finale. Se in una pagina non sono presenti elementi con data-nav-criticalpath="true", il crawler la considera automaticamente l'ultima pagina del flusso.
data-nav-interactiontype CLICK, SELECT Specifica l'azione di interazione. CLICK è per pulsanti/link. SELECT è per i menu a discesa/gruppi di pulsanti di opzione.
data-nav-interactionorder integer Fornisce una sequenza di esecuzione per la navigazione in più passaggi. I numeri più bassi vengono eseguiti per primi.
data-nav-close true Contrassegna i pulsanti di chiusura su popup, overlay del banner dei cookie o modali di upsell.

Di seguito sono riportati alcuni esempi di tagging della navigazione.

Navigazione con i clic

Di seguito è riportato un esempio di base di navigazione con clic che dichiara la fase della canalizzazione.

<body data-nav-stage="room-selection" data-nav-stage-final="false">
  <h1>Select Your Room</h1>
  
  <!-- Crawler needs to click this to proceed -->
  <button data-nav-criticalpath="true"
          data-nav-interactiontype="CLICK"
          data-nav-interactionorder="1">
    Select & Proceed
  </button>
</body>

Navigazione in più passaggi

Di seguito è riportato un esempio di navigazione in più passaggi che include un banner dei cookie, l'apertura di una sezione a fisarmonica e un clic.

<div data-nav-stage="landing" data-nav-stage-final="false">
  <!-- Hotel, LodgingReservation info, and Offer price are expected to be included in this page -->

  <!-- Step 1: Accept cookies -->
  <div class="cookie-banner">
    <p>We use cookies to improve your experience.</p>
    <button data-nav-close="true"
            data-nav-criticalpath="true"
            data-nav-interactiontype="CLICK"
            data-nav-interactionorder="1">Accept cookies</button>
  </div>

  <!-- Step 2: Open accordion to reveal pricing (Crucial for making prices visible in Mobile UIs) -->
  <div data-nav-criticalpath="true"
       data-nav-interactiontype="CLICK"
       data-nav-interactionorder="2"
       class="accordion-header">
    <span>View Room Rates</span>
  </div>


  <!-- Step 3: Book the room -->
  <div class="accordion-content">
    <button data-nav-criticalpath="true"
            data-nav-interactiontype="CLICK"
            data-nav-interactionorder="3">
      Book Now
    </button>
  </div>
</div>

Dichiarazione della pagina finale

Di seguito è riportato un esempio di dichiarazione dell'ultima pagina del flusso di prenotazione.

<!-- Marks this as the final confirmation page where price is extracted -->
<!-- Hotel, LodgingReservation info, and Offer price are expected to be included in this page -->
<div data-nav-stage="confirmation" data-nav-stage-final="true">
  <h1>Grand View Hotel</h1>
  <!-- Price and other details here -->
</div>