Hotels.com Scraper avatar

Hotels.com Scraper

Pricing

from $3.49 / 1,000 hotels

Go to Apify Store
Hotels.com Scraper

Hotels.com Scraper

Scrape Hotels.com rates and compare them with Expedia, Booking.com, Agoda and other booking sites for any city and dates. Get hotel prices, star class, ratings, reviews, amenities, address, phone and GPS.

Pricing

from $3.49 / 1,000 hotels

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Hotels.com Scraper

Hotels.com Scraper gets hotel rates for any city, neighborhood or hotel name and your exact dates, and puts the Hotels.com nightly rate next to Expedia, Booking.com, Agoda, Priceline, the hotel's own website and other booking sites. Every row includes the star class, guest rating, review count, amenities, GPS location and check-in times. Export the data as JSON, CSV or Excel, or pull it through the Apify API.

Search hotels or vacation rentals with your own dates, guests and currency, filter by price, guest rating, star class and free cancellation, then add the Hotels.com rate, every booking site's price, room rates, full address, phone and typical price range for each property.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Use the Apify Actor "parsebird/hotels-com-scraper" to get hotel rates and compare the Hotels.com price with other booking sites. Call it with the apify-client package: client.actor("parsebird/hotels-com-scraper").call(run_input={"location": "Paris", "checkInDate": "2026-11-12", "checkOutDate": "2026-11-14", "currency": "EUR", "maxResults": 20, "enrichDetails": true}), then read items from client.dataset(run["defaultDatasetId"]).iterate_items(). Inputs: location (string: city, neighborhood, landmark or hotel name), propertyTokens (array of propertyToken values from an earlier run), checkInDate and checkOutDate (YYYY-MM-DD; empty = 2-night stay 30 days ahead), adults (integer, default 2), children (integer), childrenAges (array of ages 1-17), currency (ISO code such as USD, EUR, GBP; default USD), countryCode (2-letter market code, default us), language (default en), sortBy (Relevance, Lowest price, Highest rating, Most reviewed), minPrice and maxPrice (per night, in the selected currency), minRating (3.5, 4.0, 4.5), hotelClasses (array of "2","3","4","5"), freeCancellation (boolean), vacationRentals (boolean), enrichDetails (boolean, adds Hotels.com rate and all booking-site prices), maxResults (integer, default 20). Each dataset item is one property with: mode, position, name, type, category, propertyToken, hotelClass, hotelClassStars, link, description, overallRating, reviewsCount, ratings, reviewsBreakdown, locationRating, locationRatings, currency, ratePerNight, ratePerNightLowest, ratePerNightLowestBeforeTaxes, totalRateLowest, totalRateLowestBeforeTaxes, totalTaxesAndFees, deal, images, amenities, nearbyPlaces, gpsLat, gpsLng, checkInTime, checkOutTime, checkInDate, checkOutDate, scrapedAt; with enrichDetails also hotelsComRate, hotelsComTotalRate, hotelsComLink, featuredPrices, allPriceSources, typicalPriceLow, typicalPriceHigh, address, phone, fullDescription, amenitiesDetailed, reviewSources. The OUTPUT record in the default key-value store has the run outcome and counts. API docs: https://apify.com/parsebird/hotels-com-scraper/api. Get an API token at https://console.apify.com/settings/integrations. Pricing is pay per event: one event per hotel, one more per enriched hotel.

What is Hotels.com Scraper?

Hotels.com Scraper is a hotel price scraper and Hotels.com rate checker. You enter a destination and stay dates, and it returns one row per hotel with nightly and total prices, star class, guest rating, number of reviews, amenities, photos and location. Turn on Add Hotels.com rate and competitor prices and each hotel also gets the Hotels.com nightly rate, the price on every other booking site that sells it, room-level rates, the full address and phone number, and the hotel's typical price range for your dates.

The prices come from the Google Hotels price comparison, where Hotels.com lists its rates next to Expedia, Booking.com, Agoda, Priceline, Trip.com and the hotels' own websites. That makes it a practical Hotels.com API alternative for rate shopping: you get the Hotels.com price and its competitors in the same row, with no Hotels.com account.

The easiest way to try it is to press Start with the prefilled search (Paris). Your first 20 hotels arrive in a few seconds.

