Tài liệu tham khảo về dữ liệu có cấu trúc về giá khách sạn

Trang này cung cấp thông tin tham khảo để thêm mã đánh dấu dữ liệu có cấu trúc vào dữ liệu về giá của khách sạn.

Tổng quan

Dữ liệu có cấu trúc về giá khách sạn được dùng để giải thích, xác thực và hiển thị chi tiết giá khách sạn được đăng trên trang web của bạn, bất kể giao diện người dùng. Điều này cũng bao gồm giá cơ bản, giá, phòng, phí và thuế cũng như các trường liên quan đến giá.

Google khuyến khích các đối tác chú thích trang web của họ bằng dữ liệu có cấu trúc được tiêu chuẩn hoá mà trình thu thập thông tin có thể đọc được; do schema.org cung cấp, để trích xuất giá một cách chính xác từ các trang web của bạn.

Điều này giúp mở rộng quy trình xác thực độ chính xác về giá bằng cách cải thiện độ tin cậy của trình thu thập dữ liệu. Lợi ích cho bạn là tăng số lượt xác thực độ chính xác về giá và khả năng gỡ lỗi trực tiếp các vấn đề về độ chính xác về giá, đồng thời có được điểm nhất quán về độ chính xác về giá.

Nếu mới làm quen với dữ liệu có cấu trúc, hãy tìm hiểu thêm về Từ vựng và định dạng dữ liệu có cấu trúc.

Google Khách sạn đề xuất định dạng JSON-LD để chú thích các trang trên trang web của bạn. Tham khảo phần Các định dạng được hỗ trợ để tìm hiểu thêm về các định dạng được chấp nhận khác. Tài liệu này cung cấp nội dung tham khảo chi tiết dành riêng cho việc triển khai dữ liệu có cấu trúc trong Khách sạn.

Dữ liệu có cấu trúc Hotel được dùng để chú thích các trường dành riêng cho khách sạn trong trang web của bạn. Dữ liệu có cấu trúc Hotel có các thuộc tính sau:

Dữ liệu có cấu trúc HotelRoom được dùng để chú thích các trường dành riêng cho phòng trong trang web của bạn.

Dữ liệu có cấu trúc HotelRoom có các thuộc tính sau:

Dữ liệu có cấu trúc về khách sạn

Các thuộc tính nameaddress

Các thuộc tính nameaddress được dùng để chú thích tên và vị trí của khách sạn. Sau đây là các thuộc tính nameaddress:

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

Cú pháp

Thuộc tính nameaddress sử dụng cú pháp sau:

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

Thuộc tính

Sau đây là các thuộc tính nameaddress:

Thuộc tính Bắt buộc? Loại Mô tả
Hotel.name Required string Tên khách sạn
Hotel.identifier Required string

Mã khách sạn của đối tác.

Giá trị nhận dạng phải là một chuỗi riêng biệt cho mỗi khách sạn và phải khớp chính xác với chuỗi được dùng trong nguồn cấp dữ liệu giá.

Hotel.address Optional PostalAddress Địa chỉ hoặc vị trí của khách sạn.

Ví dụ

Tên và địa chỉ

Sau đây là ví dụ cơ bản về cách thêm chú giải nameaddress:

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

Tài sản makesOffer

Chú thích makesOffer được dùng để đánh dấu hành trình lưu trú tại khách sạn.

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

Cú pháp

Thuộc tính makesOffer sử dụng cú pháp sau:

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

Thuộc tính

Sau đây là các thuộc tính makesOffer:

Thuộc tính Bắt buộc? Loại Mô tả
makesOffer Required Offer and LodgingReservation

(Các) ưu đãi của khách sạn cho hành trình đã biết.

Thuộc tính makesOffer có thể chứa một mảng các ưu đãi.

LodgingReservation.checkinTime Required DateTime

Giờ nhận phòng theo múi giờ của người dùng. Nếu múi giờ của bạn không được đề cập thì múi giờ của khách sạn sẽ được xem xét.

