Hotel Rate Shopping: A Weekly Competitor Rate Sheet Built With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Hotel Rate Shopping: A Weekly Competitor Rate Sheet Built With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Hotel Rate Shopping: A Weekly Competitor Rate Sheet Built With AI.

Pick five hotels you genuinely compete with, check the same eight stay dates for two adults every Monday, and record the cheapest like-for-like rate in a fixed sheet. Then paste the table into ChatGPT or Claude for a short summary of where you sit against the median. By hand, a week's lookups take about 40 minutes.

Collect the rates yourself, on each hotel's own booking page, and let the AI read only what you typed. Some booking sites bar automated tools outright, including AI assistants that work through your browser, so an agent sent out to gather prices could get you blocked. The sheet below is built so that the thinking is automatic and the capture stays manual.

Follow me on Instagram@sagnikteaches

Choose five rivals, each for a reason

Five is the right size because it gives a median that survives a sold-out hotel or two, and 40 lookups is a job you will actually finish each week. Pick each rival for a reason and write the reason beside the name, so you can tell later whether the set still makes sense.

Connect on LinkedInSagnik Bhattacharya
Role in the setWho it isWhy it earns a place
Closest matchSimilar rooms, rating and price bandThe hotel guests most often weigh you against
A step upSlightly better productShows what guests will pay to trade up
Price fighterA weaker product that cuts rate firstSets the floor guests can see
Same guestsWins the same business or family tradeTests your own segment
Wild cardA newer or fast-moving propertyAn early warning that the market has shifted

Evidence beats instinct here. Ask guests at check-in which other hotels they looked at, note which names come up in enquiries, and keep a line of where cancelled guests said they went. If you want help shortlisting, paste a list of competing hotels with their star rating, room count and review score into an assistant and ask it to propose a set with reasons, then check its picks against your own knowledge. Review the set every six months, or whenever a new hotel opens.

Subscribe on YouTube@sagnikteaches

Fix the search so every Monday is comparable

A rate sheet is only as good as the sameness of its searches. These are the settings to fix once and write at the top of the sheet:

SettingChoiceWhy
GuestsTwo adults, no childrenKeeps family-room pricing out of the numbers
Length of stayOne night. If a hotel demands two, type "2-night min" in its cell and put its nightly rate in the notesKeeps the median one-night and like-for-like while recording what a guest would face
RoomThe cheapest standard double or twin with a private bathroomLike-for-like. If it is sold out, leave the cell blank and say why in the notes.
Rate typeThe cheapest flexible rate (free cancellation)Keeps non-refundable promotions from skewing the comparison
BreakfastRecord the price as shown and mark "BB" in the notes if it is includedA rival that bundles breakfast is not comparable without a note
Price shownThe nightly price on the rate list, before any booking stepIf one site includes taxes and another adds them later, say so in the notes
WhereEach hotel's own booking pageOne consistent channel for every rival
WhenMonday morning, a private browser window, not signed in to any accountAvoids member prices and cookie effects

Consistency beats coverage. Five hotels captured the same way every week are worth more than twenty captured carelessly.

Eight stay dates that tell you something

You do not need every night. A rolling set of eight, mixed on purpose, shows both demand close in and pricing strategy further out:

  • The next Friday and Saturday (four and five days out): the closest read on demand.
  • One midweek night next week, a Tuesday here: your baseline for ordinary demand.
  • A Saturday about twelve days out and a Friday about eighteen days out: where rivals are still adjusting.
  • One event date, such as a festival, conference or big fixture: the date that moves most, and the one worth tracking as it approaches.
  • A Saturday about two months out and one about three months out: how rivals set their opening prices.

Keep the same stay dates from week to week and add one new far-out date each Monday, dropping any that have passed. Watching the same night over several weeks shows how rivals' rates climb as it nears, which a one-off check can never show. If you build the dates with formulas, the next Saturday on or after today is =TODAY()+MOD(7-WEEKDAY(TODAY()),7), and adding 7 gives the one after.

The sheet: layout, formulas and a filled week

Use one tab per week, named by the Monday's date. Columns A to G hold the stay date, your own rate and the five rivals. The rest are formulas, so the only things typed each week are rates and notes. Your own rate comes from your booking system or channel manager, not from a lookup.

