The Feedance AI features is rolling out.
Check it out!

What is Google Hotel Ads?

Google Hotel Ads is Google's advertising and metasearch program for hotels, resorts, and other lodging properties. Rather than showing a static product listing, it displays live room rates and availability for a property directly inside Google Search, Google Maps, and Google Travel, sourced from a feed that the hotel or its technology partner submits through Hotel Center, Google's dedicated management platform for the program.

Unlike a standard product feed, Hotel Ads is built on three connected feed types rather than one file: a Hotel List Feed that registers each property and maps it to Google's canonical Maps listing, a Price Feed that reports nightly rates, availability, and booking restrictions, and a Landing Page Feed that tells Google exactly which URL to send a shopper to when they click through to book. All three are submitted as XML validated against Google's own schema, built on the OpenTravel Alliance (OTA) message standard.

Why connect your hotel feed to Google Hotel Ads?

Hotel Ads places your property's real rates and availability next to the same search results where online travel agencies (OTAs) already compete for the booking, giving travelers a direct-booking option at the exact moment they are comparing prices on Google Search, Google Maps, and Google Travel.

Because pricing is pulled live from your feed rather than crawled from your website, an accurate, frequently updated feed is what keeps your rates eligible to show at all. Google's own Price Accuracy Policy ties auction eligibility and free booking link placement directly to how well your submitted price matches what a guest sees on your booking page, so feed quality has a direct, measurable effect on visibility and cost.

How does billing work: CPC vs. the retired commission model?

Hotel Ads campaigns are billed through Google Ads once your Hotel Center feed is linked to an ads account. Google currently supports two bidding approaches for hotel campaigns: Cost-Per-Click (CPC), where you bid a fixed amount or a percentage of the total nightly price (CPC%) and pay each time a shopper clicks through to your site, and Target Return on Ad Spend (tROAS), where Google's bidding system optimizes toward a revenue goal you set.

This is a change from how the program used to work. Google's commission-based 'pay per stay' model, where a hotel paid a percentage only after a guest actually completed their stay, was officially discontinued on February 20, 2025. Feeds and integrations built around the old commission program need to be reconfigured for CPC or tROAS bidding, since pay-per-stay is no longer an available option in Google Ads.

What feed format does Google Hotel Ads require?

Every Hotel Ads feed is plain-text XML, not CSV or a spreadsheet-based format, and each file is validated against Google's published schema before it can go live. Google recognizes two ways to deliver pricing:

  1. ARI (Availability, Rates, and Inventory) push — you send incremental XML messages (OTA_HotelRateAmountNotifRQ for rates, OTA_HotelAvailNotifRQ for availability) whenever a nightly rate, room count, or restriction changes, and Google computes the rest.
  2. Live pricing queries — Google sends your system a real-time request for a specific itinerary, and your feed endpoint must respond with a price within Google's specified timeframe for it to appear in results.

Files are uploaded to Google either as a single XML document or zipped (STORED or DEFLATED compression only) and served from an HTTP or HTTPS location, optionally protected with Basic or Digest authentication. Uncompressed Hotel List files are capped at 100 MB, and Google recommends keeping individual ARI rate messages under 5 MB.

Which hotel and rate attributes are required?

FieldFeed / MessageDescription
HotelID / HotelCodeHotel List Feed / ARI messagesUnique property identifier; must never be reused and must match exactly across the Hotel List, Price, and Landing Page feeds
RoomID / InvTypeCodeRoomData (ARI Property) / Rate & Availability messagesUnique identifier for a specific room type at the property
PackageID / RatePlanCodePackageData (ARI Property) / Rate & Availability messagesIdentifies the rate plan (e.g. refundable, breakfast-included) tied to a room type
Start / EndStatusApplicationControl (Rate & Availability messages)Inclusive date range the rate or availability update applies to
CurrencyCodeARI Rate messageISO 4217 three-letter currency code for the amount being sent
BaseByGuestAmt (AmountBeforeTax / AmountAfterTax)ARI Rate messageThe nightly base rate; at least one of before-tax or after-tax amount is required
NumberOfGuestsBaseByGuestAmts (ARI Rate message)Occupancy the base amount applies to; defaults to 2 if omitted
RestrictionStatus (Master)ARI Availability messageOpen/closed status for the room-and-rate combination on the given dates; closed by default until explicitly opened
LengthOfStay (MinLOS / MaxLOS)ARI Availability messageMinimum and maximum length-of-stay restrictions for a rate
Capacity / AdultCapacity / ChildCapacityRoomData (Hotel List / ARI Property Feed)Maximum occupants a room type can hold, split by adults and children

How to connect your hotel feed with Feedance