LodgingReservation.checkoutTime Required DateTime

Thời gian trả phòng theo múi giờ của người dùng. Nếu múi giờ của bạn không được đề cập thì múi giờ của khách sạn sẽ được xem xét.

Ví dụ:

makesOffer

Sau đây là ví dụ cơ bản để chú thích ưu đãi khách sạn. Bạn có thể chỉ định nhiều ưu đãi cho một hành trình nhưng trước tiên, bạn nên chỉ định mức giá xuất hiện trên Google, sau đó là các mức giá khác. Số tiền của giá mà bạn chỉ định đã bao gồm tất cả các khoản thuế hiện hành.

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

Tài sản Hotel priceSpecification

Thuộc tính này được dùng để chú thích thông tin về giá cho khách sạn hoặc phòng khách sạn. Bạn cần có thêm 2 thuộc tính để chú thích giá và thuế. Bạn nên sử dụng CompoundPriceSpecification để chỉ định tổng thông tin về giá, chẳng hạn như giá cơ sở, thuế và chiết khấu. Sử dụng UnitPriceSpecification để chỉ định các loại thuế bổ sung hoặc các loại phí đặc biệt, chẳng hạn như ResortFee, GenericTaxServiceFee. Thuộc tính priceSpecification được đi kèm với thuộc tính Offer.

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

Cú pháp

Thuộc tính Hotel priceSpecification sử dụng cú pháp sau:

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

Vi dữ liệu

  <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>

Thuộc tính

Sau đây là các thuộc tính hotel priceSpecification:

Thuộc tính Bắt buộc? Loại Mô tả
Hotel.Offer.priceSpecification.price Required float

Tổng giá bao gồm thuế và phí của khách sạn.

Bạn phải luôn chú thích giá của Google trên trang đích cùng với thông tin chi tiết đầy đủ về giá. Việc chú thích thông tin chi tiết về giá giúp bạn hoàn tất quy trình kiểm tra độ chính xác về giá. Google chấp nhận cả giá ở cấp khách sạn và giá ở cấp phòng.

Hotel.Offer.priceSpecification.priceCurrency Required currency Mã đơn vị tiền tệ gồm ba chữ cái cho mức giá đã chỉ định. Ví dụ: "USD" .
Hotel.Offer.priceSpecification.priceComponent Optional UnitPriceSpecification[]

Bảng giá chi tiết bao gồm thuế và phí của khách sạn. Có hai loại dữ liệu có cấu trúc về giá:

  • CompoundPriceSpecification cung cấp thông tin chi tiết về giá, bao gồm:

    • Giá cơ sở: Giá cơ bản mỗi đêm

    • Thuế cho mỗi lượt lưu trú: Giá mỗi đêm đã bao gồm thuế.

    • Phí tính theo người lưu trú: Giá mỗi đêm cho mỗi người lưu trú.

    • Chiết khấu: Số tiền khấu trừ.

  • UnitPriceSpecification được dùng để chỉ định loại phí. Bạn nên thêm giá trị PriceComponentTypeEnumeration để chỉ định các khoản phí bổ sung.

    Các giá trị cho PriceComponentTypeEnumeration là:

    • Discount: Chiết khấu chung cho giá.

    • ResortFee: Đây là khoản phí bổ sung mà bạn phải thanh toán tại khách sạn. Thông tin này có thể thay đổi tuỳ theo loại cơ sở lưu trú.

    • GenericTax: Đây là một khoản thuế bổ sung khác.

    • ServiceFee: Đây là khoản phí bổ sung do kênh đặt phòng tính.

    • TransferFee: Đây là khoản phí bắt buộc trên thực tế để di chuyển đến khách sạn, do khách sạn hoặc kênh đặt phòng thu.

Bạn phải đặt các giá trị trong thuộc tính priceComponentType . Bạn phải cung cấp tất cả các giá trị nếu chọn thêm UnitPriceSpecification và phải chỉ định trong thuộc tính UnitPriceSpecification.

