Hotels.com Scraper
Pricing
from $5.00 / 1,000 property scrapeds
Hotels.com Scraper
Scrape Hotels.com nightly rates and full hotel data by destination or property, with per-site price comparison, ratings and amenities. Works with Apify MCP and the API.
Pricing
from $5.00 / 1,000 property scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
7
Monthly active users
2 days ago
Last modified
Categories
Share
What is Hotels.com Scraper?
Hotels.com Scraper returns one row per hotel for any destination or hotel name, with nightly and total rates for your dates, star class, guest rating, review count, amenities, photos, GPS location, check-in times and review breakdowns. Turn on enrichDetails to add the live Hotels.com nightly rate for each property next to Expedia, Booking.com and other booking sites, plus the full address, phone and typical price range. Revenue managers, travel researchers, price-comparison builders and AI agents use it to compare hotel rates across booking sites, with no Hotels.com account.
Why travel teams use it for rate research
- The Hotels.com rate next to its competitors.
hotelsComRateandfeaturedPricesshow what Hotels.com, Expedia, Booking.com and others charge for the same room and dates. - Real stay pricing. Rates are quoted for your check-in and check-out dates, guests and currency, before and after taxes.
- Rich hotel profiles. Star class, rating, review count, amenities, photos, nearby places and review themes in every row.
- Search or look up. Search a city or neighborhood, or pass
propertyTokensfrom an earlier run to refresh exact hotels. - Pay per property. One charge per hotel, and one more only for hotels you enrich with competitor prices.
How to use it
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 in Las Vegas under $300, cheapest first:
{"location": "Las Vegas Strip","hotelClasses": ["4", "5"],"maxPrice": 300,"sortBy": "Lowest price","maxResults": 40}
| Input | What it controls |
|---|---|
location | City, neighborhood or hotel name to search |
propertyTokens | Exact hotels to refresh, from propertyToken in an earlier run |
checkInDate, checkOutDate | Stay dates; blank uses a stay about a month ahead |
adults, children, childrenAges | Guests per room |
currency, countryCode, language | Price currency and market |
sortBy, minRating, hotelClasses, minPrice, maxPrice | Search filters and order |
vacationRentals, freeCancellation | Rentals instead of hotels, or free-cancellation stays only |
enrichDetails | Add the Hotels.com rate, competitor prices, address and phone per hotel |
maxResults | Hotels to return, 20 per page (default 20) |
Want guest reviews for the hotels you found? Continue with Booking Reviews Scraper linked below.
Output: hotel data you receive
A real enriched row for a Paris hotel (lists shortened):
{"mode": "details","name": "Novotel Paris Est","propertyToken": "ChgI4pOK_6G_jNyKARoLL2cvMXg1cXMyYmIQAQ","hotelClassStars": 4,"overallRating": 3.6,"reviewsCount": 6575,"currency": "EUR","ratePerNightLowest": 67,"totalRateLowest": 134,"hotelsComRate": 106,"featuredPrices": [{ "source": "Hotels.com", "rate": "€106", "extractedRate": 106, "numGuests": 2 },{ "source": "Expedia.com", "rate": "€106", "extractedRate": 106, "numGuests": 2 }],"amenities": ["Wi-Fi", "Restaurant", "Bar"],"address": "1 Av. de la République, 93170 Bagnolet, France","phone": "+33 1 49 93 63 00","typicalPriceLow": 68,"typicalPriceHigh": 91,"checkInTime": "2:00 PM","checkOutTime": "12:00 PM","gpsLat": 48.8633307,"gpsLng": 2.4161664,"checkInDate": "2026-10-31","checkOutDate": "2026-11-02","scrapedAt": "2026-10-01T05:39:46.052Z"}
| Field | What it contains |
|---|---|
name, type, hotelClassStars, link | The property, its type, star class and website |
overallRating, reviewsCount, locationRating, ratings, reviewsBreakdown | Guest scores, star distribution and review themes |
ratePerNightLowest, totalRateLowest and their BeforeTaxes versions | Lowest nightly and total stay price across booking sites |
hotelsComRate, featuredPrices, allPriceSources | Hotels.com rate, other sites' prices and every site listing the hotel (with enrichDetails) |
address, phone, description, typicalPriceLow, typicalPriceHigh | Contact details, summary and usual price range (with enrichDetails) |
amenities, images, nearbyPlaces | Facilities, photos and travel times to landmarks |
gpsLat, gpsLng, checkInTime, checkOutTime | Location and house times |
propertyToken, checkInDate, checkOutDate, scrapedAt | Stable ID for refreshes, stay dates and collection time |
OUTPUT in the default key-value store reports the run outcome, hotels saved and events charged.
Example workflow: a weekly rate check for a hotel group
A revenue manager watches 15 competitor hotels in Lisbon. A first search for Lisbon runs with enrichDetails on and saves the propertyToken of each competitor. A weekly task then passes those tokens with next month's dates and compares hotelsComRate against Booking.com and Expedia in featuredPrices. When a competitor drops below their own rate, they review the gap. Then they pull guest feedback for the same hotels with Booking Reviews Scraper.
Pricing
This Actor uses Pay per event. Apify platform usage is included in the event price. You pay one event per hotel saved, one extra event per hotel enriched with enrichDetails or looked up by propertyTokens, and a start event per run. The live Pricing tab on this page shows the current prices.
- 20 hotels without enrichment = 20 property events.
- 20 hotels with
enrichDetails= 20 property events + 20 detail events. maxResultscaps each search, so it doubles as a cost ceiling.
Free plan limit: Apify free-plan accounts can make 10 search requests per rolling 30 days across this developer's search Actors. Each results page and each enrichDetails or propertyTokens lookup counts as one request. This limit is set by the Actor developer, not Apify. When it is reached, the run stops cleanly, keeps every hotel already found, and the status message shows when the next free request becomes available. Paid Apify plans have no such limit.
Hotel research with AI agents (MCP)
Connect this Actor to an AI agent through Apify MCP and ask in plain language:
Find five 4-star hotels near the Eiffel Tower for 12–14 November and show the Hotels.com price next to Booking.com and Expedia for each.
Agent checklist:
- Put the place in
locationand setcheckInDate,checkOutDateandcurrency. - Set
enrichDetails: truewhen the user wants per-site prices or contact details. - Keep
maxResultsclose to the request; read rows withget-dataset-items. - Compare
hotelsComRatewith the other entries infeaturedPrices.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~hotels-com-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"location": "Rome", "checkInDate": "2026-12-03", "checkOutDate": "2026-12-05", "currency": "EUR", "maxResults": 10, "enrichDetails": true}'
Related travel tools from the same developer
| Your next step | Use | Why |
|---|---|---|
| When you then want guest reviews | Booking Reviews Scraper | Booking.com reviews with scores and dates |
| When you research Booking.com listings directly | Booking Scraper PRO | Booking.com prices, stars and review scores |
| When you compare holiday rentals | Airbnb Scraper | Airbnb listings with prices and ratings |
| When you want traveler opinions and rankings | TripAdvisor Scraper | Hotels, ratings and reviews from TripAdvisor |
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| Comparing booking sites | Turn on enrichDetails | Hotels.com rate next to other sites for every hotel |
| Tracking the same hotels over time | Save propertyToken values and pass them in propertyTokens | A fresh rate row per hotel on each run |
| Families or groups | Set adults, children and childrenAges | Rates for the real room occupancy |
| A specific budget | Use minPrice, maxPrice and sortBy: "Lowest price" | Hotels within budget, cheapest first |
Builder's note
I found that people looking up Hotels.com prices almost always want to know how that rate compares, so enriched rows put hotelsComRate beside every other booking site in featuredPrices. I learned that rate tracking works best on exact properties, so each row keeps a propertyToken you can pass back in for the next check.
FAQ
Where do the rates come from?
From Google Hotels price listings, where Hotels.com, Expedia, Booking.com and other sites publish their rates for each hotel. Search rows show the lowest rate across sites; enriched rows add each site's own price.
Do I need a Hotels.com account?
No. The Actor needs no login, cookies or API key.
Why is hotelsComRate empty for some hotels?
Hotels.com publishes a rate for most hotels, though not every property or date. When it is missing, featuredPrices still lists the other sites' prices.
Can I search vacation rentals?
Yes. Set vacationRentals: true to get apartments and homes instead of hotels.
Which currencies work?
Any three-letter currency code, such as USD, EUR, GBP or JPY.
Responsible use
This Actor collects publicly listed hotel information and prices. Use it for travel research and price comparison and follow the terms of the sites involved. Read Apify's guide on whether web scraping is legal for more context. Hotels.com is a trademark of Expedia, Inc. This independent Actor is not affiliated with, associated with, or endorsed by Hotels.com, Expedia or Google. For questions or bugs, open a ticket in the Issues tab.