Median of rivals         H2: =MEDIAN(C2:G2)
Rivals with a rate       I2: =COUNT(C2:G2)
Position vs median       J2: =IF(I2<3, "too few", B2/H2-1)
Flag                     K2: =IF(I2<3, "Too few rates", IF(J2>0.1, "Above", IF(J2<-0.1, "Below", "In line")))
Median last week         L2: typed or copied from last week's tab
Change in median         M2: =IF(L2="", "", H2/L2-1)
Notes                    N2: typed (room type, breakfast, minimum stay)

MEDIAN skips blank cells and text, so typing "sold out" or leaving a cell empty removes that rival from the calculation. Typing 0 does the opposite: it drags the median down. Here is a filled week for a 26-room hotel (illustrative rates in dollars, with Monday as capture day):

Stay dateOursABCDEMedianPositionFlag
Fri, 4 days out139145135159129125135+3.0%In line
Sat, 5 days out149155149169sold out135152-2.0%In line
Tue, 8 days out10999105119959999+10.1%Above
Sat, 12 days out149135149excl.145125140+6.4%In line
Fri, 18 days out1291291351391251191290.0%In line
Sat, 33 days out (festival)169199189sold out210179194-12.9%Below
Sat, 61 days out139129139149135119135+3.0%In line
Sat, 89 days out1291191251352-night min109122+5.7%In line

The notes column matters more than it looks. Typical entries are "BB" (breakfast included), "2-night min", "superior only", "taxes not shown", "member rate only" and "sold out, waitlist". Anything that makes a rate not like-for-like belongs there, and the assistant reads the notes when it writes the summary.

Two cells deserve a note. On the Saturday twelve days out, Hotel C's standard doubles were sold out and its $159 was for a superior room, so the cell is marked "excl." and left out. Including it would have made the median $145 and put us 2.8% above it. Without it the median is $140 and we sit 6.4% above, which is the fair comparison. And the date 89 days out has four rates because Hotel D sells that Saturday only with a two-night minimum, so its cell says "2-night min", its nightly rate sits in the notes and the median uses the other four.

Capturing 40 rates in 40 minutes without breaking a site's terms

With five rivals and eight dates, a week has 40 lookups. At roughly a minute each, that is a 40-minute job, and the routine is short.

  1. Open a private browser window, not signed in anywhere, and set two adults.
  2. Take each rival in turn on its own booking page. Enter the first date, note the cheapest like-for-like flexible rate, then change the date and repeat. Most booking pages let you change dates in the same session.
  3. Type each figure into the sheet as you go. Write "sold out" where there is no room, "excl." where only a different room type is left, and "2-night min" where a minimum stay applies.
  4. Set a timer. If a hotel's page is slow or awkward, leave the cell blank and note why. Do not chase it.
  5. Copy last week's medians into column L, check the flags, and save the tab.

Doing this by hand is a choice with a reason. Booking.com's terms (section A15) bar scraping or crawling and the use of robots, scrapers or other automated means, and they name "automated assistants", including AI-powered assistants that work through your browser, without its written permission. Section A15.3 adds that it will block anyone it suspects of using software to gather prices. Other sites have their own terms, so read each one before you automate anything. In this method the AI never touches a booking site: it reads a table you typed. For the same reason, do not start or hold a booking just to see a final price, because that can tie up a rival's real inventory.

When a tool is worth paying for

Do the sum before you shop. Forty minutes a week for 52 weeks is 2,080 minutes, or about 35 hours a year. If the person doing it costs $20 an hour, that is under $700. The job grows quickly, though: ten rivals over twelve dates is 120 lookups, around two hours a week or over 100 hours a year. Past that point a tool starts to pay for itself, provided it collects rates in a way the sites allow.

As of October 2026, only RateMate among the tools below publishes prices, so expect to ask the others for a quote:

  • RateMate describes custom competitor sets and rate searches filtered by dates, guest numbers, length of stay and meal type, with a short free trial. Its price page lists plans in euros: Starter at 49 euros a month plus tax, Advanced at 79 and Custom from 99. A year of Starter lands in the same range as the 35 hours of hand capture above once you convert the currency, so check how many rivals and dates each plan covers before you compare.
  • rate.shopping (the site of MaxRevenue Club) offers free emailed reports on sign-up and mentions a premium dashboard covering all 365 days. Its page does not say how rates are collected, and its footer dates from 2022, so ask whether the service is still maintained.
  • Lighthouse sells competitive-set and pricing products, including one aimed at independent hotels, through a demo.
  • Cloudbeds describes competitor pricing sitting beside recommended rates in a single calendar view in its revenue-management product, for hotels that already use it; check what the price includes.