Hotel.Offer.priceSpecification.priceComponent. potentialAction Optional PayAction

Điểm thanh toán của khách sạn.Quy trình thanh toán tại khách sạn bao gồm giá được tính vào thời gian trả phòng trên trang web đặt phòng và tại khách sạn trong thời gian nhận phòng.

Bạn nên sử dụng thuộc tính potentialAction được đi kèm với trường "recipient" của PayAction để cho biết điểm thanh toán. Tham khảo PayAction để tìm hiểu thêm về thuộc tính recipient.

Google hỗ trợ 2 chế độ cài đặt sau đây cho người nhận PayAction:

  • recipient.@type = "OnlineBusiness" là khoản thanh toán mà người bán trực tuyến thu tại thời điểm đặt phòng. Đây là chế độ cài đặt mặc định nếu bạn không chỉ định potentialAction.

  • recipient.@type = "Hotel" là khoản thanh toán được thu tại khách sạn.

Ví dụ

Ví dụ về JSON-LD

Giá

Sau đây là ví dụ cơ bản về cách thêm dữ liệu có cấu trúc về giá vào trang web của bạn. Bạn có thể thêm nhiều ưu đãi ở cấp khách sạn vào thuộc tính makesOffer.

Các loại PostalAddress như addressCountry, postalCode, streetAddress và các trường khác là bắt buộc nếu bạn chọn chỉ định thuộc tính address. Giá do Google hiển thị phải được liệt kê đầu tiên trong thuộc tính makesOffer. Số tiền giá mà bạn chỉ định bao gồm tất cả các khoản thuế hiện hành.

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

Bảng phân tích giá

Sau đây là ví dụ về thuộc tính priceSpecification có thông tin chi tiết về giá. Mức giá cơ bản, các loại thuế như thuế chung và chiết khấu được xác định bằng thành phần UnitPriceSpecification. Hãy nhớ đặt trường priceComponentType bằng các giá trị tương ứng với thành phần UnitPriceSpecification.

Bạn nên chỉ định tổng giá cho thời gian lưu trú trong thuộc tính CompoundPriceSpecification. Bạn nên chỉ định thông tin chi tiết về giá trong thuộc tính 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"
        }
      ]
    }
  }
}

Điểm thanh toán

Sau đây là ví dụ về quy cách potentialAction khi sử dụng loại người nhận của PayAction.

Tổng giá của gói là 11.700.000 VND và trang web trực tuyến tính một phần tổng giá là 11.500.000 VND tại thời điểm đặt phòng được chỉ định bằng "@type": "OnlineBusiness" và người dùng phải thanh toán 200.000 VND còn lại tại thời điểm nhận phòng tại khách sạn được chỉ định bằng @type": "Hotel".

Bạn phải chỉ định thành phần potentialAction để chia nhỏ khoản thanh toán tại thời điểm đặt phòng và tại khách sạn. Nếu bạn không chỉ định, thì payAction sẽ coi khoản thanh toán tại thời điểm đặt phòng là phương thức thanh toán mặc định.

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

Ví dụ về vi dữ liệu

Bảng phân tích giá

Sau đây là ví dụ về thuộc tính priceSpecification có thông tin chi tiết về giá. Mức giá cơ bản, các loại thuế như thuế chung và chiết khấu được xác định bằng thành phần UnitPriceSpecification. Hãy nhớ đặt thuộc tính name bằng các giá trị tương ứng với thành phần UnitPriceSpecification.

Bạn nên chỉ định tổng giá cho thời gian lưu trú trong thuộc tính CompoundPriceSpecification. Bạn nên chỉ định thông tin chi tiết về giá trong thuộc tính 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>

Tài sản hasMerchantReturnPolicy

Thuộc tính này được dùng để chú thích chính sách hoàn tiền của người bán trong hành trình.

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

Cú pháp

hasMerchantReturnPolicy có cú pháp sau:

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
    }
  }
}

Thuộc tính