What can Hotels.com Scraper do?

  • 🏨 Compare the Hotels.com rate with other booking sites. hotelsComRate sits next to featuredPrices and allPriceSources, which list each site's nightly and total price for the same dates and guests.
  • 📅 Price your exact stay. Set check-in and check-out dates (up to 30 nights), adults, children with their ages, and any of 72 currencies.
  • 🔎 Search or look up. Search by city, neighborhood, landmark or hotel name, or pass propertyTokens from an earlier run to refresh the same hotels.
  • 🎚️ Filter like on a booking site. Sort by relevance, lowest price, highest rating or most reviewed, and filter by price per night, guest rating (3.5+, 4.0+, 4.5+), star class (2 to 5 stars) and free cancellation.
  • 🏠 Vacation rentals too. Switch to apartments, houses and villas instead of hotels.
  • 📊 Rich hotel profiles. Star distribution of reviews, review themes (what guests mention positively and negatively), location scores, nearby sights, transit and airports with travel times, photos and check-in times.
  • ⚙️ Built for automation. Schedule daily or weekly rate checks, call the Actor from the Apify API, connect it to Make, Zapier, Google Sheets or Slack with integrations, and export results as JSON, CSV, Excel or HTML.

What data can you extract from Hotels.com?

FieldDescription
name, type, categoryProperty name, hotel or vacation rental, and its business category (hotel, hostel, bed and breakfast…)
hotelClass, hotelClassStarsOfficial star class as text and as a number
overallRating, reviewsCount, ratingsGuest rating out of 5, number of reviews and the count per star
reviewsBreakdownReview themes such as Service, Location or Breakfast, with positive and negative mentions
locationRating, locationRatingsLocation score overall and for things to do, restaurants, transit and airport access
ratePerNightLowest, totalRateLowestLowest nightly rate and lowest total for the stay across booking sites
totalRateLowestBeforeTaxes, totalTaxesAndFeesThe lowest total split into price before taxes and taxes plus fees
dealPrice insight such as 30% less than usual
hotelsComRate, hotelsComTotalRate, hotelsComLinkHotels.com nightly rate, total and booking link (with enrichment)
featuredPrices, allPriceSourcesPrices from every booking site, including the hotel's own website, with room rates and free-cancellation dates where shown (with enrichment)
typicalPriceLow, typicalPriceHighWhat the hotel usually costs per night for similar dates (with enrichment)
address, phone, linkFull street address, phone number and the hotel's website
amenities, amenitiesDetailedAmenity names; with enrichment, the full list by category with notes such as free or extra charge
nearbyPlacesNearby sights, restaurants, transit and airports with taxi, walking or public transport times
gpsLat, gpsLng, checkInTime, checkOutTimeCoordinates and house times
reviewSourcesRatings from other review sites such as Tripadvisor (with enrichment)
propertyToken, googleHotelsUrlStable property ID for later refreshes and the property page link

How to scrape Hotels.com prices

  1. Open Hotels.com Scraper in Apify Console.
  2. In Location, type a city, neighborhood or hotel name, for example Las Vegas Strip.
  3. Set your check-in and check-out dates, guests and currency. Leave the dates empty to price a 2-night stay 30 days from today.
  4. Optional: choose a sort order and filters such as Max price per night, Guest rating or Hotel class.
  5. Turn on Add Hotels.com rate and competitor prices if you want the Hotels.com price and every other site's price for each hotel.
  6. Set Max hotels and click Start.
  7. Download the results as JSON, CSV, Excel or HTML from the Output tab, or read them through the API.

How much does it cost to scrape Hotels.com?

Hotels.com Scraper uses pay-per-event pricing. Compute and proxy costs are included in the event prices, so platform usage is not billed separately.

EventFree planBronzeSilverGold
hotel (per hotel saved)$0.00499$0.00449$0.00399$0.00349
hotel-details (per enriched hotel)$0.01499$0.01399$0.01299$0.01199
Per 1,000 hotels, search only$4.99$4.49$3.99$3.49
Per 1,000 hotels with Hotels.com rate and competitor prices$19.98$18.48$16.98$15.48
  • 20 hotels from a search cost 20 hotel events: $0.10 on the Free plan.
  • 20 hotels with Add Hotels.com rate and competitor prices cost 20 hotel + 20 hotel-details events: $0.40 on the Free plan.
  • Each hotel looked up by propertyTokens is returned with full details and costs one hotel + one hotel-details event.

maxResults caps each search, so it also works as a cost ceiling. You can set a maximum cost per run in the run options; the Actor stops once that limit is reached and reports SPENDING_LIMIT_REACHED in the OUTPUT record.

Input parameters