Ask every vendor the same questions. How does the tool collect rates, from which sites, and with what permission? How often does it refresh? How many rivals and dates are included? Does it match room types like-for-like, or just show the cheapest "from" price? Can you export the data into your own sheet? What is the monthly price, and how long is the contract? A tool replaces the capture. It does not choose your comp set for you or make the pricing decision. For the wider software picture, see the cost of a channel manager and what AI adds.

The Monday summary: prompt, output and what I corrected

The formulas do the arithmetic; the assistant's job is to read the table and write it up in plain words. Paste the tab, notes column included, under a standing prompt:

Here is this week's rate sheet for [Hotel], 26 rooms, as a table. Columns: stay
date, our rate, rivals A to E (blank or text means no like-for-like rate), median of
rivals, our position against the median, flag, median last week, change in the
median, notes.

Write a summary for the owner, 150 words at most:
1. The dates flagged Above or Below, with the figures.
2. Any date where the median moved 8% or more since last week.
3. Any rival sold out on a date where we still have rooms.
4. One sentence on what this sheet cannot tell us.
Use only the numbers in the table. State how many dates are above, level with and
below the median. Do not recommend a rate. Say what I should check before deciding.

TABLE:
[paste the tab]

What came back for the week above (illustrative):

Two dates need a decision. Tuesday in 8 days: we are at $109 against a rival median of $99 (+10.1%), and the median has not moved since last week. Saturday in 33 days, the festival: we are at $169 against $194 (-12.9%); the median is up 10.9% in a week and Hotel C is sold out. Across the eight dates we are above the median on 6, level on 1 and below on 1. Hotel C's superior-room rate was excluded for the Saturday 12 days out. The sheet cannot show our own bookings on hand, so check them for the festival date and the Tuesday before changing anything.

Most of it is right, and it correctly declined to name a rate. The count is wrong: the table shows 5 above, 1 level and 2 below, and the assistant filed the Saturday five days out, which is 2.0% below the median, under above. That is why counts live in the sheet, with three formulas under the table: =COUNTIF(J2:J9,">0") for above, =COUNTIF(J2:J9,0) for level and =COUNTIF(J2:J9,"<0") for below. Paste those numbers into the prompt and tell the assistant to use them.

The other mistake came from the sheet, not the assistant. In the first weeks the owner typed 0 for "sold out". On this week's figures that would pull the Saturday median from $152 to $149 and the festival Saturday's from $194 to $189, so the festival gap would read 10.6% instead of 12.9%. Nothing looks wrong when that happens; the numbers are just quietly off. The rule since then is text or blank, never zero. For help writing and checking formulas like these, see the Google Sheets AI prompts guide.

Alerts that fire on rules, not on the AI's mood

Alerts should come from the sheet, because a rule behaves the same way every Monday and an assistant's reading may not. Four rules cover most of what matters:

  1. Position beyond 10% either way. The Flag column already says Above or Below. Colour those cells amber and blue.
  2. The median moved 8% or more in a week. Column M, coloured if the absolute value reaches 0.08. This week, only the festival date trips it.
  3. Two or more rivals sold out while we still have rooms. A demand signal. With a column O for rooms you have left, =IF(AND(COUNTIF(C2:G2,"sold out")>=2, O2>0), "Demand signal", "").
  4. Fewer than three rival rates. The date is too thin to read, and the flag says so.

Read the coloured cells first thing on Monday, then ask the assistant to explain them. If you want a nudge to do the capture, set a repeating calendar reminder with the sheet's link in it. In a close week, add a short mid-week check: six lookups on Thursday for an event date, five rivals plus your own rate.

One festival Saturday, tracked for eight weeks

The real value of keeping the same stay dates appears after a few weeks. Here is the festival Saturday from the sheet above, as the rival median and your own rate looked at six points on the way in (illustrative):

Days before the stayRival medianOur rateOur position
89$150$139-7.3%
75$152$139-8.6%
61$158$149-5.7%
47$170$155-8.8%
40$175$159-9.1%
33$194$169-12.9%