Sau đây là thuộc tính hasMerchantReturnPolicy:

Thuộc tính Bắt buộc? Loại Mô tả
Offer.hasMerchantReturnPolicy Optional MerchantReturnPolicy

Chính sách hoàn tiền của người bán. Đối tác nên sử dụng MerchantReturnPolicy.restockingFee để cho biết chính sách huỷ không hoàn lại toàn bộ số tiền cho thời gian lưu trú.

Nếu bạn không chỉ định hoặc để trống hasMerchantReturnPolicy, thì hệ thống sẽ giả định rằng số tiền không hoàn lại. Bạn có thể chỉ định chính sách không hoàn tiền bằng thuộc tính returnPolicyCategory: MerchantReturnNotPermitted.

Ví dụ:

Chính sách trả lại hàng

Sau đây là ví dụ cơ bản về dữ liệu có cấu trúc cho một khách sạn có thông tin chi tiết về phòng và tổng giá bao gồm thuế và phí. Ví dụ này biểu thị một lượt lưu trú có thể huỷ mà không bị tính phí cho đến 11 giờ tối (giờ UTC) ngày 18 tháng 12 năm 2023. Đối tác nên sử dụng "MerchantReturnPolicy.restockingFee" để cho biết chính sách huỷ không hoàn lại toàn bộ số tiền lưu trú. Giá trị mặc định của restockingFee là 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
    }
  }
}

Tài sản eligibleCustomerType

Bạn có thể dùng thuộc tính này để chú thích các chương trình phần thưởng dành cho khách hàng là thành viên của khách sạn.

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

Cú pháp

Thuộc tính eligibleCustomerType có cú pháp sau:

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

Thuộc tính

Sau đây là thuộc tính eligibleCustomerType:

Thuộc tính Bắt buộc? Loại Mô tả
Offer.eligibleCustomerType Optional BusinessEntityType

Chương trình khách hàng thân thiết hoặc phần thưởng dành cho thành viên mà khách hàng được hưởng.

Nhiều trang khách sạn hiển thị giá dành cho thành viên cùng với giá công khai để khuyến khích người dùng đăng ký chương trình khách hàng thân thiết. Bạn có thể chỉ định giá chỉ dành cho một số đối tượng nhất định, chẳng hạn như giá dành cho thành viên, bằng cách đặt thuộc tính Offer.eligibleCustomerType.

Ví dụ

Giá dành cho thành viên

Sau đây là ví dụ cơ bản về quy cách giá dành cho thành viên hoặc giá có chiết khấu cho chương trình khách hàng thân thiết. Khách hàng là "thành viên chương trình phần thưởng" của khách sạn.

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

Giá dành cho thành viên và giá thông thường

Đây là ví dụ về cả chú thích giá thông thường và giá dành cho thành viên. Giá dành cho thành viên sẽ được niêm yết trước, sau đó là giá thông thường.

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

Dữ liệu có cấu trúc HotelRoom

Tài sản offers

Chú thích offers được dùng để đánh dấu hành trình của phòng. Bạn nên sử dụng thuộc tính offers cho quy cách 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": {...}
}

Cú pháp

Thuộc tính offers có cú pháp sau:

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

Thuộc tính

Sau đây là các thuộc tính offers:

Thuộc tính Bắt buộc? Loại Mô tả
offers Required Offer and LodgingReservation

Quy cách về giá phòng cho hành trình đã biết.

Thuộc tính offers có thể chứa một mảng các sản phẩm.

LodgingReservation.checkinTime Required DateTime

Giờ nhận phòng theo múi giờ của người dùng. Nếu múi giờ của bạn không được đề cập thì múi giờ của khách sạn sẽ được xem xét.

LodgingReservation.checkoutTime Required DateTime

Thời gian trả phòng theo múi giờ của người dùng. Nếu múi giờ của bạn không được đề cập thì múi giờ của khách sạn sẽ được xem xét.

Ví dụ:

phiếu mua hàng

