# Vacation Rentals

Similar to Hotel Ads, integrating with Vacation Rentals requires completion of
one-time tasks to set up vacation rental properties and prices to be displayed
to users searching for their next destination. The integration process can be
started either directly with Google, by meeting the requirements listed below
and completing the [Vacation Rentals interest
form](https://services.google.com/fb/forms/googlevacationrentalsinterestform),
or by collaborating with an [approved third-party integration
partner](https://support.google.com/hotelprices/answer/10224602). Once approved, a
Google Technical Account Manager will be in touch with you at every step of the
integration pipeline.

In summary, you should implement:

1. **Property listing:** Static information about the property including name,
   address, GeoCode locations, image and website URLs, and amenities.

2. **Price:** Itinerary that indicates the availability and price of a stay at a
   property.

3. **Landing Page:** Template that allows users to land on your websites with
   prefilled itinerary information.

## Before you begin

Before integrating with Vacation Rentals, you should be able to provide the
following:

- A designated partner technical contact who can be contacted by a Google
  Technical Account Manager.

- A contract signed with Google to protect customer privacy.

- Localized self-service or email-based user support.

## Property listing feed

A Vacation Rentals listing feed contains all the properties to be shown on
Google. This feed contains the physical attributes of the property including
name, address, GeoCode locations, image URLs, website URLs, and amenities. If
you are unsure whether your property is a Vacation Rental or Hotel, refer to
[Categories for hotels and lodging
businesses](https://support.google.com/hotelprices/answer/9970971).

> [!IMPORTANT]
> **Key Point:** If Google detects any Hotel properties, Google reserves the right to refrain from serving them or may ask you to revise your feed.

There are 2 options to provide your vacation rental listings.

### Method 1: Crawled list feed

This method is the preferred approach for partners with smaller inventories
including property managers who prefer a simpler setup and maintenance. Partners
mark up their site with structured data and Google can crawl it to generate the
list feed.

#### Mark up your website

Follow the [Search Console Documentation](https://developers.google.com/search/docs/appearance/structured-data/vacation-rental)
for marking up the vacation rentals on your site.

#### Create a sitemap with vacation rental listings

Google will automatically follow links on your site to discover your vacation
rental listings. To help ensure that Google finds all of your listings and finds
them faster, you can create a sitemap with your vacation rental listings. Follow
[the guide](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap)
for creating a sitemap.

There are a few additional requirements on the sitemap for the crawled listing
feed:

- The sitemap must contain the vacation listings URLs; it cannot be a [sitemap index](https://support.google.com/webmasters/answer/12818558), which is used by other search products.
- It's preferred that the sitemap only contain Vacation Rental listings URLs, but it can contain other URLs as well.
- You can provide multiple sitemaps.
- Share the link(s) to your sitemap with your Google Technical Account Manager.

### Method 2: XML List Feed

The method is a good option for connectivity partners and partners with larger
inventories. For initial ingestion, partners will create a vacation rental
list feed and include attributes unique to vacation rentals.

#### Create the XML files

For initial ingestion, you need to share a listing feed with the Google
Technical Account Manager based on the specifications provided in the
[Hotel list feed XML
reference](https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed#attribute-names-vr).
However, unlike hotel lists, you should include relevant [attributes specific to
Vacation Rentals](https://developers.google.com/hotels/vacation-rentals/dev-guide/vr-attributes). The
ingestion of the listing feed can take approximately 2 to 4 weeks, during which
Google will be in touch with you to assist with troubleshooting and optimizing
the feed.

> [!IMPORTANT]
> **Key Point:** If you omit attribute values listed as **Optional (strongly
> recommended)**, it does not prevent the list feed from validating, but it can result in the listing not showing in search results when certain filters are applied.

#### Attributes unique to vacation rentals

The general XML structure has a similar format as Hotel listing feeds. See
[Hotel list XML reference](https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed).

Failure to include the following items automatically disables the listing.

- Required XML child elements: `id`, `name`, `latitude`, `longitude`, `address`.
- Required attributes: `capacity` and `website`.
  - See example of the [direct link to
    property](https://support.google.com/hotelprices/answer/10519514) in your listing feed. This gives users the opportunity to visit the property website.
- [Vacation Rentals-specific attributes, child elements, and XML
  example](https://developers.google.com/hotels/vacation-rentals/dev-guide/vr-attributes).

#### Host the listing feed and file structure

Host your listing feed in a ZIP file. Google fetches the latest set of property
listings in your inventory daily.

Mind the following requirements for importing the hosted listing file:

- ZIP files are to be shared with Google.
- Feeds should be shared in the ZIP format only (no TAR or GZ).
- Each ZIP file can contain multiple listing XML files.
- Each XML file should contain multiple listings.
- Each XML file must be less than 100 MB.
- Avoid having a large number of XML files. Consolidate multiple listings per file.
- Each XML file can only contain one language.

  - Example:
    `xml{:.readonly}
    <listings><language>en</language>...</listings>`

  - For non-primary languages, include only the unique hotel ID and content
    for the property in that language only.

#### Testing your XML

To verify that your XML files are correct before sharing them with Google,
use the following command to validate your feed as explained in [Hotel Ads
schemas](https://developers.google.com/hotels/hotel-prices/dev-guide/schemas):

    xmllint --noout --schema http://www.gstatic.com/localfeed/local_feed.xsd myfile.xml

### Property listing image requirements

> [!WARNING]
> **Warning:** Listings with fewer than 5 images will be blocked from appearing on Google Vacation Rentals.

We recommend that listings have at least 8 photos (at least 1 bedroom,
1 bathroom, and 1 common area). Having fewer than 8 photos could impact
performance metrics for the listing.

> [!IMPORTANT]
> **Key Point:** Although 8 is the minimum recommendation, we strongly recommend providing 20+ photos (or as many as you have available) for a competitive advantage.

Use the best possible quality images, provided that they fit within the
following constraints:

- Recommended resolution: 1920 x 1080 px
- Maximum height: 4000 px
- Maximum width: 4000 px
- Maximum overall size: 10 MB
- File format: JPG, JPEG, PNG, WEBP
- Orientation: Landscape
- Ensure image URLs are accessible to **Googlebot and Googlebot-Image** and not blocked in `robots.txt` or an HTTP `X-Robots-Tag` header. For more information, see [Test your `robots.txt`](https://support.google.com/webmasters/answer/6062598).

No watermark or branding should be in the images. Properties without images are
automatically be disabled from serving.

The image order is auto-generated and cannot be changed. Google ranks
and displays images within your property listing and could take into
consideration factors, such as user query terms. For example, when a user
searches for "vacation rentals with a pool," pool-related images might display
at a higher level.

### Common issues

Room-sharing is not supported in Google Vacation Rentals. We only support full
properties.

Every bookable property should be sent to Google as a separate `<listing>` that
contains its own details and attributes. For example, each apartment unit inside
a multi-unit building should be sent as a separate `<listing>`.

Attributes play an important role in explaining the details of the properties,
so send as many attributes as possible to help promote your properties.

## Price feed

Once listing feed ingestion and troubleshooting is completed, you need to set up
Hotel Price integration so that Google is able to cache the updated itinerary
prices for Vacation Rental properties.

There are two methods for setting up pricing:

- Method 1: Google transaction pricing
- Method 2: ARI pricing support for vacation rentals

### Method 1: Google transaction pricing

If you are using [Google transaction
prices](https://developers.google.com/hotels/hotel-prices/dev-guide/updating-prices) to pass your prices to
Google, price integration is the same as [Hotels price
integration](https://developers.google.com/hotels/hotel-prices/dev-guide/updating-prices). Refer to the
XML reference: [Pricing \& room inventory
(transactions)](https://developers.google.com/hotels/hotel-prices/xml-reference/transaction-messages).

You can begin implementing your Price feed using the [PULL delivery
method](https://developers.google.com/hotels/hotel-prices/dev-guide/delivery-mode#pull). If the PULL method
is successful, you can upgrade to the [PULL+HINT (changed pricing)
method](https://developers.google.com/hotels/hotel-prices/dev-guide/delivery-mode#hints) for better control
of updated prices.

A [Live Pricing
query](https://developers.google.com/hotels/hotel-prices/dev-guide/query-messages#live-pricing-queries)
endpoint (similar to a PULL endpoint) can be used to fetch prices for users
when they visit itineraries that are not cached at Google.

### Method 2: ARI pricing support for Vacation Rentals

[Availability, Rates, and Inventory
(ARI)](https://developers.google.com/hotels/hotel-prices/dev-guide/ari-overview) can be used to deliver
nightly rates and availability information that Google uses to generate prices
to users.

In Vacation Rentals, each unit is a separate listing, with exactly one room of
one room type.

There can, however, be multiple different rate plans (packages) for each
property. For example:

- You can offer guests booking options with different value addons, such as free
  cancellation.

- You can use rate plans as virtual rates to implement promotions with extra
  restrictions (even though the [Promotions
  API](https://developers.google.com/hotels/hotel-prices/xml-reference/ari-promotions) is preferable for that
  use case).

Best practices for ARI messages for Vacation Rentals are:

- For Transaction (Property Data):

  - Specify a single `RoomData` element with the room ID you have selected to
    represent the individual unit on the listing, matching the `@InvTypeCode` in
    the ARI messages. You can reuse the property ID.

  - Specify one or more `PackageData` elements for each rate plan you plan to
    use.

- For OTA_HoteInvCountNotifRQ:

  - Set an inventory count of 1 if the unit is available on a given date, or 0 if it has been booked.

## Landing pages

The basics of configuring [Landing
pages](https://developers.google.com/hotels/hotel-prices/dev-guide/pos-overview) are the same for Vacation
Rentals integration as for Hotels integration. There must be at least one
general landing page available to all users without any restrictions.

The following landing page example covers every user country and language. In
this example, `My Amazing VR Website` is the brand name users see in the
Vacation Rentals search results:

    <?xml version='1.0' encoding='UTF-8'?>
    <PointsOfSale partner='partner-name-vr'>
      <PointOfSale id='landing-everywhere'>
        <DisplayNames display_text='My Amazing VR website' display_language='en'/>
        <URL>https://example.com/property/(PARTNER-HOTEL-ID)?checkin=
          (CHECKINDAY)%2F(CHECKINMONTH)%2F(CHECKINYEAR)&amp;checkout=
          (CHECKOUTDAY)%2F(CHECKOUTMONTH)%2F(CHECKOUTYEAR)&amp;guests=(NUM-GUESTS)
        </URL>
      </PointOfSale>
    </PointsOfSale>

## Price accuracy

Based on the [Referral experience
policy](https://support.google.com/hotelprices/answer/6064406), Google expects that
the prices and availability cached on the Google side will match the prices and
availability on your website. We regularly check the prices in the cache
with your website prices and assign a Price Accuracy Score based on the
freshness of the prices in the Google price cache.

For an account to be eligible to be enabled and shown to the users, it
must be above the Price Accuracy Score threshold for a certain number of days
to make sure there are no fundamental issues with passing prices to Google.
These checks continue even after the account goes live.

You have access to mismatched cases and details in your Hotel Center
account throughout integration and afterwards to help in troubleshooting.

## Brand associations specific to integration partners

Brand association lets you group vacation rental properties together. You
can associate brand-specific icons (or logos) to the set of properties in a
brand. Follow the instructions on [How to associate your properties to
brands](https://support.google.com/hotelprices/answer/9919249#how_to_associate_your_properties_to_brands).

> [!IMPORTANT]
> **Key Point:** Brand association does not happen automatically. You need to sync with your Google Technical Account Manager to enable brand association for your account.