Nothing here would have raised an alert until the last row, because the hotel was always about 6% to 9% under the median, inside the 10% band. But the pattern is clear: rivals crept up by a few dollars a week and then added $19 in the last one, while this hotel followed a step behind each time. Paste a table like this into an assistant and ask it to describe the shape in two sentences and to say when the rise began. Then use the answer to plan your own increments earlier next year, and consider a tighter alert band, say 7%, for event dates.

From sheet to decision

The sheet says where you stand. It cannot say what to do, because that depends on your own bookings on hand, which no rival sheet can see. Pair each reading with a check:

What the sheet showsWhat it may meanCheck before acting
Above the median, bookings on hand behind the same point last yearPriced above what the market will payIs the gap on one date or many? Try added value (breakfast, a late checkout) before a deep cut.
Above the median, bookings on hand aheadThe market accepts your priceHold, and consider testing a higher rate on the neighbouring dates.
Below the median, rivals selling outUnderpriced for a demand spikeRaise towards the median in steps, and check minimum-stay rules.
The median jumped and your rate did notAn event or a surge you have not pricedFind the cause, check your own bookings, then raise.
In lineNothing to doLeave it and spend the time elsewhere.
Too few ratesUnreadable dateLook at the comp set, or accept that the date has no signal.

Position is not value. A hotel with better reviews and a better location can sit above the median and be right to; a hotel with a weaker product may need to sit below. Set a floor rate below which you will not sell, whatever the sheet says. Bookings on hand, pick-up and last year's pace belong in a report of their own, which AI for hotel revenue management with weekly reports explains, and whether to let software move rates for you is the question in whether AI dynamic pricing is worth it for a small hotel. To watch rivals' offers and packages beyond rate, tracking competitors' prices and offers with AI covers page monitoring.

Lines not to cross, and a check after eight weeks

  • Do not swap rates with rivals. Reading prices a hotel shows the public is market research. Asking a rival what it will charge, or sharing your plans, can breach competition law. If a tool or a group proposes pooling non-public rate data from competing hotels, take legal advice first.
  • Respect each site's terms. No automated agent on a site that bars one, and no holding or starting reservations to peek at a price.
  • Do not undercut by reflex. A sheet that triggers a price cut every week is training your market to expect cuts. A person sets the rate.

After eight weeks, ask one question: what did we change because of the sheet? Keep a short log with the date, what the sheet showed and the decision, for example "raised the festival Saturday from $169 to $189 after Hotel C sold out and the median rose 11%". If the log is empty, drop to a fortnightly check or trim the set to four dates. If it has several entries, compare those dates' revenue with the same dates last year, not as proof but as a sanity check. A rate sheet that never alters a decision is a hobby, and one that alters the right ones in 45 minutes a week is cheap.

Questions about rate shopping by hand

How do I compare a rival that includes breakfast?

Record the rate as shown and mark it BB, then pick one rule and keep it. Either add your own breakfast price for two to your rate on that row before comparing, or leave the breakfast-included rates out of the median when most of the set sells room only. Write the rule at the top of the sheet so every Monday compares the same thing.

Can I use ChatGPT or an AI browser to collect the rates?

Not on sites whose terms forbid it. Booking.com's terms bar robots, scrapers and automated assistants, including AI assistants that work through your browser, without written permission, and say it may block software that gathers prices. Type the rates in yourself and give the AI only the table.

How often should I check rates?

Weekly is enough for most dates. Add a mid-week check of six or so lookups for an event date that is close, and move to more frequent checks only if you are changing prices that often. If a check never changes a decision, reduce how often you do it.

Should I check booking sites or each hotel's own website?

Pick one and keep it. A hotel's own page shows what a direct guest pays, while a booking site shows what most comparison shoppers see, sometimes with member or app discounts. If you use a booking site, check by hand, signed out, and never mix channels across rivals in the same week, or the median compares different prices.

Further reads

Sources: Booking.com Terms and Conditions (section A15 on automated access, checked October 2026); RateMate home and price pages, rate.shopping, Lighthouse and Cloudbeds product pages (checked October 2026). The rates, dates and results in the sheet are an illustration.

Want a rate sheet your team can run in 40 minutes?

On a 1:1 call we'll choose your comp set, fix the search rules, build the sheet around your own system's exports and decide which decisions it should actually feed.

Book a 1:1 call with me