Sau đây là ví dụ cơ bản về cách chỉ định offers trong thuộc tính 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"
    }
  }
}

Thuộc tính bedoccupancy

Thuộc tính bed được dùng để chú thích loại giường và số lượng giường có trong phòng. Thuộc tính occupancy được dùng để chú thích số lượng khách trong phòng. Bạn có thể chỉ định các thuộc tính bedoccupancy bằng thuộc tính 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"
  }
}

Cú pháp

Thuộc tính bedoccupancy có cú pháp sau:

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

Bạn chỉ có thể đặt các thuộc tính bedoccupancy bằng cách sử dụng thuộc tính HotelRoom. Bạn có thể thêm thông tin cụ thể về phòng, bao gồm cả giá ở cấp phòng, vào thuộc tính Hotel thông qua thuộc tính containsPlace. Tham khảo ví dụ về quy cách HotelHotelRoom.

Thuộc tính

Sau đây là các thuộc tính bedoccupancy:

Thuộc tính Bắt buộc? Loại Mô tả
HotelRoom.bed Optional (Recommended) bed

Loại giường có trong cơ sở lưu trú và số người lưu trú trong phòng.

Sau đây là các giá trị được hỗ trợ:

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

Số lượng khách trong phòng khách sạn. Loại cho số người lưu trú là QuantitativeValue.

Số người lưu trú là một thuộc tính rõ ràng của HotelRoom, không phải của một Offer cụ thể. Bạn chỉ nên gắn thẻ giá cho số lượng người lưu trú được yêu cầu.

containsPlace Optional (Recommended) LocationFeatureSpecification

Bạn có thể dùng thuộc tính này để chú thích giá ở cấp phòng được liên kết với các phòng cụ thể. Bạn cũng có thể dùng thuộc tính này để chỉ định các tiện nghi trong phòng.

Tìm hiểu thêm về cách sử dụng containsPlace trong thuộc tính amenityFeature.

Ví dụ

HotelRoom

Sau đây là ví dụ cơ bản về giường và số người lưu trú cho một quy cách phòng.

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

Khách sạn và HotelRoom

Sau đây là ví dụ về cách chú thích các thuộc tính HotelHotelRoom cùng với bed, occupancypriceSpecification.

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

Tài sản HotelRoom priceSpecification

Quy cách về giá phòng khách sạn tương tự như quy cách về giá khách sạn.Điểm khác biệt là giá phòng được chỉ định bằng thuộc tính Product.offers thay vì thuộc tính Hotel.makesOffer.

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

Cú pháp

Thuộc tính priceSpecification cho phòng khách sạn có cú pháp sau:

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

Thuộc tính

Sau đây là các thuộc tính HotelRoom priceSpecification:

Thuộc tính Bắt buộc? Loại Mô tả
Hotel.Offer.priceSpecification.price Required float

Giá mỗi phòng bao gồm thuế và phí cho Product.

Bạn phải luôn chú thích giá của Google trên trang đích cùng với thông tin chi tiết đầy đủ về giá. Việc chú thích thông tin chi tiết về giá giúp bạn hoàn tất quy trình kiểm tra độ chính xác về giá. Google chấp nhận cả giá ở cấp khách sạn và giá ở cấp phòng.

Hotel.Offer.priceSpecification.priceCurrency Required currency Mã đơn vị tiền tệ gồm ba chữ cái cho mức giá đã chỉ định. Ví dụ: "USD" .
Hotel.Offer.priceSpecification.priceComponent Optional UnitPriceSpecification[]

