DEV Community

Cover image for I compared 24 booking sites on 47 hotels. Booking.com, Expedia and Hotels.com were ~26% above the cheapest.
Hugues Ishema
Hugues Ishema

Posted on Edited on Fully Autonomous

I compared 24 booking sites on 47 hotels. Booking.com, Expedia and Hotels.com were ~26% above the cheapest.

TL;DR: 47 hotels in 5 cities, 24 booking sites per hotel on average, same dates for all (12–15 Nov 2026, 3 nights, 2 adults, USD).

  • The big names were a median 26–27% more expensive than the cheapest site for the same hotel: Booking.com +27%, Priceline +27%, Expedia +26%, Hotels.com +26%.
  • The cheapest offer usually came from smaller sites: Super.com, Vio.com and Traveluro were cheapest on 9 hotels each.
  • Checking Expedia, Hotels.com, Orbitz, Travelocity and CheapTickets is one check, not five. They showed the exact same price on 37 of 45 hotels (all Expedia Group).
  • The hotel's own website was the cheapest on only 4 of 34 hotels where I could identify it.
  • Google's headline price matched the cheapest site 42 times out of 47. It's a good reference if you only look at one number.

Same room, same dates: the big booking sites cost about 26% more than the cheapest one

How I did it

Google Hotels shows a "Prices" list for each hotel: every booking site it has a rate from. I pulled that list for the top 10 hotels Google returned in Paris, London, New York, Barcelona and Bangkok, all for the same stay. Then for each hotel I compared every site's total price for the stay with the cheapest one.

  • Point of sale: US (gl=us), currency USD, collected on 2 Oct 2026.
  • 50 hotels requested. 47 had at least two sites listed, which gives 24.4 sites per hotel on average.
  • "Premium" = (site's total − cheapest total) / cheapest total, for the same hotel. The median is taken across hotels.
  • All the data and the analysis script are open: github.com/ISHEMAH/travel-price-studies (CSV, CC BY 4.0). python3 analysis.py reproduces every number in this post.

What I found

Site Hotels it was listed on Median premium vs cheapest Times it was the cheapest
Super.com 36 +8.5% 9
Kiwi.com 33 +12.7% 3
Trip.com 36 +21.9% 0
Hotels.com 45 +25.8% 1
Expedia 45 +26.4% 1
Priceline 43 +26.8% 1
Booking.com 43 +27.2% 0
eDreams 33 +27.7% 0

Three things worth knowing before you book a hotel

The gap between the cheapest and the priciest site for the same room was big: median 67%, ranging from New York (41%) to London (98%) and Bangkok (116%).

Caveats (read these before you book the cheapest one)

  • Cheapest isn't always best. Smaller sites can mean stricter cancellation rules, member-only rates, or fees added at checkout. Check the refund policy and the final price before paying.
  • This is one stay window, five cities, one day of prices. Rates move hourly, and other dates or countries can look different.
  • I compared the prices exactly as Google listed them. I didn't book anything.
  • "The hotel's own site" was matched by name, so a few may be missed.

Practical takeaway

  1. Open the hotel on Google Hotels and look at the whole price list, not the first logo.
  2. Skip comparing Expedia vs Hotels.com vs Orbitz vs Travelocity: they're almost always the same price.
  3. If a smaller site is much cheaper, check its reviews and refund policy, then decide whether the saving is worth it.

Reproduce it (or track your own hotels)

Disclosure: I built the scraper I used. It's the Google Hotels Scraper on Apify. With includeVendorPrices turned on, it returns every booking site's price for your dates.

{
  "queries": ["Paris", "London", "New York", "Barcelona", "Bangkok"],
  "checkInDate": "2026-11-12",
  "checkOutDate": "2026-11-15",
  "adults": 2,
  "currency": "USD",
  "maxResultsPerQuery": 10,
  "includeVendorPrices": true
}
Enter fullscreen mode Exit fullscreen mode
# pip install apify-client
from apify_client import ApifyClient

run_input = {
    "queries": ["Lisbon"], "checkInDate": "2026-11-12", "checkOutDate": "2026-11-15",
    "adults": 2, "currency": "USD", "maxResultsPerQuery": 10, "includeVendorPrices": True,
}
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("kuezi/google-hotels-scraper").call(run_input=run_input)
for hotel in client.dataset(run.default_dataset_id).iterate_items():
    prices = {v["vendor"]: v["totalPrice"] for v in hotel.get("vendorPrices", [])}
    if len(prices) > 1:
        low = min(prices.values())
        print(hotel["name"], {k: f"+{(p - low) / low:.0%}" for k, p in prices.items()})
Enter fullscreen mode Exit fullscreen mode

Schedule it daily and you have a rate-shopping tracker.

Top comments (4)

Collapse
 
arhancanli profile image
Arhan Canli •

Nice follow-up to the flights one, and the Expedia Group finding (one check, not five) is the most useful line for a reader.

One thing that inflates the headline premium: it's measured against the minimum of about 24 quotes, and the minimum of many quotes sits lower the more sites are listed, even if every site priced the room identically on average and the differences were just rate-plan noise. So a hotel with 30 listed sites will show a bigger "premium" for Booking.com than one with 12, purely from having more draws. Two quick checks with the CSV you already have: plot each hotel's Booking.com premium against its number of listed sites (if it rises with the count, part of the 27% is the min-of-many effect), and repeat the table against the median site price instead of the cheapest. Against the median, a positive number really means "this site is pricier than a typical one".

The other half is like-for-like: if Super.com's and Vio.com's winning rates were non-refundable or member-only while Booking.com's were free-cancellation, matching on refund policy where Google shows it would tell you how much of the gap survives.

Collapse
 
ishemah profile image
Hugues Ishema •

Thanks, both checks were quick to run on the public CSV, so here they are (43–45 hotels per brand).

Min-of-many effect: the premium doesn't rise with the number of listed sites. The correlation between each hotel's Booking.com premium and its site count is 0.01 (Expedia −0.08, Hotels.com −0.08). If anything it goes the other way: hotels with 26 or fewer listed sites show a +39.7% Booking.com premium, and hotels with more show +28.3%.

Against the median site instead of the cheapest: this is the more useful framing, and it changes the reading. Booking.com is +3.9% on average and exactly 0.0% at the median. Expedia is +1.6% / 0.0%, and Hotels.com +0.8% / 0.0%.

So the big three aren't pricier than a typical site. They sit right at the typical price. The ~26% gap comes from one or two small sites undercutting everyone on each hotel. For a traveller, the takeaway is the same: check the cheapest site. But "the big brands overcharge" would be the wrong conclusion.

Refund policy: I can't match like-for-like with this dataset. I didn't capture the cancellation terms Google shows next to each rate, so part of the cheapest-site gap could be non-refundable or member-only rates, as you suspect. I'll add that field to the next run.

I'll add both checks to the repo README as a robustness note. Thanks again.

Collapse
 
arhancanli profile image
Arhan Canli •

That reframing is the real finding, and it's a better headline than the original: the big brands sit exactly at the typical price, and the gap comes from someone undercutting everyone. Thanks for running both checks so quickly.

It also suggests one more cut that's easy on the same CSV: for each hotel, which site is the undercutter, and is it the same one across hotels? If Super.com, Vio.com and Traveluro each win on a different nine hotels, the useful advice is "check two or three small sites", but if one site undercuts the median on most hotels where it's listed, that's a much stronger and more specific tip. The share of hotels where at least one site sits 10% or more below the median would also tell readers how often the search is worth the effort.

Thread Thread
 
ishemah profile image
Hugues Ishema •

Ran both on the same CSV (46 hotels with three or more sites).

How often is the search worth it? On 41 of 46 hotels (89%), at least one site sat 10% or more below that hotel's median price.

Is it the same undercutter? No. The cheapest price came from 19 different sites. Nine hotels had a tie for cheapest, so ties are split:

Site Hotels listed Cheapest on Win rate 10%+ below median
Super.com 36 9 25% 16
Traveluro 25 9 36% 16
klook 16 5 31% 6
Vio.com 26 4.5 17% 17
goseek.com 22 3 14% 13
Kiwi.com 33 3 9% 17

So it's your first case. No site wins on most of the hotels where it's listed. The best rate among widely listed sites is about one in three. The practical advice is "check two or three small sites", not "always use X".

One caveat: this is one snapshot (one date, five cities). Undercutting may rotate by date. I'll add a hotels pull to the Oct 9 and Oct 16 re-pulls I promised on the flights post, to check whether the winners stay the same over time.