Feedance takes the OTA-XML complexity out of the equation by mapping your PMS, channel manager, or property-management export into the exact Hotel List and ARI (rate and availability) XML structures Google Hotel Center expects, instead of asking your team to hand-build OTA_HotelRateAmountNotifRQ and OTA_HotelAvailNotifRQ messages.

  1. Connect your source of hotel, room-type, and rate data (PMS, channel manager, or spreadsheet export) to Feedance.
  2. Map your internal property, room, and rate-plan identifiers to the HotelID, RoomID, and PackageID fields Google requires.
  3. Feedance generates a schema-valid Hotel List feed and ARI-formatted rate/availability XML, hosted at an HTTP/HTTPS endpoint Google can pull from or push updates to.
  4. Feedance validates every field against Google's known error codes before submission, flagging issues like missing rate plan IDs, invalid currency codes, or closed-availability mismatches ahead of time.
  5. Register the feed URL in Hotel Center and link the account to Google Ads to start serving hotel campaigns.

How often should the feed update?

Under Google's ARI push delivery model, there is no fixed schedule — you send an updated rate or availability message the moment something actually changes on your side, whether that's a nightly rate, an inventory count, or a length-of-stay restriction. Google explicitly recommends sending an updated availability message whenever availability changes, rather than batching updates on a timer.

Google's own guidance for improving price accuracy goes further, recommending prices be refreshed several times a day so the feed never drifts out of sync with what a guest sees on your live booking page. For hotels that need true real-time accuracy, Google can also issue live pricing queries and expects a response within its specified timeframe for that price to appear in results.

Common Google Hotel Ads feed errors

Error codeMessageCategory
1001Can't understand format on timestampFormatting / XML structure
1022Can't find a match for the given partner and hotel IDID mapping
1066RoomBundle is missing a RatePlanIDRoom / rate data
1098Base rate must be positive or marked unavailablePrice validation
1102Price exceeds Google's per-night limit of $10,000 USDAccount configuration / pricing limits
3010Checkin date is in the pastDate validation
6005Upload path not recognizedFeed upload
6009Partner not recognizedAuthorization
8194Exceeds 3,000 room type limit per propertyXML parsing / structural limits
11002Duplicate rates detected in pricing messagePricing format validation

Google's Feed Status Tool inside Hotel Center surfaces these codes along with the specific hotel and dates affected, so they can be corrected and the message resubmitted.

Optimization tips for your Google Hotel Ads feed

  1. Match every price component exactly. The base rate, taxes, and fees sent in your feed must match both your landing page and your final booking page — mismatches on any one of the three trigger Price Accuracy Policy violations.
  2. Update more often than the minimum. Google recommends refreshing prices several times a day rather than once, so the feed reflects rate changes as they happen on your own site.
  3. Submit every available room and rate, not just your lowest one. A fuller PackageData and RoomData set gives Google more combinations to match against a shopper's search.
  4. Separate taxes and fees instead of folding them into the base rate. Clear breakdowns reduce the chance of a price-accuracy mismatch being flagged.
  5. Set Master restrictions and LOS rules deliberately. Remember that availability defaults to closed until explicitly opened, so an omitted RestrictionStatus can silently suppress a room from showing.
  6. Watch your price accuracy score in Hotel Center. A degraded score directly reduces auction position and free booking link placement, and repeated violations can lead to individual hotel or full account suspension.

FAQ

Does Google Hotel Ads accept a simple CSV or spreadsheet feed?
No. Every feed type — Hotel List, Price, and Landing Page — must be submitted as XML validated against Google's schema; there is no supported flat-file alternative.

Is the commission-based (pay per stay) model still available?
No. Google discontinued commission-based bidding for hotel ads on February 20, 2025. Current campaigns run on CPC (fixed or percentage-of-price) or Target ROAS bidding instead.

What currencies can I submit rates in?
Rates must use a valid ISO 4217 three-letter currency code in the CurrencyCode attribute of the ARI Rate message; Google maintains the list of currencies it supports for hotel pricing.

What happens if my HotelID doesn't match my Hotel List feed?
You'll receive error 1022, 'Can't find a match for the given partner and hotel ID' — the Price Feed's HotelID must map exactly to an ID already registered in the Hotel List Feed, since all rate and availability data is matched against that registry.

Do I need to submit availability separately from rates?
Yes. Rates are sent via the ARI Rate message (OTA_HotelRateAmountNotifRQ) and availability/restrictions via the ARI Availability message (OTA_HotelAvailNotifRQ) — they are distinct message types, and a room can have a valid rate but still show as unavailable if its Master restriction is closed.

Schedule your 15-minute demo now

Schedule my demo

We’ll tailor your demo to your immediate needs and answer all your questions. Get ready to see how it works!