Bảng giá chi tiết bao gồm thuế và phí cho phòng khách sạn và số người lưu trú có ưu đãi được liên kết với HotelRoomProduct. Có hai loại dữ liệu có cấu trúc về giá:

  • CompoundPriceSpecification cung cấp thông tin chi tiết về giá, bao gồm:

    • Giá cơ sở: Giá cơ bản mỗi đêm

    • Thuế cho mỗi lượt lưu trú: Giá mỗi đêm đã bao gồm thuế.

    • Phí tính theo người lưu trú: Giá mỗi đêm cho mỗi người lưu trú.

      occupancy là một thuộc tính tường minh của HotelRoom, không phải cho một Offer cụ thể. Bạn chỉ nên gắn thẻ giá cho số lượng người lưu trú được yêu cầu.

    • Chiết khấu: Số tiền khấu trừ.

  • UnitPriceSpecification được dùng để chỉ định loại phí. Bạn nên thêm giá trị PriceComponentTypeEnumeration để chỉ định các khoản phí bổ sung.

    Các giá trị cho PriceComponentTypeEnumeration là:

    • Discount: Chiết khấu chung cho giá.

    • ResortFee: Đây là khoản phí bổ sung mà bạn phải thanh toán tại khách sạn. Thông tin này có thể thay đổi tuỳ theo loại cơ sở lưu trú.

    • GenericTax: Đây là một khoản thuế bổ sung khác.

    • ServiceFee: Đây là khoản phí bổ sung do kênh đặt phòng tính.

    Bạn phải đặt các giá trị trong thuộc tính name của UnitPriceSpecification. Bạn phải cung cấp tất cả các giá trị nếu chọn thêm thông tin chi tiết về giá và bạn phải chỉ định các giá trị này trong thành phần UnitPriceSpecification.

Ví dụ

Tổng giá phòng

Sau đây là ví dụ cơ bản về cách xác định tổng giá cho thời gian lưu trú và giá theo số người lưu trú.

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

Bảng phân tích giá phòng

Sau đây là ví dụ về giá theo phòng hoặc gói. Thông tin chi tiết về giá được xác định cho loại phòng, chẳng hạn như phòng Deluxe và loại bedoccupancy, chẳng hạn như giường KINGSINGLE, cũng như sức chứa là 2 khách.

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

Tài sản includesObject

Thuộc tính này dùng để chú thích các dịch vụ theo mức giá cụ thể được cung cấp trong khách sạn hoặc phòng, chẳng hạn như các lựa chọn bữa ăn và dịch vụ đỗ xe. Bạn có thể chú thích includesObject trong thuộc tính Hotel hoặc HotelRoom.

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

Cú pháp

includesObject có cú pháp sau cho các dịch vụ theo mức giá cụ thể có trong phòng:

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

Thuộc tính

includesObject có thuộc tính sau:

Thuộc tính Bắt buộc? Loại Mô tả
Offer.includesObject Optional TypeAndQuantityNode

Các dịch vụ được cung cấp trong khách sạn hoặc phòng.

Các tính năng dành riêng cho mức giá được cung cấp bằng thuộc tính includesObject. Bạn nên sử dụng trường tên trên "TypeAndQuantityNode.typeOfGood" để cho biết loại dịch vụ, chẳng hạn như dịch vụ đỗ xe hoặc dịch vụ bữa ăn.

Các tính năng dành riêng cho mức giá cũng có thể được đưa vào các ưu đãi ở cấp cơ bản hoặc có thể được chỉ định là gói bổ sung với mức giá bổ sung.

includesObject yêu cầu một giá trị thuộc kiểu TypeAndQuantityNode như sau:

  • BreakfastIncluded
  • DinnerIncluded
  • Valet
  • MealCredit

Ví dụ:

Dịch vụ

Sau đây là ví dụ cơ bản về các tính năng theo đơn giá cho dịch vụ đỗ xe và dịch vụ ăn uống. Bạn nên chỉ định các tính năng dành riêng cho mức giá bằng thuộc tính "Offer.includesObject". Bạn nên dùng trường tên trên "TypeAndQuantityNode.typeOfGood" để cho biết loại dịch vụ.

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

Tài sản availability

Thuộc tính offer.availability được dùng để chú thích các hành trình đã bán hết cho phòng khách sạn.

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

Cú pháp

Thuộc tính availability có cú pháp sau:

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

Thuộc tính

Sau đây là thuộc tính availability:

