All posts

Hotel rate shopping and rate parity: what a comp set is really telling you

Emma Wilson · February 12, 2026 · 5 min read

A comp set tells you what a handful of named hotels were asking for one arrival date, one length of stay and one occupancy, on one channel, at the moment the query ran. It does not tell you what they sold, how full they are, or what they kept after commission. Read rate shopping data as a record of asking prices and most of the bad decisions it causes disappear.

The distinction matters most when it is most expensive to ignore. In a compression period every public rate in the set is high, and the hotel next door may be quietly filling with a crew contract at half of it. In a soft week the same set shows four hotels holding a rate that nobody is paying.

So the useful question is not which number is lowest. It is: which of these hotels is selling the same product I am, and has their answer moved since yesterday.

What is a shopped rate, exactly?

A shopped rate is a quote returned by a booking engine in response to a query with roughly eight parameters. Change one parameter and the number changes, sometimes by a third. Comparing two rates fetched with different parameters is not a comparison, it is noise with a decimal point.

  • Arrival date and length of stay
  • Occupancy, and the split between adults and children
  • Room category and bed type
  • Board: room only, breakfast, half board
  • Cancellation and prepayment terms
  • Channel, and the audience the rate is shown to: public, member, mobile, closed user group
  • Currency and rounding
  • Tax treatment: city tax, tourism levy and VAT included in the display or added at checkout

If your rate shopping data does not carry those parameters alongside the price, you cannot re-read it later. Nobody remembers in March whether the 149 recorded in January was room-only and refundable or breakfast-inclusive and prepaid.

Why the lowest rate in the set tells you least

The cheapest line in a shopped set is usually the most restricted product in the market: non-refundable, prepaid, minimum stay attached, smallest category, single occupancy. It is often the last unit of something, priced to clear.

Matching it means matching a product you are not selling, on terms you did not choose.

Two readings are worth more than the minimum. First, the median of the set filtered to the same board and cancellation terms as your own lead rate. Second, your rank inside that filtered set. Rank is stable, level is noisy.

Rate parity: what the term covers now

Parity is about your own price, not your competitors'. It means the rate you publish stays consistent across the channels you distribute through. Narrow parity restricts what you may show on your own website. Wide parity restricts what you may show anywhere, including other intermediaries.

The European position has moved. Several member states restricted parity clauses in national law over the past decade, and the platform gatekeeper rules introduced with the Digital Markets Act restrict them further for designated platforms. The practical effect for an EU hotel is more room to price the direct channel below an intermediary than existed ten years ago.

The detail differs by country and by contract, so read yours before acting on any general statement, including this one. Outside the EU, in the Gulf and in North America, the position is usually contractual rather than statutory. The clause you signed is the rule.

Parity breaks you did not create

Most parity alerts are not your doing, and the correct response depends entirely on the cause.

  • Wholesale or bed bank allotments resold to the public below your contracted rate
  • Margin-funded discounts, where the platform pays for the reduction out of its own commission
  • Closed user group or loyalty rates surfacing to a logged-out shopper
  • Package rates unbundled so the room component becomes visible on its own
  • Currency conversion and rounding applied by the platform rather than by you
  • A stale extranet load that nobody replaced when the season changed

Cutting your own public rate to match a margin-funded discount is the worst available response. It costs you money on every direct booking and leaves the source untouched. Work out which of the six you are looking at before you touch a price.

How much shopping is enough?

Volume is easy to overbuy. Five competitors, ninety arrival dates, two lengths of stay and two occupancies is 5 x 90 x 2 x 2 = 1,800 quotes in a single pass. Run that daily and you are storing 54,000 quotes a month for one property.

Decide first what you will act on. If your decisions concentrate in the next 21 days plus weekend patterns further out, shop that window daily and the tail weekly. The rest is data nobody will ever open, and it makes the data you do need slower to read.

The expensive mistake is under-pricing

Rate shopping tools are built to show you when you are too expensive, because that is the visible failure. The costly failure is the invisible one: sitting a few euros below what the market would have paid on a date that has already firmed up.

Take an 80 room hotel running at 70 percent occupancy: 80 x 0.7 = 56 rooms sold per night. Five euros of ADR left on the table is 56 x 5 = 280 euros a night, and 280 x 30 = 8,400 euros over a month. That is a rounding error per booking and a serious number per quarter.

Being the cheapest hotel in the comp set is not an achievement. It is a position, and it should be one you chose.

A weekly routine that fits the data

  • Check rank, not level, for the next 21 days against the set filtered to your own board and cancellation terms
  • Flag every date where your rank moved two or more places without you changing anything
  • Check parity on your three highest-producing channels for three sample dates, and log the cause each time it breaks
  • Review closed and restricted dates in the comp set: a competitor selling out is a stronger signal than a competitor discounting
  • Look at the dates 30 to 90 days out where nothing has moved for a fortnight, and ask whether the whole set is anchored too low
  • Record every rate change with its reason, so next quarter you can tell a decision from a drift

Whichever tool holds this, PriceRoom included, the requirement is the same: the query parameters have to be stored next to the rate. A price without its query is a number without a unit.