CINXE.COM
Pricing & Room Inventory (Transactions) XML Reference | Hotel Prices | Google for Developers
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#1a73e8"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png"><link rel="canonical" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages" /><link rel="alternate" hreflang="x-default" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages" /><link rel="alternate" hreflang="ar" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=fr" /><link rel="alternate" hreflang="de" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=de" /><link rel="alternate" hreflang="he" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=he" /><link rel="alternate" hreflang="hi" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=hi" /><link rel="alternate" hreflang="id" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=id" /><link rel="alternate" hreflang="it" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=it" /><link rel="alternate" hreflang="ja" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=th" /><link rel="alternate" hreflang="tr" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages?hl=vi" /><title>Pricing & Room Inventory (Transactions) XML Reference | Hotel Prices | Google for Developers</title> <meta property="og:title" content="Pricing & Room Inventory (Transactions) XML Reference | Hotel Prices | Google for Developers"><meta property="og:url" content="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages"><meta property="og:image" content="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/opengraph/google-blue.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Pricing & Room Inventory (Transactions) XML Reference" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Hotel APIs", "item": "https://developers.google.com/hotels" },{ "@type": "ListItem", "position": 2, "name": "Hotel Prices", "item": "https://developers.google.com/hotels/hotel-prices" },{ "@type": "ListItem", "position": 3, "name": "Pricing &amp; Room Inventory (Transactions) XML Reference", "item": "https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="google-blue" type="article" layout="docs" concierge='closed' display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" aria-label="Product breadcrumb"> <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> <a href="https://developers.google.com/hotels" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Hotel APIs" > <svg class="devsite-google-wordmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 148 48"> <title>Google</title> <path class="devsite-google-wordmark-svg-path" d="M19.58,37.65c-9.87,0-18.17-8.04-18.17-17.91c0-9.87,8.3-17.91,18.17-17.91c5.46,0,9.35,2.14,12.27,4.94l-3.45,3.45c-2.1-1.97-4.93-3.49-8.82-3.49c-7.21,0-12.84,5.81-12.84,13.02c0,7.21,5.64,13.02,12.84,13.02c4.67,0,7.34-1.88,9.04-3.58c1.4-1.4,2.32-3.41,2.66-6.16H19.58v-4.89h16.47c0.18,0.87,0.26,1.92,0.26,3.06c0,3.67-1.01,8.21-4.24,11.44C28.93,35.9,24.91,37.65,19.58,37.65z M61.78,26.12c0,6.64-5.1,11.53-11.36,11.53s-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53S61.78,19.43,61.78,26.12z M56.8,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C53.84,33.11,56.8,30.22,56.8,26.12z M87.25,26.12c0,6.64-5.1,11.53-11.36,11.53c-6.26,0-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53C82.15,14.59,87.25,19.43,87.25,26.12zM82.28,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C79.32,33.11,82.28,30.22,82.28,26.12z M112.09,15.29v20.7c0,8.52-5.02,12.01-10.96,12.01c-5.59,0-8.95-3.76-10.22-6.81l4.41-1.83c0.79,1.88,2.71,4.1,5.81,4.1c3.8,0,6.16-2.36,6.16-6.77v-1.66h-0.18c-1.14,1.4-3.32,2.62-6.07,2.62c-5.76,0-11.05-5.02-11.05-11.49c0-6.51,5.28-11.57,11.05-11.57c2.75,0,4.93,1.22,6.07,2.58h0.18v-1.88H112.09z M107.64,26.16c0-4.06-2.71-7.03-6.16-7.03c-3.49,0-6.42,2.97-6.42,7.03c0,4.02,2.93,6.94,6.42,6.94C104.93,33.11,107.64,30.18,107.64,26.16z M120.97,3.06v33.89h-5.07V3.06H120.97z M140.89,29.92l3.93,2.62c-1.27,1.88-4.32,5.11-9.61,5.11c-6.55,0-11.28-5.07-11.28-11.53c0-6.86,4.77-11.53,10.71-11.53c5.98,0,8.91,4.76,9.87,7.34l0.52,1.31l-15.42,6.38c1.18,2.31,3.01,3.49,5.59,3.49C137.79,33.11,139.58,31.84,140.89,29.92zM128.79,25.77l10.31-4.28c-0.57-1.44-2.27-2.45-4.28-2.45C132.24,19.04,128.66,21.31,128.79,25.77z"/> </svg>Hotel APIs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Google Hotel Prices API" > Hotel Prices </a> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Hotel Prices" tenant-name="Google for Developers" project-scope="/hotels/hotel-prices" url-scoped="https://developers.google.com/s/results/hotels/hotel-prices" > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://developers.google.com/hotels/hotel-prices" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - guides" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" > Guides </a> </tab> <tab > <a href="https://developers.google.com/hotels/hotel-prices/api-reference" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices/api-reference" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - api reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" > API Reference </a> </tab> <tab class="devsite-active"> <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - xml reference" track-metadata-module="primary nav" aria-label="XML Reference, selected" data-category="Site-Wide Custom Events" data-label="Tab: XML Reference" track-name="xml reference" > XML Reference </a> </tab> <tab > <a href="https://developers.google.com/hotels/hotel-prices/dev-guide/where-to-get-help" track-metadata-eventdetail="https://developers.google.com/hotels/hotel-prices/dev-guide/where-to-get-help" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - support" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" > Support </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" aria-label="Upper header breadcrumb"> <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> <a href="https://developers.google.com/hotels" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Hotel APIs" > <svg class="devsite-google-wordmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 148 48"> <title>Google</title> <path class="devsite-google-wordmark-svg-path" d="M19.58,37.65c-9.87,0-18.17-8.04-18.17-17.91c0-9.87,8.3-17.91,18.17-17.91c5.46,0,9.35,2.14,12.27,4.94l-3.45,3.45c-2.1-1.97-4.93-3.49-8.82-3.49c-7.21,0-12.84,5.81-12.84,13.02c0,7.21,5.64,13.02,12.84,13.02c4.67,0,7.34-1.88,9.04-3.58c1.4-1.4,2.32-3.41,2.66-6.16H19.58v-4.89h16.47c0.18,0.87,0.26,1.92,0.26,3.06c0,3.67-1.01,8.21-4.24,11.44C28.93,35.9,24.91,37.65,19.58,37.65z M61.78,26.12c0,6.64-5.1,11.53-11.36,11.53s-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53S61.78,19.43,61.78,26.12z M56.8,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C53.84,33.11,56.8,30.22,56.8,26.12z M87.25,26.12c0,6.64-5.1,11.53-11.36,11.53c-6.26,0-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53C82.15,14.59,87.25,19.43,87.25,26.12zM82.28,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C79.32,33.11,82.28,30.22,82.28,26.12z M112.09,15.29v20.7c0,8.52-5.02,12.01-10.96,12.01c-5.59,0-8.95-3.76-10.22-6.81l4.41-1.83c0.79,1.88,2.71,4.1,5.81,4.1c3.8,0,6.16-2.36,6.16-6.77v-1.66h-0.18c-1.14,1.4-3.32,2.62-6.07,2.62c-5.76,0-11.05-5.02-11.05-11.49c0-6.51,5.28-11.57,11.05-11.57c2.75,0,4.93,1.22,6.07,2.58h0.18v-1.88H112.09z M107.64,26.16c0-4.06-2.71-7.03-6.16-7.03c-3.49,0-6.42,2.97-6.42,7.03c0,4.02,2.93,6.94,6.42,6.94C104.93,33.11,107.64,30.18,107.64,26.16z M120.97,3.06v33.89h-5.07V3.06H120.97z M140.89,29.92l3.93,2.62c-1.27,1.88-4.32,5.11-9.61,5.11c-6.55,0-11.28-5.07-11.28-11.53c0-6.86,4.77-11.53,10.71-11.53c5.98,0,8.91,4.76,9.87,7.34l0.52,1.31l-15.42,6.38c1.18,2.31,3.01,3.49,5.59,3.49C137.79,33.11,139.58,31.84,140.89,29.92zM128.79,25.77l10.31-4.28c-0.57-1.44-2.27-2.45-4.28-2.45C132.24,19.04,128.66,21.31,128.79,25.77z"/> </svg>Hotel APIs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Google Hotel Prices API" > Hotel Prices </a> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Guides" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Guides </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices/api-reference" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: API Reference" track-name="api reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: API Reference" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: XML Reference" track-name="xml reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: XML Reference" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > XML Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/hotels/hotel-prices/dev-guide/where-to-get-help" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Support </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/hotel-list-feed" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/hotel-list-feed" ><span class="devsite-nav-text" tooltip>Hotel List</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Availability, Rates, and Inventory (ARI)</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-property" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-property" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-property" ><span class="devsite-nav-text" tooltip>Transaction (Property Data)</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-rate" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-rate" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-rate" ><span class="devsite-nav-text" tooltip>OTA_HotelRateAmountNotifRQ</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-avail" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-avail" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-avail" ><span class="devsite-nav-text" tooltip>OTA_HotelAvailNotifRQ</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-inv" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-inv" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-inv" ><span class="devsite-nav-text" tooltip>OTA_HotelInvCountNotifRQ</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-tax" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-tax" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-tax" ><span class="devsite-nav-text" tooltip>TaxFeeInfo</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-promotions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-promotions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-promotions" ><span class="devsite-nav-text" tooltip>Promotions</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-rate-modifications" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-rate-modifications" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-rate-modifications" ><span class="devsite-nav-text" tooltip>RateModifications</span></a></li><li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/ari-extra-guest-charges" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/ari-extra-guest-charges" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/ari-extra-guest-charges" ><span class="devsite-nav-text" tooltip>ExtraGuestCharges</span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/transaction-messages" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/transaction-messages" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/transaction-messages" ><span class="devsite-nav-text" tooltip>Pricing & Room Inventory (Transactions)</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/rate-rules" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/rate-rules" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/rate-rules" ><span class="devsite-nav-text" tooltip>Rate Rules</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/queries" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/queries" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/queries" ><span class="devsite-nav-text" tooltip>Query & Hint Messages</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/xml-reference/datetime" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/xml-reference/datetime" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/xml-reference/datetime" ><span class="devsite-nav-text" tooltip>Date/Time Formats</span></a></li> <li class="devsite-nav-item"><a href="/hotels/hotel-prices/dev-guide/country-codes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /hotels/hotel-prices/dev-guide/country-codes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/hotels/hotel-prices/dev-guide/country-codes" ><span class="devsite-nav-text" tooltip>Country codes</span></a></li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav > <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/products" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Products </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="Google Hotel APIs" > Hotel APIs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="Google Hotel Prices API" > Hotel Prices </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="5" track-type="globalNav" track-name="breadcrumb" track-metadata-position="5" track-metadata-eventdetail="" > XML Reference </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Hotel Prices" product-id="82128" bucket="Hotels" context="DevSite feedback link" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-feedback-url="https://support.google.com/hotelprices/" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png" project-support-url="https://support.google.com/hotelprices/" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Pricing & Room Inventory (Transactions) XML Reference </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <p>This page provides a reference for the XML-based <a href="/hotels/hotel-prices/dev-guide/transaction-overview">Transaction messages</a>.</p> <h2 id="Transaction" data-text="<Transaction>" tabindex="-1"><code translate="no" dir="ltr"><Transaction></code></h2> <p>The root element of a <a href="/hotels/hotel-prices/dev-guide/transaction-overview">Transaction message</a> is <code translate="no" dir="ltr"><Transaction></code>. It is a container for descriptive information about rooms and packages and pricing and availability for rooms and packages.</p> <p>The <code translate="no" dir="ltr"><Transaction></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <strong><code translate="no" dir="ltr"><Transaction></code></strong> + <span class="nocode"><code translate="no" dir="ltr"><PropertyDataSet></code></span> // Room and package metadata + <span class="nocode"><Property></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PackageData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><Result></code></span> // Pricing and availability + <span class="nocode"><code translate="no" dir="ltr"><Rates></code></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomBundle></code></span> + ... </pre> <p>Messages that use <code translate="no" dir="ltr"><Transaction></code> as the root element require at least one child element. Transaction messages can have any number of child elements, as long as the total message size does not exceed 100 MB.</p> <aside class="key-point"><strong>Key Point:</strong><span> HTML syntax is not allowed within your XML elements (even if it's escaped). All Transaction messages containing HTML will be rejected.</span></aside> <h3 id="transaction-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><Transaction></code> element uses the following syntax:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="<var translate="no">timestamp</var>" id="<var translate="no">transaction_ID</var>"> <!-- Defines data about a room or package (Room Bundle) --> <PropertyDataSet> ... </PropertyDataSet> <!-- Updates/sets prices and availability for rooms and Room Bundles --> <!-- (Also removes itineraries from inventory) --> <Result> ... </Result> </Transaction> </code></pre> <h3 id="transaction-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><Transaction></code> element has the following attributes:</p> <table class="fixed"> <tbody> <tr> <th width="18%">Attribute</th> <th width="12%">Required?</th> <th width="12%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no">id</span></td> <td><span translate="no">Required</span></td> <td><span transalate="no">string</span></td> <td>A unique identifier for each Transaction message.</td> </tr> <tr> <td><span translate="no">partner</span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">string</span></td> <td>The partner account that the Transaction message is for. You typically use this if your backend provides price feeds for multiple partner accounts. This string value is the "Partner key" value listed on the <a href="//hotelcenter.google.com/accountsettings/basicsettings?a="> Account settings page</a> in Hotel Center.</td> </tr> <tr> <td><span translate="no">timestamp</span></td> <td><span translate="no">Required</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a></span></td> <td><p>The moment in time that the Transaction message was sent.</p> <p>Any message sent with a timestamp within the prior 24 hours will be processed, and those that haven't will be discarded.</p> <p>Messages are processed in order of <code translate="no" dir="ltr">timestamp</code> and not in the order of being received. For example, a price update with a timestamp of <code translate="no" dir="ltr">2019-05-03 14:09:00</code> that is received after a message with a timestamp of <code translate="no" dir="ltr">2019-05-03 14:10:00</code> will still be processed in order, and the price from the message with the timestamp of <code translate="no" dir="ltr">2019-05-03 14:10:00</code> will be used.</p> </td> </tr> </tbody> </table> <h3 id="transaction-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><Transaction></code> element has the following child elements:</p> <table class="fixed"> <tbody> <tr> <th width="19%">Child Element</th> <th width="10%">Required?</th> <th width="20%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><PropertyDataSet></span></td> <td><span translate="no">Optional*</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PropertyDataSet"><code translate="no" dir="ltr"><PropertyDataSet></code></a></span></td> <td><p>Describes a specific room and Room Bundles. You typically use this element in a separate Transaction message to define shared values for Room Bundles and reduce the size of your Transaction messages.</p> </td> </tr> <tr> <td><span translate="no"><Result></span></td> <td><span translate="no">Optional*</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a></span></td> <td><p>Pricing data for a room's itinerary or a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomBundle"><code translate="no" dir="ltr"><RoomBundle></code></a> element that defines Room Bundles and additional types of rooms for the property. The <code translate="no" dir="ltr"><Result></code> element can also be used to remove itineraries from inventory.</p> </td> </tr> <tr> <td colspan="4">* At least one of <code translate="no" dir="ltr"><PropertyDataSet></code> or <code translate="no" dir="ltr"><Result></code> is required.</td> </tr> </tbody> </table> <h3 id="transaction-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="room-data" data-text="Room data" tabindex="-1">Room data</h3><p>The following example defines room data in a Transaction message:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <RoomData> <RoomID>5440OF</RoomID> <Name> <Text text="Single King Bed Room" language="en"/> <Text text="Simple Lit de Roi" language="fr"/> </Name> <Description> <Text text="One king bed with pillowtop mattresses, 300-thread-count linens, and down comforters (bedspreads). City view. 300 square feet. Desk with rolling chair. Multi-line phone with voice mail. Cable/satellite TV with complimentary HBO and pay movies." language="en"/> <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/> </Description> <PhotoURL> <Caption> <Text text="Bathroom View" language="en"/> <Text text="La salle de baines" language="fr"/> </Caption> <URL>http://www.foo.com/static/bar/image1234.jpg</URL> </PhotoURL> <Capacity>4</Capacity> </RoomData> </PropertyDataSet> </Transaction> </code></pre></section> <section><h3 id="pricing-data" data-text="Pricing data" tabindex="-1">Pricing data</h3><p>The following example defines pricing data in a Transaction message:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-23T16:20:00-04:00" id="42"> <Result> <Property>060773</Property> <RoomID>RoomType101</RoomID> <PackageID>Package101</PackageID> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Baserate currency="USD">278.33</Baserate> <Tax currency="USD">25.12</Tax> <OtherFees currency="USD">2.00</OtherFees> <AllowablePointsOfSale> <PointOfSale id="site1"/> </AllowablePointsOfSale> </Result> <Result> <Property>052213</Property> <RoomID>RoomType101</RoomID> <PackageID>Package101</PackageID> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Baserate currency="USD">299.98</Baserate> <Tax currency="USD">26.42</Tax> <OtherFees currency="USD">2.00</OtherFees> <AllowablePointsOfSale> <PointOfSale id="otto"/> <PointOfSale id="simon"/> </AllowablePointsOfSale> </Result> </Transaction> </code></pre></section> <section><h3 id="nightly-rates" data-text="Nightly rates" tabindex="-1">Nightly rates</h3><p>The following example defines pricing data for 1 to 7 nights beginning June 7th, 2023:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-08-24T16:20:00-04:00" id="42"> <Result> <Property>1234</Property> <Checkin>2018-06-07</Checkin> <Nights>1</Nights> <Baserate currency="USD">209.99</Baserate> <Tax currency="USD">25.12</Tax> <OtherFees currency="USD">2.00</OtherFees> </Result> <Result> <Property>1234</Property> <Checkin>2018-06-07</Checkin> <Nights>2</Nights> <Baserate currency="USD">419.98</Baserate> <Tax currency="USD">25.12</Tax> <OtherFees currency="USD">2.00</OtherFees> </Result> <Result> <Property>1234</Property> <Checkin>2018-06-07</Checkin> <Nights>3</Nights> <Baserate currency="USD">614.97</Baserate> <Tax currency="USD">21.12</Tax> <OtherFees currency="USD">2.00</OtherFees> </Result> <Result> <Property>1234</Property> <Checkin>2018-06-07</Checkin> <Nights>4</Nights> <Baserate currency="USD">819.96</Baserate> <Tax currency="USD">21.12</Tax> <OtherFees currency="USD">2.00</OtherFees> </Result> <Result> <Property>1234</Property> <Checkin>2018-06-07</Checkin> <Nights>5</Nights> <Baserate currency="USD">999.95</Baserate> <Tax currency="USD">21.12</Tax> <OtherFees currency="USD">2.00</OtherFees> </Result> <Result> <Property>1234</Property> <Checkin>2018-06-07</Checkin> <Nights>6</Nights> <Baserate currency="USD">1193.94</Baserate> <Tax currency="USD">21.12</Tax> <OtherFees currency="USD">2.00</OtherFees> </Result> <Result> <Property>1234</Property> <Checkin>2018-06-07</Checkin> <Nights>7</Nights> <Baserate currency="USD">1259.93</Baserate> <Tax currency="USD">21.12</Tax> <OtherFees currency="USD">2.00</OtherFees> </Result> </Transaction> </code></pre></section> </div> <p><br></p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="base-conditional-rates" data-text="Base & conditional rates" tabindex="-1">Base & conditional rates</h3><p>The following example shows a Transaction message that contains a base rate and a <a href="/hotels/hotel-prices/dev-guide/fenced-rates">conditional rate</a>:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8" ?> <Transaction timestamp="2023-05-18T16:20:00-04:00" id="42"> <Result> <Property>1234</Property> <Checkin>2023-04-10</Checkin> <Nights>1</Nights> <Baserate currency="USD">200.00</Baserate> <Tax currency="USD">20.00</Tax> <OtherFees currency="USD">1.00</OtherFees> <Rates> <!-- The rate_rule_id is required when using conditional rates --> <Rate rate_rule_id="mobile"> <!-- Override base rate and taxes for conditional rates --> <Baserate currency="USD">180.00</Baserate> <Tax currency="USD">18.00</Tax> <!-- NOTE: OtherFees is inherited from the above setting --> <Custom1>ratecode123</Custom1> </Rate> </Rates> </Result> </Transaction> </code></pre></section> <section><h3 id="remove-inventory" data-text="Remove inventory" tabindex="-1">Remove inventory</h3><p>The following example removes several inventories (1-night stays for several different dates) for a hotel from inventory:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2023-05-23T16:20:00-04:00" id="42"> <Result> <Property>1123581321</Property> <Checkin>2023-05-23</Checkin> <Nights>1</Nights> <Unavailable> <NoVacancy/> </Unavailable> <Tax currency="USD">0</Tax> <OtherFees currency="USD">0</OtherFees> </Result> <Result> <Property>1123581321</Property> <Checkin>2023-05-24</Checkin> <Nights>1</Nights> <Unavailable> <NoVacancy/> </Unavailable> <Tax currency="USD">0</Tax> <OtherFees currency="USD">0</OtherFees> </Result> <!---Sending <Baserate> is optional with <Unavailable> --> <Result> <Property>1123581321</Property> <Checkin>2023-05-25</Checkin> <Nights>1</Nights> <Baserate currency="USD">-1</Baserate> <Unavailable> <NoVacancy/> </Unavailable> <Tax currency="USD">0</Tax> <OtherFees currency="USD">0</OtherFees> </Result> </Transaction> </code></pre></section> </div> <h2 id="PropertyDataSet" data-text="<PropertyDataSet>" tabindex="-1"><code translate="no" dir="ltr"><PropertyDataSet></code></h2> <p>A container for room and package (or <em>Room Bundle</em>) information in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Transaction"><code translate="no" dir="ltr"><Transaction></code></a> message. Values set on a hotel override values set on a partner. Google stores this information so that you do not need to define it every time you send pricing updates.</p> <p>The <code translate="no" dir="ltr"><PropertyDataSet></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <span class="nocode"><code translate="no" dir="ltr"><Transaction></code></span> + <strong><code translate="no" dir="ltr"><PropertyDataSet></code></strong> // Room and package metadata + <span class="nocode"><Property></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PackageData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><Result></code></span> // Pricing and availability + <span class="nocode"><code translate="no" dir="ltr"><Rates></code></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomBundle></code></span> + ... </pre> <p>For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>.</p> <h3 id="propertydataset-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><PropertyDataSet></code> element uses the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><span class="nocode"><?xml version="1.0" encoding="UTF-8"?> <Transaction ... ></span> <PropertyDataSet> <!-- (Required) ID that matches the Hotel List Feed --> <Property><var translate="no">hotel_ID</var></Property> <!-- (Optional) Defines metadata about a room --> <RoomData> ... </RoomData> <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) --> <PackageData> ... </PackageData> </PropertyDataSet> <span class="nocode">... </Transaction></span></pre> <h3 id="propertydataset-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><PropertyDataSet></code> element has no attributes.</p> <h3 id="propertydataset-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><PropertyDataSet></code> element has the following child elements:</p> <table class="fixed"> <tbody> <tr> <th width="18%">Child Element</th> <th width="20%">Required?</th> <th width="18%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><PackageData></span></td> <td><span translate="no">Optional*</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a></span></td> <td>Describes a Room Bundle. This data is associated with a partner and hotel, but not with an itinerary. This element is similar to <code translate="no" dir="ltr"><RoomData></code>, but it describes amenities and terms that are not part of the physical room description. <p>You reference the package ID in your pricing updates.</p> <p>For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>.</p> </td> </tr> <tr> <td><span translate="no"><Property></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">string</span></td> <td>The ID of a hotel that the associated data applies to. The value of this element must be a string that matches the listing <code translate="no" dir="ltr"><id></code> in your Hotel List Feed. </td> </tr> <tr> <td><span translate="no"><RoomData></span></td> <td><span translate="no">Optional*</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a></span></td> <td>Describes a room. This data is associated with a partner and hotel, but not with an itinerary. <p>You reference the room ID in your pricing updates.</p></td> </tr> <tr> <td colspan="4">* At least one of <code translate="no" dir="ltr"><PackageData></code> or <code translate="no" dir="ltr"><RoomData></code> is required.</td> </tr> </tbody> </table> <h3 id="propertydataset-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="room-and-package-data" data-text="Room and package data" tabindex="-1">Room and package data</h3><p>The following example shows both room and package data in a <code translate="no" dir="ltr"><PropertyDataSet></code>:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>180054</Property> <RoomData> <RoomID>060773</RoomID> <Name> <Text text="Single Bed Room" language="en"/> <Text text="Chambre single" language="fr"/> </Name> <Description> <Text text="Non-smoking" language="en"/> <Text text="Pas de fumiers" language="fr"/> </Description> <PhotoURL> <Caption> <Text text="Living area" language="en"/> <Text text="Le chambre" language="fr"/> </Caption> <URL>http://www.foo.com/static/bar/image1234.jpg</URL> </PhotoURL> </RoomData> <PackageData> <PackageID>P54321</PackageID> <Name> <Text text="Breakfast Included" language="en"/> <Text text="Avec le petit déjeuner" language="fr"/> </Name> <Description> <Text text="Includes a delightful array of jams and jellies." language="en"/> <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/> </Description> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> </PropertyDataSet> </Transaction> </code></pre> <p>When you send prices and availability for this room and Room Bundle, you reference the room and package IDs in your pricing messages. The result is that you greatly reduce the size of your messages, and also reduce the amount of errors you might encounter due to duplicate data. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>.</p></section> </div> <h2 id="RoomData" data-text="<RoomData>" tabindex="-1"><code translate="no" dir="ltr"><RoomData></code></h2> <p>Defines itinerary-independent metadata about rooms, and by extension, Room Bundles (since Room Bundles are rooms plus additional amenities). Use <code translate="no" dir="ltr"><RoomData></code> to reduce the repetition of descriptive data in your Price Feed.</p> <p>The <code translate="no" dir="ltr"><RoomData></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <span class="nocode"><code translate="no" dir="ltr"><Transaction></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PropertyDataSet></code></span> // Room and package metadata + <span class="nocode"><Property></span> + <strong><code translate="no" dir="ltr"><RoomData></code></strong> + <span class="nocode"><code translate="no" dir="ltr"><PackageData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><Result></code></span> // Pricing and availability + <span class="nocode"><code translate="no" dir="ltr"><Rates></code></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomBundle></code></span> + ... </pre> <p><code translate="no" dir="ltr"><RoomData></code> elements contain information that is associated with a partner and hotel, but not with an itinerary. The intended purpose is for all non-itinerary data.</p> <p>The <code translate="no" dir="ltr"><RoomData></code> element is similar to <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a>, but it describes the physical room rather than amenities and terms of a package. You use <code translate="no" dir="ltr"><RoomData></code> and <code translate="no" dir="ltr"><PackageData></code> in combination to provide details about Room Bundles. For individual rooms that are not part of a package, use just <code translate="no" dir="ltr"><RoomData></code>.</p> <p>You can define both the <code translate="no" dir="ltr"><RoomData></code> and <code translate="no" dir="ltr"><PackageData></code> elements for the same room or Room Bundle. When Google displays that room or package in the search results, it will include the descriptions from both, separated by a hyphen.</p> <p>For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>.</p> <h3 id="roomdata-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><RoomData></code> element uses the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><span class="nocode"><?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> ...</span> <RoomData> <RoomID><var translate="no">room_ID</var></RoomID> <Name> <Text text="<var translate="no">room_name</var>" language="<var translate="no">language_code</var>"/> ... </Name> <Description> <Text text="<var translate="no">room_description</var>" language="<var translate="no">language_code</var>"/> ... </Description> <Capacity><var translate="no">max_number_of_occupants</var></Capacity> <Occupancy><var translate="no">max_number_of_intended_occupants</var></Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults, children, or seniors --></OccupancyDetails> <OccupancySettings> <MinOccupancy><var translate="no">min_number_of_occupants</var></MinOccupancy> <MinAge><var translate="no">min_age_of_occupants</var></MinAge> </OccupancySettings> <PhotoURL> <Caption> <Text text="<var translate="no">photo_description</var>" language="<var translate="no">language_code</var>"/> ... </Caption> <URL><var translate="no">photo_location</var></URL> </PhotoURL> <RoomFeatures> ... </RoomFeatures> </RoomData> <span class="nocode">... </PropertyDataSet> </Transaction></span></pre> <h3 id="roomdata-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><RoomData></code> element has no attributes.</p> <h3 id="roomdata-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><RoomData></code> element has the following child elements:</p> <table class="fixed"> <tbody> <tr> <th width="18%">Child Element</th> <th width="10%">Required?</th> <th width="16%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><Capacity></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">integer</span></td> <td>The maximum number of guests that a room <em>can physically accommodate</em>. For a room, capacity is greater than or equal to occupancy. <p>When specified, this value must be equal to or greater than the value of the <code translate="no" dir="ltr"><Occupancy></code> element, which is the intended number of guests for a particular room. For example, a large suite's <code translate="no" dir="ltr"><Capacity></code> might be 6, but the <code translate="no" dir="ltr"><Occupancy></code> for it is 4.</p> <p>The value of <code translate="no" dir="ltr"><Capacity></code> must be a positive integer between 1 and 20, inclusive.</p> </td> </tr> <tr> <td><span translate="no"><Description></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>A detailed description of the room. This element should contain information not described by other elements or the <code translate="no" dir="ltr"><Name></code> element. You shouldn't use all capital letters when specifying the description of the room. <p>The <code translate="no" dir="ltr"><Description></code> element takes a single child element, <code translate="no" dir="ltr"><Text></code>, which has the following two required attributes:</p> <ul> <li><code translate="no" dir="ltr">text</code>: A detailed description of the room.</li> <li><code translate="no" dir="ltr">language</code>: A two-letter language code; for example, <code translate="no" dir="ltr">fr</code>.</li> </ul> <p>Use a separate <code translate="no" dir="ltr"><Text></code> element for each language in which your ad or free booking link might appear (with different values for the <code translate="no" dir="ltr">language</code> attributes).</p> <p>The following example shows French and English versions of the room description:</p> <pre class="prettyprint" translate="no" dir="ltr"><Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description></pre> </td> </tr> <tr> <td><span translate="no"><Name></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">string</span></td> <td>The name of the category of room. This value should match what appears on the hotel's landing page (formerly point of sale). Don't set the value of this element to all capital letters. <p>This element takes a single child element, <code translate="no" dir="ltr"><Text></code>, which has the following two required attributes:</p> <ul> <li><code translate="no" dir="ltr">text</code>: The name of the room.</li> <li><code translate="no" dir="ltr">language</code>: A two-letter language code; for example, <code translate="no" dir="ltr">fr</code>.</li> </ul> <p>Use a separate <code translate="no" dir="ltr"><Text></code> element for each language in which your ad or free booking link might appear (with different values for the <code translate="no" dir="ltr">language</code> attributes).</p> <p>The following example shows French and English versions of the room name:</p> <pre class="prettyprint" translate="no" dir="ltr"><Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name></pre> </td> </tr> <tr> <td><span translate="no"><Occupancy></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">integer</span></td> <td>The maximum number of guests that a room <em>is intended for</em>. For example, a large suite might be able to physically accommodate 6 guests (capacity = 6), but is intended for up to 4 guests only. <p>This value must be less than or equal to the <code translate="no" dir="ltr"><Capacity></code> element, which is the number of people that the room can physically accommodate.</p> <p>The value of <code translate="no" dir="ltr"><Occupancy></code> must be a positive integer between 1 and 99, inclusive.</p> <p><code translate="no" dir="ltr"><Occupancy></code> may be accompanied by <code translate="no" dir="ltr"><OccupancyDetails></code>, which specifies the type of guests (adults or children). Refer to <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#OccupancyDetails"><code translate="no" dir="ltr"><OccupancyDetails></code></a> for syntax and description of child elements.</p></td> </tr> <tr> <td><span translate="no"><OccupancySettings></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Settings which can restrict or modify the occupancy requirements of a room. <p>The <code translate="no" dir="ltr"><OccupancySettings></code> element takes the following child elements:</p> <ul> <li><code translate="no" dir="ltr"><MinOccupancy></code>: The minimum number of guests that can stay in a room. For example, if this is set to <code translate="no" dir="ltr">2</code>, this room cannot be booked for a single guest. <p>The value of <code translate="no" dir="ltr"><MinOccupancy></code> must be a positive integer between 1 and 99, inclusive.</p></li> <li><code translate="no" dir="ltr"><MinAge></code>: The minimum age for all guests staying in a room. For example, if this is set to <code translate="no" dir="ltr">18</code>, this room can only be booked for groups where all guests are of age 18 or older. <p>The value of <code translate="no" dir="ltr"><MinAge></code> must be a positive integer between 0 and 99, inclusive.</p></li> </ul> <pre class="prettyprint" translate="no" dir="ltr"><OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings></pre> <p>Not all child elements need to be included.</p> </td> </tr> <tr> <td><span translate="no"><PhotoURL></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>A URL and optional caption for a photo of the given room or Room Bundle. You can specify more than one <code translate="no" dir="ltr"><PhotoURL></code> for a room or Room Bundle. Each photo URL must be in its own <code translate="no" dir="ltr"><PhotoURL></code>. <p>This element takes the following child elements:</p> <ul> <li><code translate="no" dir="ltr"><URL></code>: Specifies the location of the photo. The location should be public (not behind a firewall) and should include the protocol (for example, <code translate="no" dir="ltr">https://</code>). Use only one <code translate="no" dir="ltr"><URL></code> per <code translate="no" dir="ltr"><PhotoURL></code>.</li> <li><code translate="no" dir="ltr"><Caption></code>: Defines the caption for the photo. This element takes a single child element, <code translate="no" dir="ltr"><Text></code>, which has two required attributes: <code translate="no" dir="ltr">text</code> and <code translate="no" dir="ltr">language</code>. The <code translate="no" dir="ltr">text</code> attribute is the caption, and the <code translate="no" dir="ltr">language</code> attribute specifies a two-letter language code such as <code translate="no" dir="ltr">en</code>.</li> </ul> <p>Example:</p> <pre class="prettyprint" translate="no" dir="ltr"><PhotoURL> <URL>https://www.example.com/static/bar/image1234.jpg</URL> <Caption> <Text text="A bright and breezy way to enjoy your mornin' cuppa tea." language="en"/> <Text text="Une façon lumineuse et aérée pour profiter de votre journée tasse de thé." language="fr"/> </Caption> </PhotoURL> <PhotoURL> <URL>https://www.foo.com/static/bar/image5678.jpg</URL> <Caption> <Text text="Or, perhaps you prefer coffee." language="en"/> <Text text="Ou peut-être préférez-vous le café." language="fr"/> </Caption> </PhotoURL></pre> </td> </tr> <tr> <td><span translate="no"><RoomFeatures></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomFeatures"><code translate="no" dir="ltr"><RoomFeatures></code></a></span></td> <td>Contains information about room features.</td> </tr> <tr> <td><span translate="no"><RoomID></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">string</span></td> <td>The unique ID for the room. Use this ID to match the room data with the <code translate="no" dir="ltr"><Result></code> blocks in your pricing updates. For more information, refer to <a href="https://developers.google.com/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>. (You can also use this ID to reference a common room definition in a single Transaction message when defining room data inline.)</td> </tr> </tbody> </table> <h3 id="roomdata-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="room-data_1" data-text="Room data" tabindex="-1">Room data</h3><p>The following example defines room data:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <RoomData> <RoomID>5440OF</RoomID> <Name> <Text text="Single King Bed Room" language="en"/> <Text text="Simple Lit de Roi" language="fr"/> </Name> <Description> <Text text="One king bed with pillowtop mattresses, 300-thread-count linens, and down comforters (bedspreads). City view. 300 square feet. Desk with rolling chair. Multi-line phone with voice mail. Cable/satellite TV with complimentary HBO and pay movies." language="en"/> <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/> </Description> <PhotoURL> <Caption> <Text text="Bathroom View" language="en"/> <Text text="La salle de baines" language="fr"/> </Caption> <URL>http://www.foo.com/static/bar/image1234.jpg</URL> </PhotoURL> <Capacity>4</Capacity> </RoomData> </PropertyDataSet> </Transaction> </code></pre></section> <section><h3 id="room-package-metadata" data-text="Room & package metadata" tabindex="-1">Room & package metadata</h3><p>The following example defines room and package metadata:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>180054</Property> <RoomData> <RoomID>060773</RoomID> <Name> <Text text="Single Bed Room" language="en"/> <Text text="Chambre single" language="fr"/> </Name> <Description> <Text text="Non-smoking" language="en"/> <Text text="Pas de fumiers" language="fr"/> </Description> <PhotoURL> <Caption> <Text text="Living area" language="en"/> <Text text="Le chambre" language="fr"/> </Caption> <URL>http://www.foo.com/static/bar/image1234.jpg</URL> </PhotoURL> </RoomData> <PackageData> <PackageID>P54321</PackageID> <Name> <Text text="Breakfast Included" language="en"/> <Text text="Avec le petit déjeuner" language="fr"/> </Name> <Description> <Text text="Includes a delightful array of jams and jellies." language="en"/> <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/> </Description> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> </PropertyDataSet> </Transaction> </code></pre></section> <section><h3 id="multiple-room-bundles" data-text="Multiple room bundles" tabindex="-1">Multiple room bundles</h3><p>The following example defines room and package metadata for multiple Room Bundles:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <!-- A transaction message with room types result. --> <PropertyDataSet> <Property>12345</Property> <RoomData> <RoomID>single</RoomID> <Name> <Text text="Single room" language="en"/> <Text text="Chambre simple" language="fr"/> </Name> <Description> <Text text="A single room" language="en"/> <Text text="Le chambre simple" language="fr"/> </Description> <PhotoURL> <Caption> <Text text="Living area" language="en"/> <Text text="Le chambre" language="fr"/> </Caption> <URL>http://www.foo.com/static/bar/image1234.jpg</URL> </PhotoURL> <PhotoURL> <URL>http://www.foo.com/static/bar/image1235.jpg</URL> </PhotoURL> <Capacity>2</Capacity> </RoomData> <RoomData> <RoomID>double</RoomID> <Name> <Text text="Double room" language="en"/> <Text text="Chambre double" language="fr"/> </Name> <Occupancy>1</Occupancy> </RoomData> <PackageData> <PackageID>refundbreakfast</PackageID> <Name> <Text text="Refundable Room with Breakfast" language="en"/> <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/> </Name> <Description> <Text text="Continental Breakfast" language="en"/> <Text text="Petit déjeuner continental" language="fr"/> </Description> <ChargeCurrency>hotel</ChargeCurrency> <Refundable available="1" refundable_until_days="3"/> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> <PackageData> <PackageID>prepaid</PackageID> <Name> <Text text="Nonrefundable" language="en"/> <Text text="Non remboursable" language="fr"/> </Name> <Description> <Text text="Blah blah blad" language="en"/> <Text text="Le blah blah blad" language="fr"/> </Description> <Occupancy>2</Occupancy> <ChargeCurrency>web</ChargeCurrency> <Refundable available="0"/> </PackageData> </PropertyDataSet> </Transaction> </code></pre></section> </div> <h2 id="RoomFeatures" data-text="<RoomFeatures>" tabindex="-1"><code translate="no" dir="ltr"><RoomFeatures></code></h2> <p>Defines features found in the room.</p> <p>The <code translate="no" dir="ltr"><RoomFeatures></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <span class="nocode"><code translate="no" dir="ltr"><Transaction></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PropertyDataSet></code></span> // Room and package metadata + <span class="nocode"><Property></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomData></code></span> + <strong><code translate="no" dir="ltr"><RoomFeatures></code></strong> </pre> <h3 id="roomfeatures-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><RoomFeatures></code> element uses the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><span class="nocode"><?xml version="1.0" encoding="UTF-8"?></span> <span class="nocode"><Transaction ... ></span> <span class="nocode"><PropertyDataSet ... > ...</span> <RoomData> <RoomFeatures> <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle> <Beds> <Bed size="[single|semi_double|double|queen|king]"> <Width unit="cm" number="<var translate="no">width</var>"/> <Length unit="cm" number="<var translate="no">length</var>"/> </Bed> <!-- Include with any additional beds. --> </Beds> <Suite/> <Capsule/> <Roomsharing>[shared|private]</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>[smoking|non_smoking]</Smoking> <BathAndToilet relation="[together|separate]"> <Bath bathtub="[false|true]" shower="[false|true]"/> <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <!-- (Optional) Defines the type of views from the room. --> <!-- Example: <OceanView/> --> </Views> </RoomFeatures> ... </RoomData> <span class="nocode">... </PropertyDataSet> </Transactions></span></pre> <h3 id="roomfeatures-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><RoomFeatures></code> element has no attributes.</p> <h3 id="roomfeatures-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><RoomFeatures></code> element has the following child elements:</p> <table class="fixed"> <tr> <th width="18%">Child Element</th> <th width="20%">Required?</th> <th width="18%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><JapaneseHotelRoomStyle></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">enum</span></td> <td><p>Indicates the style of a Japanese hotel room.</p> <p>Valid values are:</p> <ul> <li><code translate="no" dir="ltr">western</code>: A western style room with beds.</li> <li><code translate="no" dir="ltr">japanese</code>: A Japanese style room with futon beds.</li> <li><code translate="no" dir="ltr">japanese_western</code>: A Japanese western style room with both western style beds and Japanese style futons.</li> </ul> </td> </tr> <tr> <td><span translate="no"><Beds></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Contains as many <code translate="no" dir="ltr"><Bed></code> as the room has. Note that the Japanese futons shouldn't be counted here. <p>Each <code translate="no" dir="ltr"><Bed></code> has the following attributes:</p> <ul> <li><code translate="no" dir="ltr">size</code> (optional): Valid values are <code translate="no" dir="ltr">single</code>, <code translate="no" dir="ltr">semi_double</code>, <code translate="no" dir="ltr">double</code>, <code translate="no" dir="ltr">queen</code>, and <code translate="no" dir="ltr">king</code>.</li> </ul> Each <code translate="no" dir="ltr"><Bed></code> has the following child elements: <ul> <li><code translate="no" dir="ltr"><Width></code> (optional): Specifies the bed width. Must have the attribute <code translate="no" dir="ltr">unit</code> with the value <code translate="no" dir="ltr">cm</code> and the attribute <code translate="no" dir="ltr">number</code> with the width of the bed in integer centimeters.</li> <li><code translate="no" dir="ltr"><Length></code> (optional): Specifies the bed length. Must have the attribute <code translate="no" dir="ltr">unit</code> with the value <code translate="no" dir="ltr">cm</code> and the attribute <code translate="no" dir="ltr">number</code> with the length of the bed in integer centimeters.</li> </ul> Example: <pre class="prettyprint" translate="no" dir="ltr"><Beds> <Bed size="double"> <Width unit="cm" number="140"/> <Length unit="cm" number="195"/> </Bed> <Bed/> <!-- Size unknown --> </Beds></pre> </td> </tr> <tr> <td><span translate="no"><Suite></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">empty</span></td> <td>Provide this element when this room is a suite.</td> </tr> <tr> <td><span translate="no"><Capsule></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">empty</span></td> <td>Provide this element when this room is a capsule room.</td> </tr> <tr> <td><span translate="no"><Roomsharing></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">enum</span></td> <td>Whether this room is shared with other occupants such as owners or other guests. Valid values are <code translate="no" dir="ltr">shared</code> and <code translate="no" dir="ltr">private</code>.</td> </tr> <tr> <td><span translate="no"><Outdoor></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">empty</span></td> <td>Provide this element when this room is outdoor lodging that doesn't have fixed walls, plumbing, and climate control. For example, hotel rooms are not outdoor lodging whereas campsites where guests stay in tents and RV parks where guests bring their own RV are outdoor lodging.</td> </tr> <tr> <td><span translate="no"><MobilityAccessible></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">empty</span></td> <td>Provide this element when this room is mobility-accessible.</td> </tr> <tr> <td><span translate="no"><Smoking></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">enum</span></td> <td>Whether this room is a non-smoking room or a smoking room. Valid values are <code translate="no" dir="ltr">non_smoking</code> and <code translate="no" dir="ltr">smoking</code>.</td> </tr> <tr> <td><span translate="no"><BathAndToilet></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Contains information about a bath and toilet in the room. <p>The attribute is:</p> <ul> <li><code translate="no" dir="ltr">relation</code> (optional): Indicates how the bath and toilet are placed against each other. Valid values are <code translate="no" dir="ltr">together</code> (both bath and toilet are located together in the same room (e.g. bathroom) right next to each other) and <code translate="no" dir="ltr">separate</code> (bath and toilet each have dedicated spaces). This attribute must not be set when the room doesn't have both a bath and toilet.</li> </ul> <p>The element optionally takes the following child elements:</p> <ul> <li> <code translate="no" dir="ltr"><Bath></code> (optional): The existence of this element indicates that the room has a bath. <p>The attributes are:</p> <ul> <li><code translate="no" dir="ltr">bathtub</code> (optional): Indicates that the bath has a bathtub in the bathroom. Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>).</li> <li><code translate="no" dir="ltr">shower</code> (optional): Indicates that the bath has a shower. Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>).</li> </ul> </li> <li> <code translate="no" dir="ltr"><Toilet></code> (optional): The existence of this element indicates that this room has a toilet. <p>The attributes are:</p> <ul> <li><code translate="no" dir="ltr">electronic_bidet</code> (optional): Indicates that the toilet has an <a href="https://en.wikipedia.org/wiki/Electronic_bidet">electronic bidet</a>. Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>).</li> <li><code translate="no" dir="ltr">mobility_accessible</code> (optional): Indicates that the toilet is mobility-accessible. Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>).</li> </ul> </li> </ul> <p>Example:</p> <pre class="prettyprint" translate="no" dir="ltr"><BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet></pre> </td> </tr> <tr> <td><span translate="no"><OpenAirBath></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">empty</span></td> <td>Provide this element when this room has a private open-air bath.</td> </tr> <tr> <td><span translate="no"><AirConditioning></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">empty</span></td> <td>Provide this element when this room has air conditioning.</td> </tr> <tr> <td><span translate="no"><Balcony></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">empty</span></td> <td>Provide this element when this room has a balcony or lanai.</td> </tr> <tr> <td><span translate="no"><Views></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Valid options include: <p> <code translate="no" dir="ltr"><AirportView/></code><br> <code translate="no" dir="ltr"><BayView/></code><br> <code translate="no" dir="ltr"><BeachView>/></code><br> <code translate="no" dir="ltr"><CastleView/></code><br> <code translate="no" dir="ltr"><CityView/></code><br> <code translate="no" dir="ltr"><CountrysideView/></code><br> <code translate="no" dir="ltr"><CourtyardView/></code><br> <code translate="no" dir="ltr"><DuneView/></code><br> <code translate="no" dir="ltr"><ForestView/></code><br> <code translate="no" dir="ltr"><GardenView/></code><br> <code translate="no" dir="ltr"><GolfCourseView/></code><br> <code translate="no" dir="ltr"><HarborView/></code><br> <code translate="no" dir="ltr"><LagoonView/></code><br> <code translate="no" dir="ltr"><LakeView/></code><br> <code translate="no" dir="ltr"><MarinaView/></code><br> <code translate="no" dir="ltr"><MountainView/></code><br> <code translate="no" dir="ltr"><NatureView/></code><br> <code translate="no" dir="ltr"><OceanView/></code><br> <code translate="no" dir="ltr"><ParkView/></code><br> <code translate="no" dir="ltr"><PartialOceanView/></code><br> <code translate="no" dir="ltr"><PisteView/></code><br> <code translate="no" dir="ltr"><PoolView/></code><br> <code translate="no" dir="ltr"><PyramidView/></code><br> <code translate="no" dir="ltr"><RiverView/></code><br> <code translate="no" dir="ltr"><StreetView/></code><br> </p> </td> </tr> </table> <h3 id="roomfeatures-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <p><code translate="no" dir="ltr">JapaneseHotelRoomStyle</code> doesn't have a default value. Omitting a value does not result in an XML error, but your listing is not shown in the search results, when the user filters by room style or beds.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="two-single-beds" data-text="Two single beds" tabindex="-1">Two single beds</h3><p>The following example shows how to use <code translate="no" dir="ltr"><RoomFeatures></code>:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <RoomData> <RoomID>RoomID_1</RoomID> <RoomFeatures> <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle> <Beds> <!-- Two single beds --> <Bed size="single"> <Width unit="cm" number="97"/> <Length unit="cm" number="195"/> </Bed> <Bed size="single"> <Width unit="cm" number="97"/> <Length unit="cm" number="195"/> </Bed> </Beds> <Suite/> <Capsule/> <Roomsharing>private</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>non_smoking</Smoking> <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <LakeView/> <MarinaView/> <BeachView/> <ForestView/> <MountainView/> <NatureView/> </Views> </RoomFeatures> </RoomData> </PropertyDataSet> </Transaction> </code></pre></section> <section><h3 id="two-double-beds" data-text="Two double beds" tabindex="-1">Two double beds</h3><p>The following is an example of <code translate="no" dir="ltr">western</code> style Japanese room with two <code translate="no" dir="ltr">double</code> beds.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2023-07-23T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <RoomData> <RoomID>RoomID_1</RoomID> <RoomFeatures> <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle> <Beds> <!-- Two double beds--> <Bed size="double"></Bed> <Bed size="double"></Bed> </Beds> </RoomFeatures> </RoomData> </PropertyDataSet> </Transaction> </code></pre></section> </div> <p><br></p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="japanese-style-without-bed" data-text="Japanese style without bed" tabindex="-1">Japanese style without bed</h3><p>The following is an example of a Japanese style room without bed. Bed information is not required for <code translate="no" dir="ltr">japanese</code> style room.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2023-07-23T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <RoomData> <RoomID>RoomID_1</RoomID> <RoomFeatures> <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle> </RoomFeatures> </RoomData> </PropertyDataSet> </Transaction> </code></pre><aside class="key-point"><strong>Key Point:</strong><span> Providing bed information for a <strong><code translate="no" dir="ltr">japanese</code></strong> style room has no impact.</span></aside></section> <section><h3 id="japanese-western-with-bed" data-text="Japanese western with bed" tabindex="-1">Japanese western with bed</h3><p>The following is an example of a <code translate="no" dir="ltr">japanese_western</code> style room with <code translate="no" dir="ltr">king</code> size bed.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2023-07-23T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <RoomData> <RoomID>RoomID_1</RoomID> <RoomFeatures> <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle> <Beds> <Bed size="king"></Bed> </Beds> </RoomFeatures> </RoomData> </PropertyDataSet> </Transaction> </code></pre> <p></p> <p>If partner doesn't have the number of beds information in <code translate="no" dir="ltr">japanese_western</code> rooms, then follow the example:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2023-07-23T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <RoomData> <RoomID>RoomID_1</RoomID> <RoomFeatures> <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle> </RoomFeatures> </RoomData> </PropertyDataSet> </Transaction> </code></pre></section> </div> <h2 id="PackageData" data-text="<PackageData>" tabindex="-1"><code translate="no" dir="ltr"><PackageData></code></h2> <p>Defines itinerary-independent metadata about Room Bundles for a property. This element contains information that is associated with a partner and hotel, but not with an itinerary. The intended purpose is to define all non-itinerary data once and reference it from itinerary data.</p> <p>The <code translate="no" dir="ltr"><PackageData></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <span class="nocode"><code translate="no" dir="ltr"><Transaction></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PropertyDataSet></code></span> // Room and package metadata + <span class="nocode"><Property></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomData></code></span> + <strong><code translate="no" dir="ltr"><PackageData></code></strong> + <span class="nocode"><code translate="no" dir="ltr"><Result></code></span> // Pricing and availability + <span class="nocode"><code translate="no" dir="ltr"><Rates></code></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomBundle></code></span> + ... </pre> <p>The <code translate="no" dir="ltr"><PackageData></code> element is similar to <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a>, but it describes rate features and terms that aren't part of the physical room description. You use <code translate="no" dir="ltr"><RoomData></code> and <code translate="no" dir="ltr"><PackageData></code> in combination to provide details about Room Bundles and rate features. For individual rooms that aren't part of a package, use just <code translate="no" dir="ltr"><RoomData></code>.</p> <p>You can define both the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a> and <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> elements for the same room or Room Bundle. When Google displays that room or package in the search results, it will include the descriptions from both, separated by a hyphen.</p> <p>If you update a single <code translate="no" dir="ltr"><PackageData></code> element for a property, you must update all <code translate="no" dir="ltr"><PackageData></code> and <code translate="no" dir="ltr"><RoomData></code> elements for the property. Each <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PropertyDataSet"><code translate="no" dir="ltr"><PropertyDataSet></code></a> is considered all data about the property, and overwrites any existing data.</p> <p>For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>.</p> <h3 id="packagedata-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><PackageData></code> element uses the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><span class="nocode"><?xml version="1.0" encoding="UTF-8"?></span> <span class="nocode"><Transaction ... ></span> <span class="nocode"><PropertyDataSet ... ></span> <PackageData> <PackageID><var translate="no">package_ID</var></PackageID> <Name> <Text text="<var translate="no">package_name</var>" language="<var translate="no">language_code</var>"/> ... </Name> <Description> <Text text="<var translate="no">package_description</var>" language="<var translate="no">language_code</var>"/> ... </Description> <Refundable available="[false|true]" refundable_until_days="<var translate="no">number_of_days</var>" refundable_until_time="<var translate="no">time</var>"/> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy><var translate="no">max_number_of_intended_occupants</var></Occupancy> <OccupancyDetails><!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> <!-- For these next 3 elements, boolean_value can be 0/1 or true/false --> <BreakfastIncluded><var translate="no">boolean_value</var></BreakfastIncluded> <InternetIncluded><var translate="no">boolean_value</var></InternetIncluded> <ParkingIncluded><var translate="no">boolean_value</var></ParkingIncluded> <PhotoURL> <Caption> <Text text="<var translate="no">photo_description</var>" language="<var translate="no">language_code</var>"/> ... </Caption> <URL><var translate="no">photo_location</var></URL> </PhotoURL> ... <Meals> <Breakfast included="[true|false]" buffet="[true|false]" in_room="[true|false]" in_private_space="[true|false]"/> <Dinner included="[true|false]" buffet="[true|false]" in_room="[true|false]" in_private_space="[true|false]"/> </Meals> <CheckinTime><var translate="no">checkin_time</var></CheckinTime> <CheckoutTime><var translate="no">checkout_time</var></CheckoutTime> <MembershipBenefitsIncluded> <ProgramName> <Text language="en" text="Special Rewards"> </ProgramName> <ProgramLevel> <Text language="en" text="Platinum"> </ProgramLevel> </MembershipBenefitsIncluded> <OnPropertyCredit> <Amount currency="USD">123.45</Amount> </OnPropertyCredit> </PackageData> <!-- a PackageID with a <code translate="no" dir="ltr">MilesIncluded</code> rate feature --> <PackageData> <PackageID>room_with_miles</PackageID> <Name> <Text text="Room with Bundled Miles" language="en"> </Name> <ChargeCurrency>hotel </ChargeCurrency> <MilesIncluded> <NumberOfMiles>1000 </NumberOfMiles> <Provider> <Text language="en" text="United Airlines"> </Provider> </MilesIncluded> </PackageData> ... <span class="nocode">... </PropertyDataSet> ... </Transaction></span></pre> <h3 id="packagedata-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><PackageData></code> element has no attributes.</p> <h3 id="packagedata-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><PackageData></code> element has the following child elements:</p> <table class="fixed"> <tr> <th width="20%">Child Element</th> <th width="10%">Required?</th> <th width="8%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><BreakfastIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Specifies whether this package includes breakfast with the rate. Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>). <p class="note">It is preferred that you use <code translate="no" dir="ltr"><Meals></code> instead of <code translate="no" dir="ltr"><BreakfastIncluded></code>.</p> </td> </tr> <tr> <td><span translate="no"><ChargeCurrency></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">enum</span></td> <td>When and where the user pays for a booking. This element uses the same syntax as <code translate="no" dir="ltr"><ChargeCurrency></code> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>. <p>The default value is <code translate="no" dir="ltr">web</code>.</p> </td> </tr> <tr> <td><span translate="no"><CheckinTime></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Time">Time</a></span></td> <td>Earliest possible check-in time. Time must be less than 24:00 in the local time of the hotel.</td> </tr> <tr> <td><span translate="no"><CheckoutTime></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Time">Time</a></span></td> <td>Latest possible check-out time in the local time of the hotel. </td> </tr> <tr> <td><span translate="no"><Description></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>A detailed description of the package. This element should contain information not described by other elements or the <code translate="no" dir="ltr"><Name></code> element. You shouldn't use all capital letters when specifying the description of the room. <p>The <code translate="no" dir="ltr"><Description></code> element takes a single child element, <code translate="no" dir="ltr"><Text></code>, which has two required attributes, <code translate="no" dir="ltr">text</code> and <code translate="no" dir="ltr">language</code>. The <code translate="no" dir="ltr">text</code> attribute is the description, and the <code translate="no" dir="ltr">language</code> attribute specifies a two-letter language code, as the following example shows:</p> <pre class="prettyprint" translate="no" dir="ltr"><Description> <Text text="Two breakfast buffet certificates for each night of stay." language="en"/> <Text text="Deux certificats petit-déjeuner buffet pour chaque nuit de séjour." language="fr"/> </Description></pre> </td> </tr> <tr> <td><span translate="no"><InternetIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>If a package includes internet access at no charge, while other packages wouldn't include that amenity. Don't set this element for Room Bundles in a hotel that provides free internet to all rooms. This element does not apply to in-room wired internet or wireless internet that is not available in guest rooms. Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>). </td> </tr> <tr> <td><span translate="no"><Meals></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Contains information about meals in this package. <p>The <code translate="no" dir="ltr"><Meals></code> element takes two optional child elements, <code translate="no" dir="ltr"><Breakfast></code> and <code translate="no" dir="ltr"><Dinner></code>, which have the following attributes:</p> <ul> <li><code translate="no" dir="ltr">included</code> (required): Set to <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>) if the rate includes breakfast/dinner; otherwise set to <code translate="no" dir="ltr">0</code> or <code translate="no" dir="ltr">false</code>.</li> <li><code translate="no" dir="ltr">in_room</code> (optional): Set to <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>) if guests have the option to have breakfast/dinner in the room they stay in; otherwise set to <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>).</li> <li><code translate="no" dir="ltr">in_private_space</code> (optional): Set to <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>) if guests have the option to have breakfast/dinner in a space (except the room they stay in) where they can avoid contact with other guests; otherwise set to <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>).</li> <li><code translate="no" dir="ltr">buffet</code> (optional): Set to <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>) if breakfast/dinner is served as a buffet; otherwise set to <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>).</li> </ul> <p>The optional attributes are used only when <code translate="no" dir="ltr">included</code> is true.</p> <p>For meal filters (<code translate="no" dir="ltr">no meals</code>, <code translate="no" dir="ltr">breakfast only</code>, <code translate="no" dir="ltr">dinner only</code>, and <code translate="no" dir="ltr">breakfast and dinner</code>) to work, both <code translate="no" dir="ltr"><Breakfast></code> and <code translate="no" dir="ltr"><Dinner></code> need to be provided with the <code translate="no" dir="ltr">included</code> attribute.</p> </td> </tr> <tr> <td><span translate="no"><Name></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">string</span></td> <td>The name of the package. This value should match what appears on the hotel's landing page. Don't set the value of this element to all capital letters. <p>This element takes a single child element, <code translate="no" dir="ltr"><Text></code>, which has two attributes, <code translate="no" dir="ltr">text</code> and <code translate="no" dir="ltr">language</code>. The <code translate="no" dir="ltr">text</code> attribute is the description, and the <code translate="no" dir="ltr">language</code> attribute specifies a two-letter language code, as the following example shows:</p> <pre class="prettyprint" translate="no" dir="ltr"><Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name></pre> </td> </tr> <tr> <td><span translate="no"><Occupancy></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">integer</span></td> <td>The maximum number of guests that a Room Bundle <em>is intended for</em>. For example, a large suite might be able to physically accommodate 6 guests, but is intended for up to 4 guests only. <p>This value must be less than or equal to the <code translate="no" dir="ltr"><Capacity></code> element, which is the number of people that the room can physically accommodate.</p> <p>The value of <code translate="no" dir="ltr"><Occupancy></code> must be a positive integer between 1 and 99, inclusive.</p> <p>If you specify this element in both <code translate="no" dir="ltr"><RoomBundle></code> and <code translate="no" dir="ltr"><PackageData></code>, the value in <code translate="no" dir="ltr"><RoomBundle></code> takes precedence.</p> <p><b>Note</b>:</p> <code translate="no" dir="ltr"><Occupancy></code> may be accompanied by <code translate="no" dir="ltr"><OccupancyDetails></code>,which specifies the type of guests (adults or children). Refer to <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#OccupancyDetails"><code translate="no" dir="ltr"><OccupancyDetails></code></a> for syntax and description of child elements. </td> </tr> <tr> <td><span translate="no"><PackageID></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">string</span></td> <td><p>The unique ID for the package. Use this ID to match the Room Bundle data with the <code translate="no" dir="ltr"><Result></code> blocks in your pricing updates. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>.</p> <p>(You can also use this ID to reference a common Room Bundle definition used in a single Transaction message when defining Room Bundle data inline.)</p> </td> </tr> <tr> <td><span translate="no"><ParkingIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Whether a Room Bundle includes parking at no charge, where parking would otherwise be a paid service at this hotel. Don't specify a value for this element for a hotel that offers free parking. <p>Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>). The default value is <code translate="no" dir="ltr">false</code>.</p> </td> </tr> <tr> <td><span translate="no"><PhotoURL></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>(Same as <code translate="no" dir="ltr"><PhotoURL></code> in <code translate="no" dir="ltr"><RoomData></code>, but for the package (e.g. meal photos).) </td> </tr> <tr> <td><span translate="no"><Refundable></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Enables listing a rate as being fully refundable or providing a free cancellation. If not provided, no information about a refund is displayed. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> level. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Rates"><code translate="no" dir="ltr"><Rates></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level. Refundable pricing can also be highlighted to users through alternative options without directly modifying your transaction message schema. Learn more about these options <a href="https://support.google.com/hotelprices/answer/9824483">Refundable rates policy</a>. <p></p> <p>The following example shows the <code translate="no" dir="ltr"><Refundable></code> element with all of its attributes set:</p> <pre class="prettyprint" translate="no" dir="ltr"><Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/></pre> <p><b>Note:</b> We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set.</p> <p>If you don't set any attributes, the rate does not display as refundable. The attributes are:</p> <ul> <li><code translate="no" dir="ltr">available</code>: (Required) Set to <code translate="no" dir="ltr">1</code> or <code translate="no" dir="ltr">true</code> to indicate if the rate allows a full refund; otherwise set to <code translate="no" dir="ltr">0</code> or <code translate="no" dir="ltr">false</code>.</li> <li><code translate="no" dir="ltr">refundable_until_days</code>: (Required if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the number of days in advance of check-in that a full refund can be requested. The value of <code translate="no" dir="ltr">refundable_until_days</code> must be an integer between 0 and 330, inclusive.</li> <li><code translate="no" dir="ltr">refundable_until_time</code>: (Highly recommended if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the latest time of day, in the local time of the hotel, that a full refund request will be honored. This can be combined with <code translate="no" dir="ltr">refundable_until_days</code> to specify, for example, that "refunds are available until 4:00PM two days before check-in". If <code translate="no" dir="ltr">refundable_until_time</code> isn't set, the value defaults to midnight. <p>The value of this attribute uses the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Time">Time</a> format.</p> </li> </ul> <p>When setting the attributes, note the following:</p> <ul> <li>If <code translate="no" dir="ltr">available</code> or <code translate="no" dir="ltr">refundable_until_days</code> isn't set, the rate does not display as refundable.</li> <li>If <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">0</code> or <code translate="no" dir="ltr">false</code>, the other attributes are ignored. The rate does not display as refundable even if one or both of the other attributes is set.</li> </ul> </td> </tr> <tr> <td><span translate="no"><MembershipBenefits<wbr> Included></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Rate includes elite status benefits for duration of stay. Includes the following parameters: <ul> <li><code translate="no" dir="ltr">ProgramName</code>: Name of the elite status program</li> <li><code translate="no" dir="ltr">ProgramLevel</code>: Level of the program. For example: "Gold."</li> <li><code translate="no" dir="ltr">NightlyValue (optional)</code>: Nightly value of the benefits.</li> </ul> </td> </tr> <tr> <td><span translate="no"><CarRentalIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Rate includes free car rental for duration of stay. </td> </tr> <tr> <td><span translate="no"><MilesIncluded></span>></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Rate includes frequent flyer miles. Parameters include: <ul> <li><code translate="no" dir="ltr">NumberofMiles</code>: Number of miles per itinerary.</li> <li><code translate="no" dir="ltr">Provider</code>: Frequent flyer miles provide.</li> </ul> </td> </tr> <tr> <td><span translate="no"><OnPropertyCredit></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Rate includes on-property credit (F&B, resort, spa, etc). Parameter: <ul> <li><code translate="no" dir="ltr">Amount</code>: The value of the credit per itinerary, in local currency.</li> </ul> </td> </tr> <tr> <td><span translate="no"><AirportTransportationIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Rate includes free transportation to/from a nearby airport. The optional <code translate="no" dir="ltr">direction</code> attribute specifies the directionality of the transportation. Valid values include: <ul> <code translate="no" dir="ltr">from</code>: Transportation is provided from the airport to the property. This is the default value if no direction is specified. <code translate="no" dir="ltr">to</code>: Transportation is provided to the airport from the property. <code translate="no" dir="ltr">round_trip</code>: Transportation is provided both to and from the airport. </ul> </td> </tr> </table> <h3 id="packagedata-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="single-room-bundle" data-text="Single room bundle" tabindex="-1">Single room bundle</h3><p>The following example defines a single Room Bundle, with an occupancy of 2 (one adult and one child) and includes breakfast:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <PackageData> <Occupancy>2</Occupancy> <OccupancyDetails> <NumAdults>1</NumAdults> <Children> <Child age="17"/> </Children> </OccupancyDetails> <PackageID>P54321</PackageID> <Name> <Text text="Breakfast Included" language="en"/> <Text text="Avec le petit déjeuner" language="fr"/> </Name> <Description> <Text text="Two certificates for continental breakfast will be provided." language="en"/> <Text text="Deux certificats pour le petit déjeuner continental seront fournis." language="fr"/> </Description> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> </PropertyDataSet> </Transaction> </code></pre></section> <section><h3 id="room-and-package-metadata" data-text="Room and package metadata" tabindex="-1">Room and package metadata</h3><p>The following example defines room and package metadata:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>180054</Property> <RoomData> <RoomID>060773</RoomID> <Name> <Text text="Single Bed Room" language="en"/> <Text text="Chambre single" language="fr"/> </Name> <Description> <Text text="Non-smoking" language="en"/> <Text text="Pas de fumiers" language="fr"/> </Description> <PhotoURL> <Caption> <Text text="Living area" language="en"/> <Text text="Le chambre" language="fr"/> </Caption> <URL>http://www.foo.com/static/bar/image1234.jpg</URL> </PhotoURL> </RoomData> <PackageData> <PackageID>P54321</PackageID> <Name> <Text text="Breakfast Included" language="en"/> <Text text="Avec le petit déjeuner" language="fr"/> </Name> <Description> <Text text="Includes a delightful array of jams and jellies." language="en"/> <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/> </Description> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> </PropertyDataSet> </Transaction> </code></pre></section> <section><h3 id="multiple-room-bundles_1" data-text="Multiple room bundles" tabindex="-1">Multiple room bundles</h3><p>The following example defines room and package metadata for multiple Room Bundles:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <!-- A transaction message with room types result. --> <PropertyDataSet> <Property>12345</Property> <RoomData> <RoomID>single</RoomID> <Name> <Text text="Single room" language="en"/> <Text text="Chambre simple" language="fr"/> </Name> <Description> <Text text="A single room" language="en"/> <Text text="Le chambre simple" language="fr"/> </Description> <PhotoURL> <Caption> <Text text="Living area" language="en"/> <Text text="Le chambre" language="fr"/> </Caption> <URL>http://www.foo.com/static/bar/image1234.jpg</URL> </PhotoURL> <PhotoURL> <URL>http://www.foo.com/static/bar/image1235.jpg</URL> </PhotoURL> <Capacity>2</Capacity> </RoomData> <RoomData> <RoomID>double</RoomID> <Name> <Text text="Double room" language="en"/> <Text text="Chambre double" language="fr"/> </Name> <Occupancy>1</Occupancy> </RoomData> <PackageData> <PackageID>refundbreakfast</PackageID> <Name> <Text text="Refundable Room with Breakfast" language="en"/> <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/> </Name> <Description> <Text text="Continental Breakfast" language="en"/> <Text text="Petit déjeuner continental" language="fr"/> </Description> <ChargeCurrency>hotel</ChargeCurrency> <Refundable available="1" refundable_until_days="3"/> <BreakfastIncluded>1</BreakfastIncluded> </PackageData> <PackageData> <PackageID>prepaid</PackageID> <Name> <Text text="Nonrefundable" language="en"/> <Text text="Non remboursable" language="fr"/> </Name> <Description> <Text text="Blah blah blad" language="en"/> <Text text="Le blah blah blad" language="fr"/> </Description> <Occupancy>2</Occupancy> <ChargeCurrency>web</ChargeCurrency> <Refundable available="0"/> </PackageData> </PropertyDataSet> </Transaction> </code></pre></section> </div> <p><br></p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="room-bundle-with-rates" data-text="Room bundle with rates" tabindex="-1">Room bundle with rates</h3><p>The following example defines room and package metadata for a Room bundle with rate features:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID"> <PropertyDataSet> <Property>12345</Property> <RoomData> ... </RoomData> <!-- definitions of PackageData types including rate features --> <PackageData> <PackageID>room_with_addl_benefits</PackageID> <Name> <Text text="Acme Hotels 2017 Promotion Package" language="en"/> </Name> <ChargeCurrency>hotel</ChargeCurrency> <BreakfastIncluded>1</BreakfastIncluded> <MembershipBenefitsIncluded> <ProgramName> <Text language="en" text="Marriott Rewards"/> </ProgramName> <ProgramLevel> <Text language="en" text="Platinum"/> </ProgramLevel> </MembershipBenefitsIncluded> <OnPropertyCredit> <Amount currency="USD">123.45</Amount> </OnPropertyCredit> </PackageData> <PackageData> <PackageID>room_with_miles</PackageID> <Name> <Text text="Room with Bundled Miles" language="en"/> </Name> <ChargeCurrency>hotel</ChargeCurrency> <MilesIncluded> <NumberOfMiles>1000</NumberOfMiles> <Provider> <Text language="en" text="United Airlines"/> </Provider> </MilesIncluded> <AirportTransportationIncluded direction="from"/> </PackageData> </PropertyDataSet> <!-- The actual list of prices --> <Result> … </Result> </Transaction> </code></pre></section> <section><h3 id="meals-photos" data-text="Meals & photos" tabindex="-1">Meals & photos</h3><p>The following example defines room and package metadata for meals, photos, and check-in and check-out times:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <PackageData> <PackageID>PackageID_1</PackageID> <Name> <Text text="Meals Included" language="en"/> </Name> <PhotoURL> <Caption> <Text text="Breakfast" language="en"/> <Text text="朝食" language="ja"/> </Caption> <URL>http://example.com/static/bar/image1234.jpg</URL> </PhotoURL> <Meals> <!-- Guests can choose to have breakfast in their room or in another space to avoid contact with other guests. --> <Breakfast included="1" in_room="1" in_private_space="1"/> <Dinner included="1" buffet="1"/> </Meals> <CheckinTime>15:00</CheckinTime> <CheckoutTime>11:00</CheckoutTime> </PackageData> </PropertyDataSet> </Transaction> </code></pre></section> <section><h3 id="breakfast" data-text="Breakfast" tabindex="-1">Breakfast</h3><pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <PropertyDataSet> <Property>1234</Property> <PackageData> <PackageID>PackageID_1</PackageID> <Name> <Text text="Breakfast Included" language="en"/> </Name> <PhotoURL> <Caption> <Text text="Breakfast" language="en"/> <Text text="朝食" language="ja"/> </Caption> <URL>http://example.com/static/bar/image1234.jpg</URL> </PhotoURL> <Meals> <Breakfast included="true"/> <!-- Dinner not included needs to be explicitly specified --> <Dinner included="false"/> </Meals> <CheckinTime>15:00</CheckinTime> <CheckoutTime>11:00</CheckoutTime> </PackageData> </PropertyDataSet> </Transaction> </code></pre><aside class="key-point"><strong>Key Point:</strong><span> You must explicitly specify the <code translate="no" dir="ltr">Breakfast</code> and <code translate="no" dir="ltr">Dinner</code> as <code translate="no" dir="ltr">false</code>, if you want to exclude it from your meal option.</span></aside></section> </div> <h2 id="Result" data-text="<Result>" tabindex="-1"><code translate="no" dir="ltr"><Result></code></h2> <p>A container for pricing and availability updates in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Transaction"><code translate="no" dir="ltr"><Transaction></code></a> message.</p> <aside class="key-point"><strong>Key Point:</strong><span> Leave <code translate="no" dir="ltr"><BaseRate></code> for the <code translate="no" dir="ltr"><Result></code> empty for shared rooms (e.g., dorm-style hostels). Instead, convey shared or hostel pricing info in <a href="#RoomBundle"><code translate="no" dir="ltr"><RoomBundle></code></a>.</span></aside> <p>The <code translate="no" dir="ltr"><Result></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <span class="nocode"><code translate="no" dir="ltr"><Transaction></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PropertyDataSet></code></span> // Room and package metadata + <span class="nocode"><Property></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PackageData></code></span> + <strong><code translate="no" dir="ltr"><Result></code></strong> // Pricing and availability + <span class="nocode"><code translate="no" dir="ltr"><Rates></code></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomBundle></code></span> + ... </pre> <p>Use <code translate="no" dir="ltr"><Result></code> to set or update room prices and define available inventory. Items defined in this element typically reference itinerary-independent metadata about a room or package (such as a description or set of amenities) defined in <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> and <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a>.</p> <p>You typically send Transaction messages with pricing updates very frequently. Exactly how and how often you do this depends on your <a href="/hotels/hotel-prices/dev-guide/delivery-mode">delivery mode</a>.</p> <p>You can use <code translate="no" dir="ltr"><Result></code> in a Transaction message to remove itineraries, as described in <a href="/hotels/hotel-prices/dev-guide/removing-inventory">Removing Inventory</a>. For more information about using Transaction messages to update prices and availability, <a href="/hotels/hotel-prices/dev-guide/inventory">Adding and Updating Inventory</a>.</p> <p>A single Transaction message can include any number of <code translate="no" dir="ltr"><Result></code> elements in it, as long as the size of the message does not exceed 100MB.</p> <h3 id="result-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><Result></code> element uses the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><span class="nocode"><?xml version="1.0" encoding="UTF-8"?> <Transaction ... ></span> <Result> <!-- Required --> <Property><var translate="no">hotel_ID</var></Property> <!-- Required --> <Checkin><var translate="no">YYYY-MM-DD</var></Checkin> <!-- Required --> <Nights><var translate="no">number_of_nights</var></Nights> <Baserate currency="<var translate="no">currency_code</var>"><var translate="no">price</var></Baserate> <!-- Only required when <Baserate> contains a real price --> <Tax currency="<var translate="no">currency_code</var>"><var translate="no">tax_amount</var></Tax> <!-- Only required when <Baserate> contains a real price --> <OtherFees currency="<var translate="no">currency_code</var>"><var translate="no">fee_amount</var></OtherFees> <Refundable available="[false|true]" refundable_until_days="<var translate="no">number_of_days</var>" refundable_until_time="<var translate="no">time</var>"/> <RoomID><var translate="no">room_ID</var></RoomID> <PackageID><var translate="no">package_ID</var></PackageID> <ExpirationTime><var translate="no">expiration_time</var></ExpirationTime> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy><var translate="no">max_number_of_intended_occupants</var></Occupancy> <!-- For Baserate, occupancy value must be greater than or equal to 2. If a value is not provided for occupancy, it defaults to 2. --> <OccupancyDetails><var translate="no">occupancy_info</var></OccupancyDetails> <Rates>...</Rates> <RoomBundle>...</RoomBundle> <AllowablePointsOfSale> <PointOfSale id="<var translate="no">landing_page_identifier</var>"/> ... </AllowablePointsOfSale> <Custom[1-5]><var translate="no">custom_value</var></Custom[1-5]> </Result> <span class="nocode">... </Transaction></span></pre> <h3 id="result-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><Result></code> element has the following attributes:</p> <table class="fixed"> <tr> <th width="18%">Attribute</th> <th width="10%">Required?</th> <th width="10%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no">mergeable</span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>By default, new prices for a specific hotel and itinerary pair will overwrite any previous (non-expired) prices present in Google's cache. The mergeable attribute lets you store additional prices to Google's cache without deleting previous pricing information. Live Pricing Query with Context responses will always have this attribute set to <code translate="no" dir="ltr">true</code> (regardless of your transaction message response).</td> </tr> </table> <h3 id="result-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><Result></code> element has the following child elements:</p> <table class="fixed"> <tbody> <tr> <th width="21%">Child Element</th> <th width="10%">Required?</th> <th width="14%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><AllowablePointsOfSale></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>One or more landing pages that are eligible for the hotel. A landing page is a website that can handle the booking process for the end-user. To explicitly include certain landing page (and exclude others), add one or more <code translate="no" dir="ltr"><AllowablePointsOfSale></code> elements that match the <code translate="no" dir="ltr"><PointOfSale></code> element's <code translate="no" dir="ltr">id</code> attribute in the landing pages file. <p>If you don't include this element, all landing pages defined in the landing pages file are considered eligible to be used for booking the room. For more information, refer to <a href="https://developers.google.com/hotels/hotel-prices/dev-guide/pos-syntax">Landing Pages File Syntax</a>.</p> </td> </tr> <tr> <td><span translate="no"><Baserate></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">float</span></td> <td><p>The price of the room for the stay. The value of this element should reflect the following:</p> <ul> <li>For a private room, set the least expensive double-occupancy rate that you offer. Higher occupancies are allowed here if you don't have a double-occupancy rate and your account has non-double occupancy rates enabled. Please <a href="https://support.google.com/hotelprices/gethelp">contact us</a> to enable non-double occupancy rates. Single occupancy rates are not allowed here—they must be set under <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Rates"><code translate="no" dir="ltr"><Rates></code></a>.</li> <li>For a shared room, leave empty and use <code translate="no" dir="ltr"><RoomBundle></code>.</li> <li>This value should be the total base price for all nights, not the average nightly rate.</li> </ul> <p>When the room is unavailable for the itinerary, <code translate="no" dir="ltr"><Baserate></code> should either be omitted or set to <code translate="no" dir="ltr">-1</code>, and <a href="#UnavailableTag"><code translate="no" dir="ltr"><Unavailable></code></a> should be specified, along with any known reasons for the unavailability.</p> <p>To remove a Room Bundle, use the instructions in <a href="https://developers.google.com/hotels/hotel-prices/dev-guide/room-bundles#removing">Removing a Room Bundle</a>. </p> <p>The <code translate="no" dir="ltr"><Baserate></code> must not contain any digit grouping symbols, such as a comma (,) or period (.). Always separate fractions using a period (.) as the decimal mark. For example, represent $1,200.40 as:</p> <pre class="prettyprint" translate="no" dir="ltr"><Baserate currency="USD">1200.40</Baserate></pre> <p>The <code translate="no" dir="ltr"><Baserate></code> element takes the following optional attributes:</p> <ul> <li><code translate="no" dir="ltr">all_inclusive</code>: A Boolean that indicates if this rate includes taxes and fees. In general, set this value to <code translate="no" dir="ltr">false</code> for US and Canadian end-users and supply values for the <code translate="no" dir="ltr"><Tax></code> and <code translate="no" dir="ltr"><OtherFees></code> elements. If you use all-inclusive prices, you may not be eligible to appear in the listings if your prices don't separate out taxes and fees for Canadian users. <p class="note">All-inclusive prices are now shown to US users.</p> <p>For all other end-users, you typically include the taxes and fees in the base rate and set the value of the <code translate="no" dir="ltr">all_inclusive</code> attribute to <code translate="no" dir="ltr">true</code>. For more information, refer to <a href="https://support.google.com/hotelprices/answer/6064432">Taxes and Fees Policy</a>.</p> <p>The default value is <code translate="no" dir="ltr">false</code>.</p> </li> <li><code translate="no" dir="ltr">currency</code>: The three-letter <a href="https://support.google.com/merchants/answer/160637">currency code</a>. For example, <code translate="no" dir="ltr">USD</code> for US dollars.</li> </ul> </td> </tr> <tr> <td><span translate="no"><ChargeCurrency></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">enum</span></td> <td>When and where the user pays for a booking. This element can be used in a Transaction message in the <code translate="no" dir="ltr"><Result></code> element for the Hotel Price or <code translate="no" dir="ltr"><PackageData></code> block for a Room Bundle. <p>Valid values are:</p> <ul> <li><code translate="no" dir="ltr">web</code>: The user is charged online at the time of booking. This is the default value. The actual landing page is defined by the <a href="/hotels/hotel-prices/dev-guide/pos-syntax"> landing page file</a>, and can be affected by the user's currency, location, language, or other factors.</li> <li><code translate="no" dir="ltr">hotel</code>: The user is charged when checking in at the hotel. If payment must always be made in the hotel's currency, set the value of <code translate="no" dir="ltr"><ChargeCurrency></code> to <code translate="no" dir="ltr">hotel</code>. The actual landing page is not affected by the user's currency.</li> <li><code translate="no" dir="ltr">deposit</code>: The user is charged some portion immediately and the remainder is charged at a later point in time, typically when the user checks out of the hotel.</li> <li><code translate="no" dir="ltr">installments</code>: The user is charged an initial fraction of the total sum due and is expected to routinely pay a set balance over a fixed period of time.</li> </ul> <p>The default value is <code translate="no" dir="ltr">web</code>.</p> </td> </tr> <tr> <td><span translate="no"><Checkin></span></td> <td><span translate="no">Required</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a></span></td> <td>The check-in date for an itinerary using the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date">Date</a> format. The combination of the <code translate="no" dir="ltr"><Nights></code> element and the <code translate="no" dir="ltr"><Checkin></code> element make up an itinerary.</td> </tr> <tr> <td><span translate="no"><Custom[1‑5]></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">string</span></td> <td>Defines a custom field that you can use to pass additional data associated with a hotel. You can pass up to five custom values with the following element names: <ul> <li><code translate="no" dir="ltr"><Custom1></code></li> <li><code translate="no" dir="ltr"><Custom2></code></li> <li><code translate="no" dir="ltr"><Custom3></code></li> <li><code translate="no" dir="ltr"><Custom4></code></li> <li><code translate="no" dir="ltr"><Custom5></code> </li> </ul> <p>The <code translate="no" dir="ltr"><Custom></code> elements let you pass arbitrary data. For example, you can specify a value in this field that will then be used by the landing pages file to construct a custom URL for a landing page. There is a limit of 200 characters per custom field. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/pos-syntax">landing page files </a>.</p> <p class="note"><Custom> elements provided in the <code translate="no" dir="ltr"><Rate></code> element are not inherited to the <code translate="no" dir="ltr"><RoomBundle></code> element. You should define <Custom> attribute separately in each <code translate="no" dir="ltr"><RoomBundle></code>. </p> </td> </tr> <tr> <td><span translate="no"><ExpirationTime></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a></span></td> <td>The date and time at which the price is considered expired (3 hours minimum). <p>We recommend that you don't provide expiration timestamps if it isn't critical to your pricing structure. </p> <p>Google doesn't serve any prices that are expired, and any itinerary that has an expired price will become eligible for <a href="/hotels/hotel-prices/dev-guide/query-messages#live-queries"> Live Pricing Querying</a>.</p> </td> </tr> <tr> <td><span translate="no"><Nights></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">integer</span></td> <td>The number of nights for an itinerary. The value of the <code translate="no" dir="ltr"><Nights></code> element must be a positive integer. The combination of <code translate="no" dir="ltr"><Nights></code> and <code translate="no" dir="ltr"><Checkin></code> make up an itinerary.</td> </tr> <tr> <td><span translate="no"><OtherFees></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">float</span></td> <td>Fees other than the base rate and taxes that influence the final price of a room. The <code translate="no" dir="ltr"><OtherFees></code> element takes a single required attribute, <code translate="no" dir="ltr">currency</code>, that defines the three-letter <a href="https://support.google.com/merchants/answer/160637">currency code</a> for the fees. For example, <code translate="no" dir="ltr">USD</code>. <p>The <code translate="no" dir="ltr"><OtherFees></code> element is required if <code translate="no" dir="ltr"><Baserate></code> is greater than zero.</p> </td> </tr> <tr> <td><span translate="no"><Occupancy></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">integer</span></td> <td>Specifies the maximum allowed occupants for this rate. When <code translate="no" dir="ltr"><Occupancy></code> appears directly under <code translate="no" dir="ltr"><Result></code>, it must specify <code translate="no" dir="ltr">2</code> or more. <code translate="no" dir="ltr"><Occupancy></code> may be accompanied by <code translate="no" dir="ltr"><OccupancyDetails></code>, which specifies the type of guests (adults or children). If guest types are not specified, they are assumed to be adults. Consult <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#OccupancyDetails"><code translate="no" dir="ltr"><OccupancyDetails></code></a> for syntax and description of child elements. If the <code translate="no" dir="ltr"><Occupancy></code> element is not provided, occupancy is defaulted as <code translate="no" dir="ltr">2</code>. <p class="note">Note: Contact your support team to enable the feature to send non-double occupancy prices.</p> </td> </tr> <tr> <td><span translate="no"><PackageID></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">string</span></td> <td>The unique ID of the package to map it to predefined package data. Also used to populate the PACKAGE-ID landing page variable. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>. </td> </tr> <tr> <td><span translate="no"><Property></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">string</span></td> <td>The ID of a hotel affected by the associated data (price, itinerary, Room Bundle, or metadata). The value of this element must be a string. The value of this element must match the listing <code translate="no" dir="ltr"><id></code> that you defined in your Hotel List Feed. </td> </tr> <tr> <td><span translate="no"><Rates></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Rates"><code translate="no" dir="ltr"><Rates></code></a></span></td> <td>A container for one or more <code translate="no" dir="ltr"><Rate></code> blocks. Each <code translate="no" dir="ltr"><Rate></code> in <code translate="no" dir="ltr"><Rates></code> defines a different price for the room/itinerary combination. <p>Use the <code translate="no" dir="ltr"><Rates></code> element when there are multiple rates for the same room/itinerary combination or when a rate is not allowed to be specified at the <code translate="no" dir="ltr"><Result></code> level. For example, you define multiple rates for <a href="/hotels/hotel-prices/dev-guide/fenced-rates"> conditional rates</a>, <a href="/hotels/hotel-prices/dev-guide/qualified-rates"> private rates</a>, <a href="/hotels/hotel-prices/dev-guide/room-bundles">conditional rates in Room Bundles</a>, or different occupancies.</p> <p class="note">Note: Within <code translate="no" dir="ltr"><Result></code>, single-occupancy rates can only be specified in <code translate="no" dir="ltr"><Rates></code>. Please <a href="https://support.google.com/hotelprices/gethelp">contact us</a> to allow non-double occupancy prices.</p> </td> </tr> <tr> <td><span translate="no"><Refundable></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Enables listing a rate as being fully refundable or providing a free cancellation. If not provided, no information about a refund is displayed. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> level. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Rates"><code translate="no" dir="ltr"><Rates></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level. Refundable pricing can also be highlighted to users through alternative options without directly modifying your transaction message schema. Learn more about <a href="https://support.google.com/hotelprices/answer/9824483">Refundable rates policy</a>. <p></p> <p>The following example shows the <code translate="no" dir="ltr"><Refundable></code> element with all of its attributes set:</p> <pre class="prettyprint" translate="no" dir="ltr"><Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/></pre> <p><b>Note:</b> We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set.</p> <p>If you don't set any attributes, the rate does not display as refundable. The attributes are:</p> <ul> <li><code translate="no" dir="ltr">available</code>: (Required) Set to <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>) to indicate if the rate allows a full refund; otherwise set to <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>).</li> <li><code translate="no" dir="ltr">refundable_until_days</code>: (Required if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the number of days in advance of check-in that a full refund can be requested. The value of <code translate="no" dir="ltr">refundable_until_days</code> must be an integer between 0 and 330, inclusive.</li> <li><code translate="no" dir="ltr">refundable_until_time</code>: (Highly recommended if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the latest time of day, in the local time of the hotel, that a full refund request will be honored. This can be combined with <code translate="no" dir="ltr">refundable_until_days</code> to specify, for example, that "refunds are available until 4:00PM two days before check-in". If <code translate="no" dir="ltr">refundable_until_time</code> isn't set, the value defaults to midnight. <p>The value of this attribute uses the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Time">Time</a> format.</p> </li> </ul> <p>When setting the attributes, note the following:</p> <ul> <li>If <code translate="no" dir="ltr">available</code> or <code translate="no" dir="ltr">refundable_until_days</code> isn't set, the rate does not display as refundable.</li> <li>If <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>), the other attributes are ignored. The rate does not display as refundable even if one or both of the other attributes is set.</li> </ul> </td> </tr> <tr> <td><span translate="no"><RoomBundle></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomBundle"><code translate="no" dir="ltr"><RoomBundle></code></a></span></td> <td>A container for information on priced physical descriptions of a room, any packaging of amenities, and some purchase policy details for the given hotel and itinerary. <p>In general, use this element to define pricing for the base room and different types of rooms within the same property. While it is possible to define Room Bundle descriptions inline, you should use a separate Transaction message to define that information. Google will store metadata so that you can reference it, rather than repeat it, in all future pricing updates.</p> </td> </tr> <tr> <td><span translate="no"><RoomID></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">string</span></td> <td>The unique ID of the room to map it to predefined room data. Also used to populate the PARTNER-ROOM-ID landing page variable. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>. </td> </tr> <tr> <td><span translate="no"><Tax></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">float</span></td> <td>The taxes that are calculated for the final price of a room. The <code translate="no" dir="ltr"><Tax></code> element takes a single required attribute, <code translate="no" dir="ltr">currency</code>, that defines the three-letter <a href="https://support.google.com/merchants/answer/160637">currency code</a> for the taxes. For example, <code translate="no" dir="ltr">USD</code>. The <code translate="no" dir="ltr"><Tax></code> element is required if <code translate="no" dir="ltr"><Baserate></code> is greater than zero. <p class="note">If <code translate="no" dir="ltr"><Baserate></code> element's "all_inclusive" attribute is explicitly set to true, then setting this value is optional.</p></td> </tr> <tr> <td id="UnavailableTag"><span translate="no"><Unavailable></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Indicates that the itinerary is unavailable for booking. Serves as a container for more detailed reasons why the itinerary was unavailable. One or more of the following unavailability reasons may be nested underneath the <code translate="no" dir="ltr"><Unavailable></code> tag: <ul> <li><code translate="no" dir="ltr"><NoVacancy/></code>: No more rooms are available for sale for one or more nights of the stay.</li> <li><code translate="no" dir="ltr"><MinNightStay value=N/></code>: The itinerary was below the minimum night stay of <code translate="no" dir="ltr">N</code> for the stay dates.</li> <li><code translate="no" dir="ltr"><MaxNightStay value=N/></code>: The itinerary was above the maximum night stay of <code translate="no" dir="ltr">N</code> for the stay dates.</li> <li><code translate="no" dir="ltr"><MinAdvancePurchase value=N/></code>: The itinerary was below the minimum advance booking window of <code translate="no" dir="ltr">N</code> for the stay dates.</li> <li><code translate="no" dir="ltr"><MaxAdvancePurchase value=N/></code>: The itinerary was above the maximum advance booking window of <code translate="no" dir="ltr">N</code> for the stay dates.</li> <li><code translate="no" dir="ltr"><ClosedToArrival/></code>: The property does not allow check-in on the itinerary's arrival date.</li> <li><code translate="no" dir="ltr"><ClosedToDeparture/></code>: The property does not allow check-out on the itinerary's departure date.</li> <li><code translate="no" dir="ltr"><PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/></code>: The property is closed for some or all of the stay. Recommended attributes <code translate="no" dir="ltr">first_open</code> and <code translate="no" dir="ltr">first_closed</code> specify the first dates greater than or equal to the arrival date for which the property is open or closed, respectively. For a property that closes after the arrival date, <code translate="no" dir="ltr">first_open</code> should be equal to the arrival date, and <code translate="no" dir="ltr">first_closed</code> should be the date on which the property closes. For a property that is closed on the arrival date, <code translate="no" dir="ltr">first_closed</code> should be equal to the arrival date, and <code translate="no" dir="ltr">first_opened</code> should be the next date on which the property is open.</li> <li><code translate="no" dir="ltr"><NotFetched/></code>: A price for the itinerary was not provided by downstream data sources.</li> <li><code translate="no" dir="ltr"><InvalidProperty/></code>: The requested property identifier was not recognized.</li> <li><code translate="no" dir="ltr"><InvalidOccupancy/></code>: The requested occupancy is not supported by the property.</li> <li><code translate="no" dir="ltr"><PriceIssue/></code>: An issue with the price caused it to not be sent.</li> <li><code translate="no" dir="ltr"><InternalError reason=""/></code>: Some unenumerated error occurred. Optional reason attribute can report the error as text.</li> <li><code translate="no" dir="ltr"><OtherRestriction restriction=""/></code>: The itinerary was not available due to some unenumerated booking restriction. Optional restriction attribute allows reporting the restriction as text.</li> </ul> </td> </tr> </tbody> </table> <h3 id="result-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="multi-property-example" data-text="Multi-property example" tabindex="-1">Multi-property example</h3><p>The following example defines one itinerary and its pricing for two properties:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-23T16:20:00-04:00" id="42"> <Result> <Property>060773</Property> <RoomID>RoomType101</RoomID> <PackageID>Package101</PackageID> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Baserate currency="USD">278.33</Baserate> <Tax currency="USD">25.12</Tax> <OtherFees currency="USD">2.00</OtherFees> <AllowablePointsOfSale> <PointOfSale id="site1"/> </AllowablePointsOfSale> </Result> <Result> <Property>052213</Property> <RoomID>RoomType101</RoomID> <PackageID>Package101</PackageID> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Baserate currency="USD">299.98</Baserate> <Tax currency="USD">26.42</Tax> <OtherFees currency="USD">2.00</OtherFees> <AllowablePointsOfSale> <PointOfSale id="otto"/> <PointOfSale id="simon"/> </AllowablePointsOfSale> </Result> </Transaction> </code></pre> <p>Not shown in this example are details about the room, such as a description, a picture and caption, the room's name, and its capacity.</p> <p>You can define that information <em>once</em> in a separate Transaction message that Google stores. You can then reference it in all subsequent pricing and inventory updates. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>.</p></section> <section><h3 id="multi-rate-example" data-text="Multi-rate example" tabindex="-1">Multi-rate example</h3><p>The following example defines a single itinerary and property with multiple rates for various occupancies. The <code translate="no" dir="ltr"><Rates></code> element can be utilized to provide multi-rate pricing for a specific property. The following example is also useful for Vacation Rental (VR) properties:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2020-07-23T16:20:00-04:00" id="42"> <Result> <Property>1234</Property> <Checkin>2021-01-13</Checkin> <Nights>9</Nights> <Baserate currency="USD">3196.1</Baserate> <Tax currency="USD">559.49</Tax> <OtherFees currency="USD">543.34</OtherFees> <Occupancy>2</Occupancy> <Rates> <Rate> <Baserate currency="USD">3196.1</Baserate> <Tax currency="USD">559.49</Tax> <OtherFees currency="USD">543.34</OtherFees> <Occupancy>1</Occupancy> </Rate> <Rate> <Baserate currency="USD">3196.1</Baserate> <Tax currency="USD">559.49</Tax> <OtherFees currency="USD">543.34</OtherFees> <Occupancy>3</Occupancy> </Rate> <Rate> <Baserate currency="USD">3196.1</Baserate> <Tax currency="USD">559.49</Tax> <OtherFees currency="USD">543.34</OtherFees> <Occupancy>4</Occupancy> </Rate> <Rate> <Baserate currency="USD">3196.1</Baserate> <Tax currency="USD">559.49</Tax> <OtherFees currency="USD">543.34</OtherFees> <Occupancy>5</Occupancy> </Rate> <Rate> <Baserate currency="USD">3196.1</Baserate> <Tax currency="USD">559.49</Tax> <OtherFees currency="USD">543.34</OtherFees> <Occupancy>6</Occupancy> </Rate> </Rates> </Result> </Transaction> </code></pre></section> <section><h3 id="unavailable-example" data-text="Unavailable example" tabindex="-1">Unavailable example</h3><p>The following example defines one itinerary whose availability couldn't be retrieved from downstream channels, a second that is both below the minimum night stay and already booked for the specified dates, and a third whose property is closed on the arrival date, but that opens during the course of the stay:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-23T16:20:00-04:00" id="42"> <Result> <Property>060773</Property> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Unavailable> <NotFetched/> </Unavailable> </Result> <Result> <Property>073313</Property> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Unavailable> <NoVacancy/> <MinNightStay value=3/> </Unavailable> </Result> <Result> <Property>052213</Property> <Checkin>2018-06-10</Checkin> <Nights>10</Nights> <Unavailable> <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/> </Unavailable> </Result> </Transaction> </code></pre></section> </div> <h2 id="Rates" data-text="<Rates>" tabindex="-1"><code translate="no" dir="ltr"><Rates></code></h2> <p>A container for one or more <code translate="no" dir="ltr"><Rate></code> blocks. Each <code translate="no" dir="ltr"><Rate></code> in <code translate="no" dir="ltr"><Rates></code> defines a different price for the room or itinerary combination.</p> <p>Use the <code translate="no" dir="ltr"><Rates></code> element only when there are multiple rates for the same room or itinerary combination. For example, you define multiple rates for <a href="/hotels/hotel-prices/dev-guide/fenced-rates">conditional rates</a>, <a href="/hotels/hotel-prices/dev-guide/qualified-rates">private rates</a>, or <a href="/hotels/hotel-prices/dev-guide/room-bundles">conditional rates in Room Bundles</a>.</p> <p>The <code translate="no" dir="ltr"><Rates></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <span class="nocode"><code translate="no" dir="ltr"><Transaction></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PropertyDataSet></code></span> // Room and package metadata + <span class="nocode"><Property></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PackageData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><Result></code></span> // Pricing and availability + <strong><code translate="no" dir="ltr"><Rates></code></strong> + <span class="nocode"><code translate="no" dir="ltr"><RoomBundle></code></span> (Can also contain <code translate="no" dir="ltr"><Rates></code>) + ... </pre> <p>Values set in a <code translate="no" dir="ltr"><Rate></code> override pricing-related values on the parent <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> or <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomBundle"><code translate="no" dir="ltr"><RoomBundle></code></a> element. If they are not set in <code translate="no" dir="ltr"><Rate></code>, they inherit their value from the parent element. Only <AllowablePointsofSale> is inherited to the <code translate="no" dir="ltr"><RoomBundle></code> element.</p> <h3 id="rates-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><Rates></code> element uses the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><span class="nocode"><?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result></span> <Rates> <Rate rate_rule_id="<var translate="no">rate_rule_id</var>"> <Baserate currency="<var translate="no">currency_code</var>"><var translate="no">price</var></Baserate> <Tax currency="<var translate="no">currency_code</var>"><var translate="no">tax_amount</var></Tax> <OtherFees currency="<var translate="no">currency_code</var>"><var translate="no">fee_amount</var></OtherFees> <ExpirationTime><var translate="no">expiration_time</var></ExpirationTime> <Refundable available="[false|true]" refundable_until_days="<var translate="no">number_of_days</var>" refundable_until_time="<var translate="no">time</var>"/> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <AllowablePointsOfSale> <PointOfSale id="<var translate="no">landing_page_identifier</var>"/> </AllowablePointsOfSale> <Occupancy><var translate="no">max_number_of_intended_occupants</var></Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> ... <Custom[1-5]><var translate="no">custom_value</var></Custom[1-5]> </Rate> ... </Rates> <span class="nocode"></Result> ... </Transaction></span></pre> <h3 id="rates-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><Rates></code> element has the following attributes:</p> <table class="fixed"> <tbody> <tr> <th width="18%">Attribute</th> <th width="10%">Required?</th> <th>Description</th> </tr> <tr> <td><span translate="no">rate_rule_id</span></td> <td><span translate="no">Optional</span></td> <td>For <a href="/hotels/hotel-prices/dev-guide/fenced-rates"> conditional rates</a>, this ID matches a rate to a definition in your Rate Rule Definition file. The character limit for this field is 40 characters. </td> </tr> </tbody> </table> <h3 id="rates-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><Rates></code> element has the following child elements:</p> <table class="fixed"> <tbody> <tr> <th width="21%">Child Element</th> <th width="10%">Required?</th> <th width="10%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><AllowablePointsOfSale></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>One or more landing pages that are eligible for the hotel. This element uses the same syntax as the <code translate="no" dir="ltr"><AllowablePointsOfSale></code> on <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>.</td> </tr> <tr> <td><span translate="no"><Baserate></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">float</span></td> <td>The price of the room for the stay. This element uses the same syntax as the <code translate="no" dir="ltr"><Baserate></code> on <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>. <p><b>Note:</b> The <code translate="no" dir="ltr"><Baserate></code> child element under <code translate="no" dir="ltr"><Rate></code> cannot be defined as being unavailable.</p> </td> </tr> <tr> <td><span translate="no"><ChargeCurrency></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">enum</span></td> <td>When and where the user pays for a booking. This element uses the same syntax as a <code translate="no" dir="ltr"><ChargeCurrency></code> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>.</td> </tr> <tr> <td><span translate="no"><Custom[1‑5]></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">string</span></td> <td>Custom fields that you can use to pass additional data associated with a hotel to a landing page. This element uses the same syntax as a <code translate="no" dir="ltr"><Custom[1‑5]></code> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>. There is a limit of 200 characters per custom field. For more information, refer to <a href="/hotels/hotel-prices/xml-reference/transaction-messages"> landing page files</a>. <p class="note">If <Custom> elements are provided in the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> element, then they are not inherited in the <code translate="no" dir="ltr"><RoomBundle></code> element and should be defined separately for each <code translate="no" dir="ltr"><RoomBundle></code> or it can be included in <PackageData> if needed.</p> </td> </tr> <tr> <td><span translate="no"><ExpirationTime></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime">DateTime</a></span></td> <td>The date and time at which the rate is considered expired. This element uses the same syntax as an <code translate="no" dir="ltr"><ExpirationTime></code> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>.</td> </tr> <tr> <td><span translate="no"><Occupancy></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">integer</span></td> <td><p>Specifies the maximum allowed occupants for this rate. If not specified, it is assumed to be the same as parent rate. <code translate="no" dir="ltr"><Occupancy></code> may be accompanied by <code translate="no" dir="ltr"><OccupancyDetails></code>, which specifies the type of guests (adults or children). Consult <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#OccupancyDetails"><code translate="no" dir="ltr"><OccupancyDetails></code></a> for syntax and description of child elements.</p></td> </tr> <tr> <td><span translate="no"><OtherFees></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">float</span></td> <td>Fees other than the base rate and taxes that influence the final price of a room. This element uses the same syntax as <code translate="no" dir="ltr"><OtherFees></code> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>. <p class="note">If <code translate="no" dir="ltr"><Baserate></code> element's "all_inclusive" attribute is explicitly set to true, then setting this value is optional.</p></td> </tr> <tr> <td><span translate="no"><Refundable></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Enables listing a rate as being fully refundable or providing a free cancellation. If not provided, no information about a refund is displayed. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> level. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Rates"><code translate="no" dir="ltr"><Rates></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level. Refundable pricing can also be highlighted to users through alternative options without directly modifying your transaction message schema. Learn more about these options <a href="https://support.google.com/hotelprices/answer/9824483">Refundable rates policy</a>. <p></p> <p>The following example shows the <code translate="no" dir="ltr"><Refundable></code> element with all of its attributes set:</p> <pre class="prettyprint" translate="no" dir="ltr"><Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/></pre> <p><b>Note:</b> We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set.</p> <p>If you don't set any attributes, the rate does not display as refundable. The attributes are:</p> <ul> <li><code translate="no" dir="ltr">available</code>: (Required) Set to <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>) to indicate if the rate allows a full refund; otherwise set to <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>).</li> <li><code translate="no" dir="ltr">refundable_until_days</code>: (Required if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the number of days in advance of check-in that a full refund can be requested. The value of <code translate="no" dir="ltr">refundable_until_days</code> must be an integer between 0 and 330, inclusive.</li> <li><code translate="no" dir="ltr">refundable_until_time</code>: (Highly recommended if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the latest time of day, in the local time of the hotel, that a full refund request will be honored. This can be combined with <code translate="no" dir="ltr">refundable_until_days</code> to specify, for example, that "refunds are available until 4:00PM two days before check-in". If <code translate="no" dir="ltr">refundable_until_time</code> isn't set, the value defaults to midnight. <p>The value of this attribute uses the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Time">Time</a> format.</p> </li> </ul> <p>When setting the attributes, note the following:</p> <ul> <li>If <code translate="no" dir="ltr">available</code> or <code translate="no" dir="ltr">refundable_until_days</code> isn't set, the rate does not display as refundable.</li> <li>If <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>), the other attributes are ignored. The rate does not display as refundable even if one or both of the other attributes is set.</li> </ul> </td> </tr> <tr> <td><span translate="no"><Tax></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">float</span></td> <td>The taxes that are calculated for the final price of a room. This element uses the same syntax as the a <code translate="no" dir="ltr"><Tax></code> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>.</td> </tr> </tbody> </table> <aside class="key-point"><strong>Key Point:</strong><span> Note that <code translate="no" dir="ltr"><Rates></code> takes the same child elements as <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>, except for <code translate="no" dir="ltr"><Checkin></code>, <code translate="no" dir="ltr"><Nights></code>, <code translate="no" dir="ltr"><Property></code>, <code translate="no" dir="ltr"><RoomBundle></code>, and <code translate="no" dir="ltr"><RoomID</code>>.</span></aside> <h3 id="rates-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="base-rate-and-conditional-rate" data-text="Base rate and conditional rate" tabindex="-1">Base rate and conditional rate</h3><p>The following example shows a Transaction message that contains a base rate and a <a href="/hotels/hotel-prices/dev-guide/fenced-rates">conditional rate</a>:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8" ?> <Transaction timestamp="2023-05-18T16:20:00-04:00" id="42"> <Result> <Property>1234</Property> <Checkin>2023-04-10</Checkin> <Nights>1</Nights> <Baserate currency="USD">200.00</Baserate> <Tax currency="USD">20.00</Tax> <OtherFees currency="USD">1.00</OtherFees> <Rates> <!-- The rate_rule_id is required when using conditional rates --> <Rate rate_rule_id="mobile"> <!-- Override base rate and taxes for conditional rates --> <Baserate currency="USD">180.00</Baserate> <Tax currency="USD">18.00</Tax> <!-- NOTE: OtherFees is inherited from the above setting --> <Custom1>ratecode123</Custom1> </Rate> </Rates> </Result> </Transaction> </code></pre></section> <section><h3 id="multiple-conditional-rates" data-text="Multiple conditional rates" tabindex="-1">Multiple conditional rates</h3><p>The following example defines a base rate and multiple conditional rates within a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomBundle"><code translate="no" dir="ltr"><RoomBundle></code></a>:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8" ?> <Transaction timestamp="2023-05-18T16:20:00-04:00" id="42"> <Result> <Property>1234</Property> <Checkin>2023-04-10</Checkin> <Nights>2</Nights> <!-- When Google receives new room bundle information for an itinerary, all previous room bundle pricing is dropped from Google's cache. Thus, if you want to delete a specific room bundle from Google's cache, you may do so by simply not providing that specific room bundle in subsequent transaction messages. --> <RoomBundle> ... <!-- RoomID is required, PackageID is recommended. --> <RoomID>5</RoomID> <PackageID>ABC</PackageID> <!-- Baserate is required. --> <Baserate currency="USD">275.00</Baserate> <Tax currency="USD">27.50</Tax> <OtherFees currency="USD">2.00</OtherFees> <!-- RatePlanID is optional and represents the unique identifier for a room and package data combination. We strongly recommend using RatePlanID as a variable to build your dynamic landing page (formerly Point of Sale) URL. For details, see Using Variables and Conditions. --> <RatePlanID>5-ABC</RatePlanID> <!-- Occupancy is mandatory for RoomBundle elements. --> <!-- Elements below will get inherited to nested rate elements. --> <Occupancy>2</Occupancy> <OccupancyDetails> <NumAdults>2</NumAdults> </OccupancyDetails> <InternetIncluded>1</InternetIncluded> <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. --> <ChargeCurrency>web</ChargeCurrency> <Custom1>ratebasic</Custom1> <!-- Neither rate overrides Custom2. --> <Custom2>ratebasic</Custom2> <Rates> <Rate rate_rule_id="mobile"> <Baserate currency="USD">258.33</Baserate> <Tax currency="USD">25.83</Tax> <OtherFees currency="USD">1.00</OtherFees> <!-- The value below overrides ChargeCurrency from roombundle. --> <ChargeCurrency>hotel</ChargeCurrency> <!-- The value below overrides Custom1 from roombundle. --> <Custom1>ratecode321</Custom1> <!-- Custom2 is inherited from roombundle. --> </Rate> <Rate rate_rule_id="us_or_gb"> <Baserate currency="USD">268.33</Baserate> <Tax currency="USD">26.83</Tax> <OtherFees currency="USD">1.00</OtherFees> <!-- The value below overrides Custom1 from roombundle. --> <Custom1>ratecode432</Custom1> <!-- Custom2 is inherited from roombundle. --> </Rate> </Rates> </RoomBundle> </Result> </Transaction> </code></pre></section> </div> <h2 id="RoomBundle" data-text="<RoomBundle>" tabindex="-1"><code translate="no" dir="ltr"><RoomBundle></code></h2> <p>Defines pricing and availability for Room Bundles as a child of <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Transaction"><code translate="no" dir="ltr"><Transaction></code></a> message. Define a separate element for each package or itinerary combination. To define the <em>package and terms</em> of the Room Bundles, use <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a>.</p> <p>The <code translate="no" dir="ltr"><RoomBundle></code> element appears in the following place in the Transaction message XML hierarchy:</p> <pre class="prettyprint devsite-disable-click-to-copy" translate="no" dir="ltr">+ <span class="nocode"><code translate="no" dir="ltr"><Transaction></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PropertyDataSet></code></span> // Room and package metadata + <span class="nocode"><Property></span> + <span class="nocode"><code translate="no" dir="ltr"><RoomData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><PackageData></code></span> + <span class="nocode"><code translate="no" dir="ltr"><Result></code></span> // Pricing and availability + <span class="nocode"><code translate="no" dir="ltr"><Rates></code></span> + <strong><code translate="no" dir="ltr"><RoomBundle></code></strong> + ... </pre> <p>For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles">Using Room Bundles</a>.</p> <h3 id="roombundle-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>The <code translate="no" dir="ltr"><RoomBundle></code> element uses the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><span class="nocode"><?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ...</span> <RoomBundle> <!-- Required unless specified inline under <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a> --> <RoomID><var translate="no">room_ID</var></RoomID> <!-- Required <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> --> <PackageID><var translate="no">package_ID</var></PackageID> <!-- Required --> <Baserate currency="<var translate="no">currency_code</var>"><var translate="no">price</var></Baserate> <!-- Required --> <Tax currency="<var translate="no">currency_code</var>"><var translate="no">taxes</var></Tax> <!-- Required --> <OtherFees currency="<var translate="no">currency_code</var>"><var translate="no">other_fees</var></OtherFees> <Refundable available="[false|true]" refundable_until_days="<var translate="no">number_of_days</var>" refundable_until_time="<var translate="no">time</var>"/> <!-- Required --> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy><var translate="no">max_number_of_intended_occupants</var></Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> <BreakfastIncluded><var translate="no">boolean_value</var></BreakfastIncluded> <InternetIncluded><var translate="no">boolean_value</var></InternetIncluded> <ParkingIncluded><var translate="no">boolean_value</var></ParkingIncluded> <RatePlanID><var translate="no">rate_plan_ID</var></RatePlanID> <Rates>...</Rates> <Custom1><var translate="no">custom_value_1</var></Custom1> <Custom2><var translate="no">custom_value_2</var></Custom2> <Custom3><var translate="no">custom_value_3</var></Custom3> <Custom4><var translate="no">custom_value_4</var></Custom4> <Custom5><var translate="no">custom_value_5</var></Custom5> </RoomBundle> <span class="nocode">... </Result> </Transaction></span></pre> <aside class="key-point"><strong>Key Point:</strong><span> Note that you <em>can</em> also define a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> and a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a> inside a <code translate="no" dir="ltr"><RoomBundle></code>. However, this is less efficient than defining them separately and referring to them with <code translate="no" dir="ltr"><RoomID></code> and <code translate="no" dir="ltr"><PackageID></code>, and therefore is not recommended.</span></aside> <h3 id="roombundle-attributes" class="hide-from-toc" data-text="Attributes" tabindex="-1">Attributes</h3> <p>The <code translate="no" dir="ltr"><RoomBundle></code> element has no attributes.</p> <h3 id="roombundle-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><RoomBundle></code> element has the following child elements:</p> <table class="fixed"> <tbody> <tr> <th width="18%">Child Element</th> <th width="10%">Required?</th> <th width="10%">Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><Baserate></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">float</span></td> <td>Defines the price of the Room Bundle for the stay. This element uses the same syntax as <code translate="no" dir="ltr"><Baserate></code> in <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>, with the following exception: <ul> <li>When the room is unavailable for the itinerary, remove the <code translate="no" dir="ltr"><RoomBundle></code> element to indicate that a room is no longer in inventory. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#removing"> Removing a Room Bundle</a>.</li> </ul> </td> </tr> <tr> <td><span translate="no"><BreakfastIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Specifies whether this Room Bundle includes breakfast with the rate.</td> </tr> <tr> <td><span translate="no"><ChargeCurrency></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">enum</span></td> <td>When and where the user pays for a booking. This element uses the same syntax as <code translate="no" dir="ltr"><ChargeCurrency></code> in a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>. <p>The default value is <code translate="no" dir="ltr">web</code>.</p> </td> </tr> <tr> <td><span translate="no"><Custom[1‑5]></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">string</span></td> <td>Custom fields for passing additional data to the landing pages for the Room Bundle. These elements use the same syntax as <code translate="no" dir="ltr"><Custom[1-5]></code> in <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>. There is a limit of 200 characters per custom field. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/pos-syntax">landing page files</a>. <p class="note">If <Custom> elements are provided in the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> element, then they are not inherited in the <code translate="no" dir="ltr"><RoomBundle></code> element and should be defined separately for each <code translate="no" dir="ltr"><RoomBundle></code> or it can be included in <PackageData> if needed.</p> </td> </tr> <tr> <td><span translate="no"><InternetIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>If a Room Bundle includes internet access at no charge, while other bundles wouldn't include that amenity. Don't set this element for Room Bundles in a hotel that provides free internet to all rooms. This element does not apply to in-room wired internet or wireless internet that is not available in guest rooms. </td> </tr> <tr> <td><span translate="no"><Occupancy></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">integer</span></td> <td>Specifies the maximum allowed occupants for this rate. For example, a large suite might be able to physically accommodate 6 guests, but the "Honeymoon Package" allows 2 guests only. <p>This value must be less than or equal to the <code translate="no" dir="ltr"><Capacity></code>, which is the number of people that the room can physically accommodate.</p> <p>When defining occupancy in your landing page URL, use the <code translate="no" dir="ltr">NUM-ADULTS</code> and <code translate="no" dir="ltr">NUM-CHILDREN</code> variables, as described in <a href="/hotels/hotel-prices/dev-guide/pos-urls">Using Variables and Conditions</a>. The default value is <code translate="no" dir="ltr">2</code> adults and <code translate="no" dir="ltr">0</code> children.</p> <p>The value of <code translate="no" dir="ltr"><Occupancy></code> must be a positive integer between 1 and 99, inclusive.</p> <p><b>Notes</b>:</p> <ul> <li><code translate="no" dir="ltr"><Occupancy></code> for <code translate="no" dir="ltr"><RoomBundle></code> is strongly recommended so flagged as required and if omitted will throw a 1097 error.</li> <li><code translate="no" dir="ltr"><Occupancy></code> comes from the data object in this order: <code translate="no" dir="ltr"><RoomBundle></code>, <code translate="no" dir="ltr"><PackageData></code>, and then = <code translate="no" dir="ltr"><RoomData></code>. If there is no value present in any of these, the value defaults to 2. </li> <li><code translate="no" dir="ltr"><Occupancy></code> may be accompanied by <code translate="no" dir="ltr"><OccupancyDetails></code>, which specifies the type of guests (adults or children). If guest types are not specified, they are assumed to be adults. Consult <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#OccupancyDetails"><code translate="no" dir="ltr"><OccupancyDetails></code></a> for syntax and description of child elements.</li> <li>When you set <code translate="no" dir="ltr"><Occupancy></code> in both <code translate="no" dir="ltr"><RoomBundle></code> and <code translate="no" dir="ltr"><PackageData></code>, the value in <code translate="no" dir="ltr"><RoomBundle></code> takes precedence. </li></ul> </td> </tr> <tr> <td><span translate="no"><OtherFees></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">float</span></td> <td>Fees other than the base rate and taxes that influence the final price of a room. The <code translate="no" dir="ltr"><OtherFees></code> element takes a single required attribute, <code translate="no" dir="ltr">currency</code>, that defines the three-letter <a href="https://support.google.com/merchants/answer/160637">currency code</a> for the fees. For example, use <code translate="no" dir="ltr">USD</code> for US dollars.</td> </tr> <tr> <td><span translate="no"><PackageID></span></td> <td><span translate="no">Optional (recommended)</span></td> <td><span translate="no">string</span></td> <td>The unique ID for the package data. Use this ID to match the Room Bundle data with what was sent in <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a>. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata">Room Bundle metadata</a>. (You can also use this ID to reference a common Room Bundle definition used in a single Transaction message when defining Room Bundle data inline.)</td> </tr> <tr> <td><span translate="no"><ParkingIncluded></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">boolean</span></td> <td>Whether a Room Bundle includes parking at no charge, where parking would otherwise be a paid service at this hotel. Don't specify a value for this element for a hotel that offers free parking. <p>Valid values are <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>) and <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>). The default value is <code translate="no" dir="ltr">false</code>.</p> </td> </tr> <tr> <td><span translate="no"><RatePlanID></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">string</span></td> <td>The Rate Plan ID represents the unique identifier for a room and package combination. For example, given a <code translate="no" dir="ltr"><RoomID></code> value of 5 and a <code translate="no" dir="ltr"><PackageID></code> value of ABC, you could use a value of 5-ABC for <code translate="no" dir="ltr"><RatePlanID></code>. We strongly recommend using RatePlanID as a variable to build your dynamic landing page (formerly Point of Sale) URL. <p>For more information, refer to <a href="/hotels/hotel-prices/dev-guide/pos-urls">Using Variables and Conditions</a>.</p> </td> </tr> <tr> <td><span translate="no"><Rates></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no"><a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Rates"><code translate="no" dir="ltr"><Rates></code></a></span></td> <td>Rates that override the defaults for this Room Bundle. This element uses the same syntax as <code translate="no" dir="ltr"><Rates></code> in <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a>.</td> </tr> <tr> <td><span translate="no"><Refundable></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>Enables listing a rate as being fully refundable or providing a free cancellation. If not provided, no information about a refund is displayed. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Result"><code translate="no" dir="ltr"><Result></code></a> level. A refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#Rates"><code translate="no" dir="ltr"><Rates></code></a> level overrides the refund policy at the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> level. Refundable pricing can also be highlighted to users through alternative options without directly modifying your transaction message schema. Learn more about these options <a href="https://support.google.com/hotelprices/answer/9824483">Refundable rates policy</a>. <p></p> <p>The following example shows the <code translate="no" dir="ltr"><Refundable></code> element with all of its attributes set:</p> <pre class="prettyprint" translate="no" dir="ltr"><Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/></pre> <p><b>Note:</b> We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set.</p> <p>If you don't set any attributes, the rate does not display as refundable. The attributes are:</p> <ul> <li><code translate="no" dir="ltr">available</code>: (Required) Set to <code translate="no" dir="ltr">1</code> (or <code translate="no" dir="ltr">true</code>) to indicate if the rate allows a full refund; otherwise set to <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>).</li> <li><code translate="no" dir="ltr">refundable_until_days</code>: (Required if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the number of days in advance of check-in that a full refund can be requested. The value of <code translate="no" dir="ltr">refundable_until_days</code> must be an integer between 0 and 330, inclusive.</li> <li><code translate="no" dir="ltr">refundable_until_time</code>: (Highly recommended if <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">true</code>) Specifies the latest time of day, in the local time of the hotel, that a full refund request will be honored. This can be combined with <code translate="no" dir="ltr">refundable_until_days</code> to specify, for example, that "refunds are available until 4:00PM two days before check-in". If <code translate="no" dir="ltr">refundable_until_time</code> isn't set, the value defaults to midnight. <p>The value of this attribute uses the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Time">Time</a> format.</p> </li> </ul> <p>When setting the attributes, note the following:</p> <ul> <li>If <code translate="no" dir="ltr">available</code> or <code translate="no" dir="ltr">refundable_until_days</code> isn't set, the rate does not display as refundable.</li> <li>If <code translate="no" dir="ltr">available</code> is <code translate="no" dir="ltr">0</code> (or <code translate="no" dir="ltr">false</code>), the other attributes are ignored. The rate does not display as refundable even if one or both of the other attributes is set.</li> </ul> </td> </tr> <tr> <td><span translate="no"><RoomID></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">string</span></td> <td>The unique ID for the room data. Use this ID to match the Room Bundle data with what you sent in <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a>. For more information, refer to <a href="/hotels/hotel-prices/dev-guide/room-bundles#metadata"> Room Bundle metadata</a>. (You can also use this ID to reference a common room definition in a single Transaction message when defining room data inline.)</td> </tr> <tr> <td><span translate="no"><Tax></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">float</span></td> <td>The taxes that are calculated for the final price of a room. The <code translate="no" dir="ltr"><Tax></code> element takes a single required attribute, <code translate="no" dir="ltr">currency</code>, that defines the three-letter <a href="https://support.google.com/merchants/answer/160637">currency code</a> for the taxes. For example, use <code translate="no" dir="ltr">USD</code> for US dollars.</td> </tr> </tbody> </table> <h3 id="roombundle-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="single-occupancy-bundle" data-text="Single occupancy bundle" tabindex="-1">Single occupancy bundle</h3><p>The following example defines a response with a single occupancy bundle. When a user selects <code translate="no" dir="ltr">1</code> in the Occupancy picker, Google displays the lowest eligible price regardless of occupancy.</p> <p>If a single occupancy price is not available, then Google will show the lowest double-occupancy price. Note that single occupancy prices are not live queried if double-occupancy or more prices are cached for an itinerary.</p> <p>This example references predefined room and package metadata with the <code translate="no" dir="ltr"><RoomID></code> and <code translate="no" dir="ltr"><PackageID></code> elements. Use the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a> and <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> elements to define that information.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><!-- Efficient method of defining Room Bundles--> <!----- Occupancy of 1 example -----> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678"> <!-- Part1: Define RoomData and PackageData in PropertyDataSet --> <!-- Note: Once defined it does not have to be repeated for future Transaction Messages. PropertyDataSets can also be defined and sent in their own Transaction Message separately from pricing. Google can be configured to pull just PropertyDataSets once per day (or on a predefined frequency). --> <PropertyDataSet> <Property>180054</Property> <!-- Can be reused by multiple Room Bundles --> <RoomData> <RoomID>060773</RoomID> <Name> <Text text="Single Queen Room - Non-Smoking" language="en"/> <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/> </Name> <!-- Room can accommodate up to 4, but package data specifies occupancy between 1 to 4 --> <Capacity>4</Capacity> </RoomData> <RoomData> <RoomID>436233</RoomID> <Name> <Text text="Premium King Room - Non-Smoking" language="en"/> <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/> </Name> <Capacity>4</Capacity> </RoomData> <!-- Can be reused by multiple Room Bundles --> <PackageData> <PackageID>P11111</PackageID> <Occupancy>1</Occupancy> <ChargeCurrency>web</ChargeCurrency> <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> <ParkingIncluded>1</ParkingIncluded> <InternetIncluded>1</InternetIncluded> </PackageData> <PackageData> <PackageID>P54321</PackageID> <Occupancy>2</Occupancy> <ChargeCurrency>web</ChargeCurrency> <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> <ParkingIncluded>1</ParkingIncluded> <InternetIncluded>1</InternetIncluded> </PackageData> <PackageData> <PackageID>P12345</PackageID> <Occupancy>4</Occupancy> <ChargeCurrency>web</ChargeCurrency> <Refundable available="1" refundable_until_days="1" refundable_until_time="18:00:00"/> <ParkingIncluded>1</ParkingIncluded> <InternetIncluded>1</InternetIncluded> </PackageData> </PropertyDataSet> <!-- Efficient method of defining Room Bundles --> <!-- Part 2: Reference RoomData and PackageData through ID --> <Result> <!-- Single occupancy pricing will be specified in a room bundle below --> <Property>180054</Property> <Checkin>2017-10-07</Checkin> <Nights>2</Nights> <!-- Base Room Bundle --> <RoomBundle> <RoomID>060773</RoomID> <PackageID>P54321</PackageID> <Baserate currency="USD">199.99</Baserate> <Tax currency="USD">25.12</Tax> <OtherFees currency="USD">2.00</OtherFees> <RatePlanID>060773-P54321</RatePlanID> </RoomBundle> <RoomBundle> <RoomID>060773</RoomID> <PackageID>P11111</PackageID> <!-- Price for 1 ("occupancy") is the lowest price and will be displayed --> <Baserate currency="USD">174.99</Baserate> <Tax currency="USD">22.08</Tax> <OtherFees currency="USD">2.00</OtherFees> <RatePlanID>060773-P11111</RatePlanID> </RoomBundle> <!-- Premium Room Bundle --> <RoomBundle> <RoomID>436233</RoomID> <PackageID>P12345</PackageID> <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more occupancy will be displayed--> <Baserate currency="USD">298.88</Baserate> <Tax currency="USD">42.12</Tax> <OtherFees currency="USD">10.00</OtherFees> <RatePlanID>436233-P12345</RatePlanID> </RoomBundle> <!-- ..Continue providing all available RoomBundle rates under matched property for 1 or more occupancies..--> </Result> </Transaction> </code></pre></section> <section><h3 id="two-or-more-occupancies" data-text="Two or more occupancies" tabindex="-1">Two or more occupancies</h3><p>The following example defines a response containing two or more occupancies.</p> <p>This example references predefined room and package metadata with the <code translate="no" dir="ltr"><RoomID></code> and <code translate="no" dir="ltr"><PackageID></code> elements. Use the <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomData"><code translate="no" dir="ltr"><RoomData></code></a> and <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#PackageData"><code translate="no" dir="ltr"><PackageData></code></a> elements to define that information.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><!-- Efficient method of defining Room Bundles--> <!----- Occupancy of 3 example -----> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678"> <!-- Efficient method of defining Room Bundles--> <!-- Part1: Define RoomData and PackageData in PropertyDataSet --> <PropertyDataSet> <Property>180054</Property> <!-- Can be reused by multiple Room Bundles --> <RoomData> <RoomID>060773</RoomID> <Name> <Text text="Single Queen Room - Non-Smoking" language="en"/> <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/> </Name> <!-- Room can accommodate up to 4, but package data specifies occupancy between 1 to 4 --> <Capacity>4</Capacity> </RoomData> <RoomData> <RoomID>436233</RoomID> <Name> <Text text="Premium King Room - Non-Smoking" language="en"/> <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/> </Name> <Capacity>4</Capacity> </RoomData> <!-- Can be reused by multiple Room Bundles --> <PackageData> <PackageID>P33333</PackageID> <Occupancy>3</Occupancy> <ChargeCurrency>web</ChargeCurrency> <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> <ParkingIncluded>1</ParkingIncluded> <InternetIncluded>1</InternetIncluded> </PackageData> <PackageData> <PackageID>P12345</PackageID> <Occupancy>4</Occupancy> <ChargeCurrency>web</ChargeCurrency> <Refundable available="1" refundable_until_days="1" refundable_until_time="18:00:00"/> <ParkingIncluded>1</ParkingIncluded> <InternetIncluded>1</InternetIncluded> </PackageData> </PropertyDataSet> <Result> <Property>180054</Property> <Checkin>2017-10-07</Checkin> <Nights>2</Nights> <!-- Efficient method of defining Room Bundles --> <!-- Part 2: Reference RoomData and PackageData through ID --> <!-- Base Room Bundle --> <RoomBundle> <!-- Baserate above and attributes must match atleast one room bundle below --> <RoomID>060773</RoomID> <PackageID>P33333</PackageID> <Baserate currency="USD">499.99</Baserate> <Tax currency="USD">55.12</Tax> <OtherFees currency="USD">22.00</OtherFees> </RoomBundle> <!-- Premium Room Bundle --> <RoomBundle> <RoomID>436233</RoomID> <PackageID>P12345</PackageID> <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed --> <Baserate currency="USD">598.88</Baserate> <Tax currency="USD">62.12</Tax> <OtherFees currency="USD">30.00</OtherFees> </RoomBundle> <!-- ..Continue providing all available RoomBundle rates under matched property for 2 or more occupancies..--> </Result> </Transaction> </code></pre></section> </div> <p><br></p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="hostel-example" data-text="Multiple room bundles" tabindex="-1">Multiple room bundles</h3><p>The following example sets Occupancy in multiple Room bundles to demonstrate possible hostel room pricing.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <!-- Suite Room Bundle --> <RoomBundle> <RoomID>suite1</RoomID> <PackageID>standard</PackageID> <Occupancy>2</Occupancy> <!-- Price for room --> <Baserate currency="USD">80.00</Baserate> <Tax currency="USD">5.12</Tax> <OtherFees currency="USD">2.00</OtherFees> <RoomData> <Name> <Text text="Suite for 2" language="en"/> </Name> </RoomData> </RoomBundle> <!-- Small Dorm Room Bundle --> <RoomBundle> <RoomID>small_dorm</RoomID> <PackageID>economy</PackageID> <Occupancy>1</Occupancy> <!-- Price per bed --> <Baserate currency="USD">35.00</Baserate> <Tax currency="USD">3.50</Tax> <OtherFees currency="USD">2.00</OtherFees> <RoomData> <Name> <Text text="1 bed in small dorm" language="en"/> </Name> </RoomData> </RoomBundle> <!-- Large Dorm Room Bundle --> <RoomBundle> <RoomID>large_dorm</RoomID> <PackageID>economy</PackageID> <Occupancy>1</Occupancy> <!-- Price per bed --> <Baserate currency="USD">20.00</Baserate> <Tax currency="USD">2.50</Tax> <OtherFees currency="USD">2.00</OtherFees> <RoomData> <Name> <Text text="1 bed in large dorm" language="en"/> </Name> </RoomData> </RoomBundle> ... </Result> </Transaction> </code></pre></section> <section><h3 id="multiple-conditional-rates_1" data-text="Multiple Conditional rates" tabindex="-1">Multiple Conditional rates</h3><p>The following example defines a base rate and multiple conditional rates within a <a href="https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages#RoomBundle"><code translate="no" dir="ltr"><RoomBundle></code></a>:</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8" ?> <Transaction timestamp="2023-05-18T16:20:00-04:00" id="42"> <Result> <Property>1234</Property> <Checkin>2023-04-10</Checkin> <Nights>2</Nights> <!-- When Google receives new room bundle information for an itinerary, all previous room bundle pricing is dropped from Google's cache. Thus, if you want to delete a specific room bundle from Google's cache, you may do so by simply not providing that specific room bundle in subsequent transaction messages. --> <RoomBundle> ... <!-- RoomID is required, PackageID is recommended. --> <RoomID>5</RoomID> <PackageID>ABC</PackageID> <!-- Baserate is required. --> <Baserate currency="USD">275.00</Baserate> <Tax currency="USD">27.50</Tax> <OtherFees currency="USD">2.00</OtherFees> <!-- RatePlanID is optional and represents the unique identifier for a room and package data combination. We strongly recommend using RatePlanID as a variable to build your dynamic landing page (formerly Point of Sale) URL. For details, see Using Variables and Conditions. --> <RatePlanID>5-ABC</RatePlanID> <!-- Occupancy is mandatory for RoomBundle elements. --> <!-- Elements below will get inherited to nested rate elements. --> <Occupancy>2</Occupancy> <OccupancyDetails> <NumAdults>2</NumAdults> </OccupancyDetails> <InternetIncluded>1</InternetIncluded> <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. --> <ChargeCurrency>web</ChargeCurrency> <Custom1>ratebasic</Custom1> <!-- Neither rate overrides Custom2. --> <Custom2>ratebasic</Custom2> <Rates> <Rate rate_rule_id="mobile"> <Baserate currency="USD">258.33</Baserate> <Tax currency="USD">25.83</Tax> <OtherFees currency="USD">1.00</OtherFees> <!-- The value below overrides ChargeCurrency from roombundle. --> <ChargeCurrency>hotel</ChargeCurrency> <!-- The value below overrides Custom1 from roombundle. --> <Custom1>ratecode321</Custom1> <!-- Custom2 is inherited from roombundle. --> </Rate> <Rate rate_rule_id="us_or_gb"> <Baserate currency="USD">268.33</Baserate> <Tax currency="USD">26.83</Tax> <OtherFees currency="USD">1.00</OtherFees> <!-- The value below overrides Custom1 from roombundle. --> <Custom1>ratecode432</Custom1> <!-- Custom2 is inherited from roombundle. --> </Rate> </Rates> </RoomBundle> </Result> </Transaction> </code></pre></section> </div> <h2 id="OccupancyDetails" data-text="<OccupancyDetails>" tabindex="-1"><code translate="no" dir="ltr"><OccupancyDetails></code></h2> <p><code translate="no" dir="ltr"><Occupancy></code> in a transaction message specifies the maximum number of guests for a room or package. <code translate="no" dir="ltr"><OccupancyDetails></code> can contain additional information such as the number and type of guests (adults or children).</p> <p>When <code translate="no" dir="ltr"><Occupancy></code> and <code translate="no" dir="ltr"><OccupancyDetails></code> appear within the <code translate="no" dir="ltr"><Rates></code> element of <code translate="no" dir="ltr"><Result></code> or <code translate="no" dir="ltr"><RoomBundle></code>, it means that the rate is constrained by the occupancy details.</p> <h3 id="occupancydetails-syntax" class="hide-from-toc" data-text="Syntax" tabindex="-1">Syntax</h3> <p>When <code translate="no" dir="ltr"><OccupancyDetails></code> appears, it is always preceded by <code translate="no" dir="ltr"><Occupancy></code>. Note the following syntax:</p> <pre class="prettyprint readonly" translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <Occupancy><var translate="no">max_number_of_intended_occupants</var></Occupancy> <OccupancyDetails> <NumAdults><var translate="no">number_of_adults</var></NumAdults> <Children> <Child age=<var translate="no">age_of_one_child_guest</var>/> <Child age=<var translate="no">age_of_one_child_guest</var>/> </Children> </OccupancyDetails> </Result> </Transaction> </pre> <h3 id="occupancydetails-children" class="hide-from-toc" data-text="Child elements" tabindex="-1">Child elements</h3> <p>The <code translate="no" dir="ltr"><OccupancyDetails></code> element has the following child elements:</p> <table class="alternating-odd-rows"> <tbody> <tr> <th>Child Element</th> <th>Required?</th> <th>Type</th> <th>Description</th> </tr> <tr> <td><span translate="no"><NumAdults></span></td> <td><span translate="no">Required</span></td> <td><span translate="no">integer</span></td> <td>The number of adult guests. Min:1, Max:20.</td> </tr> <tr> <td><span translate="no"><Children></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">Object</span></td> <td>A container for one or more <code translate="no" dir="ltr"><Child></code> elements.</td> </tr> <tr> <td><span translate="no"><Child age></span></td> <td><span translate="no">Optional</span></td> <td><span translate="no">integer</span></td> <td>The maximum age for this Child—for example, <code translate="no" dir="ltr"><Child age="17"></code>.</td> </tr> </tbody> </table> <h3 id="occupancydetails-examples" class="hide-from-toc" data-text="Examples" tabindex="-1">Examples</h3> <p>The following examples show how <code translate="no" dir="ltr"><OccupancyDetails></code> may appear within <code translate="no" dir="ltr"><Results></code>, <code translate="no" dir="ltr"><RoomBundle></code>, or the <code translate="no" dir="ltr"><Rates></code> child element.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="result-response" data-text="Result response" tabindex="-1">Result response</h3><p>The following example defines one itinerary and its pricing for one property in response to a Live Pricing Query where the user specified the number and types of guests. Here, the <code translate="no" dir="ltr"><OccupancyDetails></code> -- 2 adults and one child -- are returned in <code translate="no" dir="ltr"><Result></code>.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-23T16:20:00-04:00" id="42"> <Result> <Property>060773</Property> <RoomID>RoomType101</RoomID> <PackageID>Package101</PackageID> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Baserate currency="USD">278.33</Baserate> <Tax currency="USD">25.12</Tax> <OtherFees currency="USD">2.00</OtherFees> <AllowablePointsOfSale> <PointOfSale id="site1"/> </AllowablePointsOfSale> <Occupancy>3</Occupancy> <OccupancyDetails> <NumAdults>2</NumAdults> <Children> <Child age="17"/> </Children> </OccupancyDetails> </Result> </Transaction> </code></pre></section> <section><h3 id="rates-response" data-text="Rates response" tabindex="-1">Rates response</h3><p>The following example defines one itinerary and its pricing for 1 adult and 1 child. Here, the <code translate="no" dir="ltr"><OccupancyDetails></code> are returned in the <code translate="no" dir="ltr"><Rates></code> element of <code translate="no" dir="ltr"><Result></code>.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00"> <Result> <Property>8251</Property> <Checkin>2018-06-20</Checkin> <Nights>1</Nights> <Baserate currency="USD">62.18</Baserate> <Tax currency="USD">2.45</Tax> <OtherFees currency="USD">0.00</OtherFees> <Rates> <Rate rate_rule_id="rule-951"> <Occupancy>2</Occupancy> <OccupancyDetails> <NumAdults>1</NumAdults> <Children> <Child age="17"/> </Children> </OccupancyDetails> <Baserate currency="USD">42.61</Baserate> <Tax currency="USD">5.70</Tax> <OtherFees currency="USD">0.00</OtherFees> <Custom1>abc4</Custom1> <AllowablePointsOfSale> <PointOfSale id="yourhotelpartnersite.com"/> </AllowablePointsOfSale> </Rate> </Rates> </Result> </Transaction> </code></pre></section> <section><h3 id="room-bundle" data-text="Room bundle" tabindex="-1">Room bundle</h3><p>The following example defines an occupancy of 2 adults and 1 child for two nights, with a refundable rate. Here, the <code translate="no" dir="ltr"><OccupancyDetails></code> appear inside <code translate="no" dir="ltr"><RoomBundle></code></p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-23T16:20:00-04:00" id="42"> <Result> <Property>6781291</Property> <Checkin>2017-08-05</Checkin> <Nights>2</Nights> ... <RoomBundle> <RoomID>10291</RoomID> <RatePlanID>564739</RatePlanID> <PackageID>564739</PackageID> <Occupancy>3</Occupancy> <OccupancyDetails> <NumAdults>2</NumAdults> <Children> <Child age="17"/> </Children> </OccupancyDetails> <ChargeCurrency>web</ChargeCurrency> <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" /> <Baserate currency="USD">185.34</Baserate> <Tax currency="USD">37.06</Tax> <OtherFees currency="USD">2.22</OtherFees> </RoomBundle> </Result> </Transaction> </code></pre></section> <section><h3 id="multiple-room-bundles_2" data-text="Multiple room bundles" tabindex="-1">Multiple room bundles</h3><p>The following example defines multiple <code translate="no" dir="ltr"><RoomBundle></code> rates that are restricted to an occupancy of 2 adults and 2 children. Here, the <code translate="no" dir="ltr"><OccupancyDetails></code> appear in the <code translate="no" dir="ltr"><Rates></code> element of <code translate="no" dir="ltr"><RoomBundle></code>.</p> <pre class="readonly prettyprint lang-xml" translate="no" dir="ltr"><code translate="no" dir="ltr"><?xml version="1.0" encoding="UTF-8"?> <Transaction timestamp="2017-07-18T16:20:00-04:00" id="42"> <Result> <Property>1234</Property> <Checkin>2018-06-10</Checkin> <Nights>2</Nights> <Baserate currency="USD">275.00</Baserate> <Tax currency="USD">27.50</Tax> <OtherFees currency="USD">0</OtherFees> <RoomBundle> <RoomID>5</RoomID> <PackageID>STD</PackageID> <Baserate currency="USD">275.00</Baserate> <Tax currency="USD">27.50</Tax> <OtherFees currency="USD">0</OtherFees> <InternetIncluded>1</InternetIncluded> <ChargeCurrency>web</ChargeCurrency> <Custom1>ratebasic</Custom1> <Custom2>ratebasic</Custom2> <Occupancy>4</Occupancy> <OccupancyDetails> <NumAdults>2</NumAdults> <Children> <Child age="17"/> <Child age="17"/> </Children> </OccupancyDetails> <Rates> <Rate rate_rule_id="mobile"> <Baserate currency="USD">258.33</Baserate> <Tax currency="USD">25.83</Tax> <OtherFees currency="USD">1.00</OtherFees> <ChargeCurrency>hotel</ChargeCurrency> <Custom1>ratecode321</Custom1> </Rate> <Rate rate_rule_id="us_or_gb"> <Baserate currency="USD">268.33</Baserate> <Tax currency="USD">26.83</Tax> <OtherFees currency="USD">1.00</OtherFees> <Custom1>ratecode432</Custom1> </Rate> </Rates> </RoomBundle> </Result> </Transaction> </code></pre></section> </div> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Hotel Prices" product-id="82128" bucket="Hotels" context="DevSite feedback link" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-feedback-url="https://support.google.com/hotelprices/" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png" project-support-url="https://support.google.com/hotelprices/" > <button> Send feedback </button> </devsite-feedback> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>All rights reserved. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-09-18 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Hotel Prices" product-id="82128" bucket="Hotels" context="DevSite feedback link" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-feedback-url="https://support.google.com/hotelprices/" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png" project-support-url="https://support.google.com/hotelprices/" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-09-18 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Connect</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//googledevelopers.blogspot.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.instagram.com/googlefordevs/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Instagram </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.linkedin.com/showcase/googledevelopers/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > LinkedIn </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/googledevs" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > X (Twitter) </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.youtube.com/user/GoogleDevelopers" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Programs</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//www.womentechmakers.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Women Techmakers </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdg" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Developer Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/experts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Developer Experts </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/accelerators" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Accelerators </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdsc" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Google Developer Student Clubs </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Developer consoles</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//console.developers.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Google API Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.cloud.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Cloud Platform Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//play.google.com/apps/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Play Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.firebase.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Firebase Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.actions.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Actions on Google Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//cast.google.com/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Cast SDK Developer Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//chrome.google.com/webstore/developer/dashboard" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Chrome Web Store Dashboard </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.home.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 8)" > Google Home Developer Console </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//ai.google.dev/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google AI Link" > Google AI </a> </li> <li class="devsite-footer-sites-item"> <a href="/products" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/terms/site-terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/newsletter/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel data-api-explorer-panel > </devsite-concierge> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{"dimensions": {"dimension11": false, "dimension5": "en", "dimension3": false, "dimension6": "en", "dimension1": "Signed out", "dimension4": "Hotel Prices"}, "gaid": "UA-24532603-1", "metrics": {"ratings_count": "metric2", "ratings_value": "metric1"}, "purpose": 1}]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-272J68FCRF", "purpose": 1}], "ga4p": [{"id": "G-272J68FCRF", "purpose": 1}], "gtm": [], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Hotel Prices", "signedIn": "False", "tenant": "developers", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="0HHTfxSI99nkE0Xq8bJgSnjBep2jwc"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers","https://developers-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/developers/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["MiscFeatureFlags__enable_explain_this_code","Profiles__enable_recognition_badges","Profiles__enable_completecodelab_endpoint","Search__enable_ai_search_summaries","Profiles__enable_dashboard_curated_recommendations","Cloud__enable_cloud_dlp_service","Profiles__enable_developer_profiles_callout","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__enable_firebase_utm","Search__enable_suggestions_from_borg","Cloud__enable_cloud_shell","MiscFeatureFlags__enable_project_variables","CloudShell__cloud_shell_button","CloudShell__cloud_code_overflow_menu","Experiments__reqs_query_experiments","Cloud__enable_cloudx_ping","Profiles__enable_release_notes_notifications","TpcFeatures__enable_mirror_tenant_redirects","Profiles__enable_profile_collections","Cloud__enable_llm_concierge_chat","Concierge__enable_concierge","Analytics__enable_clearcut_logging","DevPro__enable_cloud_innovators_plus","Cloud__enable_cloud_facet_chat","Search__enable_dynamic_content_confidential_banner","Profiles__enable_complete_playlist_endpoint","TpcFeatures__enable_required_headers","MiscFeatureFlags__emergency_css","BookNav__enable_tenant_cache_key","MiscFeatureFlags__developers_footer_image","Profiles__enable_awarding_url","Search__enable_page_map","MiscFeatureFlags__enable_view_transitions","Search__enable_ai_eligibility_checks","EngEduTelemetry__enable_engedu_telemetry","MiscFeatureFlags__enable_variable_operator","Profiles__enable_public_developer_profiles","Concierge__enable_concierge_restricted","DevPro__enable_developer_subscriptions","Cloud__enable_cloud_shell_fte_user_flow","Cloud__enable_free_trial_server_call","Profiles__enable_page_saving","Concierge__enable_pushui","MiscFeatureFlags__developers_footer_dark_image","Profiles__require_profile_eligibility_for_signin","Search__enable_ai_search_summaries_restricted","Significatio__enable_by_tenant","Cloud__enable_cloudx_experiment_ids"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[1,"developers","Google for Developers","developers.google.com",null,"developers-dot-devsite-v2-prod.appspot.com",null,null,[1,1,[1],null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations/information"],null,null,null,[1,1,1],[1,1,null,1,1]],null,[null,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,29,32,36],null,[[null,null,null,[3,7,10,2,39,17,4,32,24,11,12,13,34,15,25],null,null,[1,[["docType","Choose a content type",[["Tutorial",null,null,null,null,null,null,null,null,"Tutorial"],["Guide",null,null,null,null,null,null,null,null,"Guide"],["Sample",null,null,null,null,null,null,null,null,"Sample"]]],["product","Choose a product",[["Android",null,null,null,null,null,null,null,null,"Android"],["ARCore",null,null,null,null,null,null,null,null,"ARCore"],["ChromeOS",null,null,null,null,null,null,null,null,"ChromeOS"],["Firebase",null,null,null,null,null,null,null,null,"Firebase"],["Flutter",null,null,null,null,null,null,null,null,"Flutter"],["Assistant",null,null,null,null,null,null,null,null,"Google Assistant"],["GoogleCloud",null,null,null,null,null,null,null,null,"Google Cloud"],["GoogleMapsPlatform",null,null,null,null,null,null,null,null,"Google Maps Platform"],["GooglePay",null,null,null,null,null,null,null,null,"Google Pay & Google Wallet"],["GooglePlay",null,null,null,null,null,null,null,null,"Google Play"],["Tensorflow",null,null,null,null,null,null,null,null,"TensorFlow"]]],["category","Choose a topic",[["AiAndMachineLearning",null,null,null,null,null,null,null,null,"AI and Machine Learning"],["Data",null,null,null,null,null,null,null,null,"Data"],["Enterprise",null,null,null,null,null,null,null,null,"Enterprise"],["Gaming",null,null,null,null,null,null,null,null,"Gaming"],["Mobile",null,null,null,null,null,null,null,null,"Mobile"],["Web",null,null,null,null,null,null,null,null,"Web"]]]]]],[1,1],null,1],[[["UA-24532603-1"],["UA-22084204-5"],null,null,["UA-24532603-5"],null,null,[["G-272J68FCRF"],null,null,[["G-272J68FCRF",2]]],[["UA-24532603-1",2]],null,[["UA-24532603-5",2]],null,1],[[4,3],[3,2],[5,4],[15,12],[16,13],[6,5],[11,8],[14,11],[12,9],[1,1],[13,10]],[[1,1],[2,2]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"developers.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>