Thuộc tính Bắt buộc? Loại Mô tả
Offer.availability Optional ItemAvailability

Tình trạng còn phòng của khách sạn hoặc phòng.

Tỷ lệ được trích xuất từ schema.org/Offer và thông tin về tỷ lệ không được tạo bằng schema.org/Hotel hoặc schema.org/HotelRoom. Điều này có nghĩa là ngay cả những hành trình đã bán hết cũng phải có ưu đãi.

Một mặt hàng không có priceSpecification được coi là không có hàng. Bạn phải chỉ định ưu đãi không có sẵn là "Offer.availability= https://schema.org/SoldOut".

Bạn không cần chỉ định Offer.availability nếu ưu đãi được chú thích bằng priceSpecification. hợp lệ

Ví dụ:

Phạm vi cung cấp

Sau đây là một ví dụ cơ bản minh hoạ tình trạng phòng khách sạn không có sẵn. Bạn nên thêm loại giường, số giường và thông tin chi tiết về số người lưu trú cho phòng được chỉ định.

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

Tài sản amenityFeature

Bạn có thể chỉ định tiện nghi ở loại Hotel hoặc HotelRoom bằng cách sử dụng thuộc tính amenityFeature. Bạn nên dùng thuộc tính containsPlace để chỉ định các tiện nghi được cung cấp trong phòng.

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

Cú pháp

Thuộc tính amenityFeaturecontainsPlace có cú pháp sau:

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

Tiện nghi

Các tiện nghi sau đây được cho phép và xác định trong thuộc tính name.

Thuộc tính Bắt buộc? Loại Mô tả
amenityFeature.AC Optional boolean Cơ sở lưu trú có máy điều hoà không khí hay không.
amenityFeature.AirportShuttle Optional boolean Cơ sở lưu trú có cung cấp dịch vụ đưa đón đến sân bay và các nhà ga khác hoặc theo chiều ngược lại hay không.
amenityFeature.Balcony Optional boolean Cơ sở lưu trú có ban công hay không.
amenityFeature.BeachAccess Optional boolean Cơ sở lưu trú có lối ra bãi biển công cộng gần khuôn viên hay không.
amenityFeature.ChildFriendly Optional boolean Cơ sở lưu trú có phù hợp với trẻ em hay không.
amenityFeature.Crib Optional boolean Cơ sở lưu trú có giường cũi cho trẻ em hay không.
amenityFeature.Elevator Optional boolean Cơ sở lưu trú có thang máy hay không.
amenityFeature.FirePlace Optional boolean Cơ sở lưu trú có lò sưởi hay không.
amenityFeature.FreeBreakfast Optional boolean Cơ sở lưu trú có phục vụ bữa sáng miễn phí cho tất cả khách hay không. Sử dụng các tính năng về giá để cho biết bữa sáng chỉ được cung cấp trong một số gói giá cụ thể.
amenityFeature.GymFitnessEquipment Optional boolean Cơ sở lưu trú có phòng tập thể dục hoặc bất kỳ thiết bị thể dục nào hay không.
amenityFeature.Heating Optional boolean Cơ sở lưu trú có hệ thống sưởi ấm hay không.
amenityFeature.HotTub Optional boolean Cơ sở lưu trú có bồn tắm nước nóng hay không.
amenityFeature.InstantBookable Optional boolean Cơ sở lưu trú có cho phép đặt phòng ngay lập tức thông qua quy trình thanh toán hay không. Một phương thức khác là chờ phê duyệt.
amenityFeature.IroningBoard Optional boolean Cơ sở lưu trú có bàn là hay không.
amenityFeature.Kitchen Optional boolean Cơ sở lưu trú có bếp hay không.
amenityFeature.Microwave Optional boolean Cơ sở lưu trú có lò vi sóng hay không.
amenityFeature.OpenAirBath(Hotels only) Optional boolean Cơ sở lưu trú có bồn tắm ngoài trời hay không. Nếu được chỉ định ở cấp phòng, thì phòng tắm chỉ dành riêng cho người ở trong phòng.
amenityFeature.OutdoorGrill Optional boolean Cơ sở lưu trú có bếp nướng hay không.
amenityFeature.OvenStove Optional boolean Cơ sở lưu trú có bếp lò hay không.
amenityFeature.Patio Optional boolean Cơ sở lưu trú có sân hiên hay không.
amenityFeature.Pool Optional boolean Cơ sở lưu trú có hồ bơi hay không.
amenityFeature.PrivateBeachAccess Optional boolean Cơ sở lưu trú có lối đi riêng dẫn ra bãi biển dành riêng cho khách lưu trú hay không.
amenityFeature.SelfCheckinCheckout Optional boolean Cơ sở lưu trú có hỗ trợ tính năng tự nhận phòng và trả phòng hay không.
amenityFeature.WasherDryer Optional boolean Cơ sở lưu trú có máy giặt hay không.
amenityFeature.Wifi Optional boolean Cơ sở lưu trú có Wi-Fi hay không.
amenityFeature.Smoking Optional boolean Cơ sở lưu trú có cho phép hút thuốc hay không.
amenityFeature.InternetType Optional Enum