ParameterTypeRequiredDefaultDescription
locationstringOne of location / propertyTokens—City, neighborhood, landmark or hotel name to search
propertyTokensarrayOne of location / propertyTokens—Exact hotels to look up, from propertyToken in an earlier run (Google Hotels property links also work)
maxResultsintegerNo20Hotels to save from the search; pages hold about 20 hotels
enrichDetailsbooleanNofalseAdd the Hotels.com rate, all booking-site prices, room rates, address, phone, typical price range, full amenities and review sources
checkInDatestringNo30 days from todayCheck-in date, YYYY-MM-DD
checkOutDatestringNocheck-in + 2 nightsCheck-out date, YYYY-MM-DD; stays up to 30 nights
adultsintegerNo2Adult guests
childrenintegerNo0Children; those without an age in childrenAges count as 10 years old
childrenAgesarrayNo—Age of each child, 1 to 17
currencystringNoUSDCurrency for all prices (72 supported)
sortBystringNoRelevanceRelevance, Lowest price, Highest rating or Most reviewed
minPrice, maxPriceintegerNo—Nightly price range in the selected currency
minRatingstringNo—Minimum guest rating: 3.5, 4.0 or 4.5
hotelClassesarrayNo—Star classes to keep: 2, 3, 4, 5
freeCancellationbooleanNofalseOnly hotels with a free-cancellation rate
vacationRentalsbooleanNofalseSearch vacation rentals instead of hotels
countryCodestringNousTwo-letter market code
languagestringNoenLanguage of descriptions, amenities and review themes

Compare booking-site prices for hotels in Paris:

{
"location": "Paris",
"checkInDate": "2026-11-12",
"checkOutDate": "2026-11-14",
"currency": "EUR",
"maxResults": 20,
"enrichDetails": true
}

Four- and five-star hotels on the Las Vegas Strip under $300, cheapest first:

{
"location": "Las Vegas Strip",
"hotelClasses": ["4", "5"],
"maxPrice": 300,
"sortBy": "Lowest price",
"maxResults": 40
}

Output example

A real enriched row from the Paris example above (lists shortened):

{
"mode": "details",
"position": 1,
"name": "Hôtel d'Orsay",
"type": "hotel",
"category": "hotel",
"propertyToken": "ChgI2ajtweSK7ZPpARoLL2cvMXR2M21fZnAQAQ",
"hotelClass": "4-star tourist hotel",
"hotelClassStars": 4,
"overallRating": 4.8,
"reviewsCount": 878,
"reviewsBreakdown": [
{ "name": "Service", "mentions": 185, "positive": 177, "negative": 5 }
],
"locationRating": 4.4,
"currency": "EUR",
"ratePerNight": "€278",
"ratePerNightLowest": 277.56,
"totalRateLowest": 642.57,
"totalRateLowestBeforeTaxes": 555.12,
"totalTaxesAndFees": 87.45,
"hotelsComRate": 296.34,
"hotelsComTotalRate": 592.68,
"featuredPrices": [
{ "source": "Hôtel d'Orsay", "rate": "€296", "extractedRate": 296, "totalRate": "€592", "extractedTotalRate": 592, "official": true },
{ "source": "Expedia.com", "rate": "€296", "extractedRate": 296.34, "totalRate": "€593", "extractedTotalRate": 592.68, "official": false }
],
"allPriceSources": [
{ "source": "goseek.com", "rate": "€278", "extractedRate": 277.56, "official": false },
{ "source": "Super.com", "rate": "€284", "extractedRate": 283.62, "official": false }
],
"typicalPriceLow": 300,
"typicalPriceHigh": 395,
"amenities": ["Wi-Fi", "Smoke-free property", "Credit cards", "Debit cards"],
"nearbyPlaces": [
{
"name": "Musée d'Orsay",
"type": "Top sight",
"transportations": [
{ "type": "Walking", "duration": "2 min" },
{ "type": "Public transport", "duration": "5 min" }
]
}
],
"reviewSources": [
{ "source": "Tripadvisor", "rating": 4.7, "maxRating": 5, "reviewsCount": 1621 }
],
"address": "93 Rue de Lille, 75007 Paris, France",
"phone": "+33 1 47 05 85 54",
"gpsLat": 48.860389,
"gpsLng": 2.323112,
"checkInTime": "2:00 PM",
"checkOutTime": "12:00 PM",
"checkInDate": "2026-11-12",
"checkOutDate": "2026-11-14",
"nights": 2,
"scrapedAt": "2026-10-29T13:03:42.413Z"
}

Rows from a search without enrichment have mode: "search" and the same fields, with the enrichment-only fields set to null. The OUTPUT record in the default key-value store reports the run outcome (SUCCEEDED, NO_RESULTS, SPENDING_LIMIT_REACHED, INVALID_INPUT or FAILED), hotels saved, hotels enriched and events charged.

Use the Hotels.com Scraper API

Start runs and read results from your own code with the Apify API and its clients.

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/hotels-com-scraper").call(run_input={
"location": "Rome",
"checkInDate": "2026-12-03",
"checkOutDate": "2026-12-05",
"currency": "EUR",
"maxResults": 10,
"enrichDetails": True,
})
for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():
print(hotel["name"], hotel["hotelsComRate"], hotel["ratePerNightLowest"])

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/hotels-com-scraper').call({
location: 'Las Vegas Strip',
hotelClasses: ['4', '5'],
maxPrice: 300,
sortBy: 'Lowest price',
maxResults: 40,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((hotel) => console.log(hotel.name, hotel.hotelClassStars, hotel.ratePerNightLowest));