Loại Internet hiện có tại cơ sở lưu trú.

Sau đây là các giá trị được hỗ trợ:

  • FREE
  • PAID
  • NONE
amenityFeature.ParkingType Optional Enum

Loại chỗ đỗ xe hiện có tại cơ sở lưu trú.

Sau đây là các giá trị được hỗ trợ:

  • FREE
  • PAID
  • NONE
amenityFeature.PoolType Optional Enum

Loại hồ bơi hiện có tại cơ sở lưu trú.

Sau đây là các giá trị được hỗ trợ:

  • INDOOR
  • OUTDOOR
  • NONE
amenityFeature.RoomStyle Optional Enum

Cho biết liệu phòng có được thiết kế theo phong cách Nhật Bản hay không.

Sau đây là các giá trị được hỗ trợ:

  • WESTERN
  • JAPANESE
  • JAPANESE_WESTERN
amenityFeature.LicenseNum Required string

Số giấy phép của doanh nghiệp sẽ xuất hiện trên cơ sở lưu trú ở một số khu vực trên thế giới. Bạn có thể lặp lại giá trị này và nếu có nhiều giấy phép, bạn nên thêm thông tin về chủ sở hữu hoặc cơ quan cấp phép. Ví dụ: "Paris: 123456ABC"

Thuộc tính

Sau đây là các thuộc tính amenityFeature:

Thuộc tính Bắt buộc? Loại Mô tả
amenityFeature Optional LocationFeatureSpecification

Tiện nghi được cung cấp trong khách sạn hoặc phòng. Bạn có thể chỉ định giá trị này bằng thuộc tính amenityFeature . Khách sạn phải cung cấp các tiện nghi cho tất cả khách lưu trú, bất kể họ chọn gói giá nào. amenityFeature được chỉ định bằng giá trị thuộc tính LocationFeatureSpecification.

Bạn có thể chỉ định tiện nghi ở cấp Hotel hoặc HotelRoom.

containsPlace Optional LocationFeatureSpecification

Tiện nghi được cung cấp trong khách sạn hoặc phòng cho tất cả khách lưu trú. Bạn có thể chỉ định bằng cách sử dụng amenityFeature . Khách sạn phải cung cấp các tiện nghi này cho tất cả khách lưu trú trong phòng, bất kể gói giá mà họ chọn.

Hotel.containsPlace.amenityFeature là những tiện nghi được cung cấp trong khách sạn.

HotelRoom.containsPlace.amenityFeature là những tiện nghi được cung cấp trong phòng.

Ví dụ:

Tiện nghi tại khách sạn và phòng

Sau đây là ví dụ về một khách sạn có bể bơi mở cửa từ 10:00 đến 22:00 và không có phòng tập thể dục. Phòng khách sạn không hút thuốc và có tủ lạnh nhỏ.

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