Use cases

  • Rate shopping for hotels: compare your Hotels.com rate with Expedia, Booking.com and your own website, and spot when an online travel agency undercuts you.
  • Revenue management: track competitor hotels' nightly rates for future dates on a daily schedule with propertyTokens.
  • Travel price comparison apps: feed per-site hotel prices, ratings and photos into your own product.
  • Market research: compare price levels, star classes and guest ratings across cities and neighborhoods.
  • Travel planning and AI agents: let an assistant find hotels near a landmark within a budget, with travel times to sights and airports.
  • Lead lists for hospitality services: collect hotel names, websites, phone numbers and addresses for a destination.

How it works

  1. The Actor runs your search on Google Hotels with your dates, guests, currency and filters, and reads about 20 properties per results page.
  2. It moves through results pages until it reaches maxResults or there are no more hotels, and skips hotels already seen on earlier pages.
  3. With Add Hotels.com rate and competitor prices on, it opens each hotel's property page and adds every booking site's price, the Hotels.com rate, room rates, address, phone, typical price range, the full amenity list and third-party review scores.
  4. Each hotel is saved to the dataset and charged as it is saved, so the run stops cleanly when your spending limit is reached.

FAQ

Where do the prices come from? From the Google Hotels price comparison. Hotels.com, Expedia, Booking.com, Agoda, Priceline, the hotels' own websites and other partners list their rates there for your dates. The Actor does not log in to Hotels.com or book anything.

Does every hotel have a Hotels.com rate? No. hotelsComRate is filled only when Hotels.com offers the property for your dates and guests. In our tests, it was present for 13 of 20 hotels in Paris and 18 of 20 in New York. When it's missing, hotelsComRate is null and the other sites are still listed in allPriceSources.

Do prices include taxes? totalRateLowest always includes taxes and fees, and totalRateLowestBeforeTaxes plus totalTaxesAndFees show the split. Nightly rates (ratePerNightLowest, hotelsComRate and the per-site rate) follow the display convention of the market: for example, US prices are shown before taxes, while many European markets include them.

Why are address and phone empty in some rows? Search results don't include them. Turn on Add Hotels.com rate and competitor prices, or look the hotels up by propertyTokens, to get the full address and phone number.

How do I refresh the same hotels later? Copy the propertyToken values from a run into Property tokens and set new dates. Each hotel comes back with full details and current prices. You can also paste Google Hotels property links.

How many hotels can I get per search? Large cities return thousands. Paris reported about 15,000 properties, and a test run saved 300 hotels in Rome in under 2 minutes. Narrow filters or small towns return fewer.

Some hotels have no price. Why? They are sold out or not bookable for your dates and guests, so ratePerNightLowest and the totals are null. Change the dates or guests to check other availability.

Which booking sites appear? It depends on the hotel and the market. In US runs we saw Hotels.com, Expedia, Booking.com, Priceline, Orbitz, Travelocity, CheapTickets, Agoda, Trip.com, Vio.com and the hotels' own websites, among others.

Can I schedule recurring rate checks? Yes. Create a schedule in Apify Console to run the Actor every day or week, and use integrations to send new rows to Google Sheets, Slack or your own webhook.

Can I use it through the API or with AI agents? Yes. Use the API tab for endpoints and code samples, or connect the Actor to AI agents through the Apify MCP server.

Something doesn't work. What should I do? Open an issue in the Issues tab with your run link. We read every report.

Hotels.com Scraper collects publicly available hotel information: prices, ratings, amenities and business contact details that anyone can see without logging in. It does not collect personal data about guests. Scraping public data is generally legal, but you should check the laws that apply to you and how you use the data, and avoid collecting personal data without a legitimate reason. If in doubt, ask a lawyer. Read more in Apify's blog post on whether web scraping is legal.

Other travel scrapers

ActorWhat it scrapes
Expedia Reviews ScraperGuest reviews from Expedia hotel listings
HRS Hotel Reviews ScraperGuest reviews and rating breakdowns from HRS.com
HolidayCheck.de Hotels ScraperHotels, package prices, scores and review counts from HolidayCheck.de
Airbnb Scraper & APIAirbnb listings with prices and ratings
Airbnb Availability Calendar ScraperDay-by-day Airbnb availability and nightly prices
Airbnb Reviews ScraperAirbnb guest reviews
Kayak Car Rental ScraperCar rental offers and prices from Kayak
TheFork ScraperRestaurants, menus and reviews from TheFork