Expedia Hotel Price Scraper & Monitor - Ratings & Price Drops
Pricing
from $2.50 / 1,000 hotel returneds
Expedia Hotel Price Scraper & Monitor - Ratings & Price Drops
For hotel revenue managers, travel agencies and rate shoppers: Expedia hotel prices for any city and dates, with total price incl. taxes, nightly rate, previous price, rooms left, rating, reviews and deals. Monitoring returns only price drops, rises and new hotels. Export as CSV or Excel.
Pricing
from $2.50 / 1,000 hotel returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Expedia Hotel Price Monitor - Prices, Ratings & Price Drops
An Expedia hotel price scraper and rate monitor for any city and dates. For hotel revenue managers, travel agencies and anyone tracking rates: every hotel Expedia lists for a city, district or landmark on your dates, with the total price including taxes and fees, the nightly rate before taxes, the previous price Expedia shows next to it, the discount, how many rooms are left at that price, guest rating, review count, neighborhood, free cancellation, VIP Access and sponsored flags. In a check on 2026-10-09, 16 of 16 hotel cards on the Expedia page opened in Chrome showed the same name, total price, rating and review count as the rows. Put it on a schedule in monitoring mode and you get back only the hotels whose total price dropped or rose, or that are new to your watch - no diffing on your side.
No Expedia account or API key needed. Export as JSON, CSV or Excel, or push price changes to Slack, email or a sheet with an Apify integration.
What you get
- One row per hotel for each destination, in Expedia's order: name, neighborhood, total price with taxes and fees (
totalPrice), nightly rate before taxes (pricePerNightBeforeTaxes), the previous price Expedia shows struck through (previousPriceShown) and the discount badge, rooms left at this price, guest rating out of 10 and its label, review count, free cancellation, VIP Access, Member Price, the amenities shown on the card, and the hotel's Expedia link for your dates. - Your dates and guests, checked. Every row repeats the dates and adults Expedia actually priced and says whether they match what you asked for (
stayAsRequested). The order Expedia applied is insortApplied. - Dates that move with the schedule.
+30means 30 days after the day the run starts, so a daily schedule always watches the same distance ahead and never falls into the past. - Monitoring mode (
monitoringMode): only hotels whose total price moved by at leastminPriceChangePercentsince the row last returned for them, or that are new to this watch, with the previous total in the same row. - No failed runs for "nothing found". A destination with no hotels, a place Expedia reads differently, a refused request or a spending limit each come back as a free row that says why.
Input
| Field | What it does |
|---|---|
destinations | Places to search, one per entry, as you would type them into Expedia: Paris, Paris, France, Times Square, New York. Each row carries resolvedDestination, the place Expedia actually searched. Required. |
checkInDate | +N for N days after the run date (UTC), or a fixed YYYY-MM-DD. Prefilled with +30. Empty = 30 days from today. Dates before yesterday (UTC) and arrivals more than 330 days ahead are refused with a free row before anything is requested. |
checkOutDate | +N or YYYY-MM-DD. Prefilled with +31. Empty = 1 night after check-in. At most 28 nights. |
adults | Guests in one room, 1-14. Empty = 2. |
sortBy | recommended (empty = this, Expedia's default), lowest-price, highest-price, guest-rating, star-rating or distance - the site's sort menu. |
maxHotels | Hotels to return per destination, 1-1000. Empty = 100. The first page has about 95; more are read 100 at a time. In monitoring mode this is how many hotels are watched. |
includeSponsored | Keep hotels Expedia marks as Ad (flagged sponsored: true). Empty or on = keep; off = skip them, not charged. |
monitoringMode | Return only hotels that are new to this watch or whose total price moved. The first run returns every hotel as new. |
minPriceChangePercent | Monitoring only. Smallest move that counts, in percent of the total last returned. Empty = 2. |
resetMonitoringState | Forget what this search remembered; this monitoring run returns every hotel as new. |
Output
{"status": "ok","searchQuery": "Paris","resolvedDestination": "Paris, France","position": 3,"hotelId": "115063","hotelName": "Hotel Villa Boheme","neighborhood": "Paris","guestRating": 8.8,"guestRatingText": "Excellent","reviewCount": 888,"reviewsAreExternal": false,"totalPrice": 101,"totalPriceText": "$101 total","priceIncludesTaxesAndFees": true,"pricePerNightBeforeTaxes": 81,"previousPriceShown": 111,"discountText": "$10 off","currency": "USD","roomsLeftAtThisPrice": 3,"freeCancellation": false,"vipAccess": false,"memberPriceAvailable": false,"sponsored": false,"amenitiesShown": ["Bar and lounge", "Buffet avail", "AC"],"checkInDate": "2026-11-08","checkOutDate": "2026-11-09","nights": 1,"adults": 2,"stayAsRequested": true,"sortBy": "recommended","sortApplied": "RECOMMENDED","matchedProperties": 508,"expediaUrl": "https://www.expedia.com/Paris-Hotels-Hotel-Villa-Boheme.h115063.Hotel-Information?chkin=2026-11-08&chkout=2026-11-09&rm1=a2","scrapedAt": "2026-10-09T06:37:01.238Z"}
A value Expedia does not show for a hotel is null (for example previousPriceShown when there is no struck-through price, or roomsLeftAtThisPrice when Expedia does not say).
In monitoring mode each row also has change (new, price-down, price-up or price-shown), previousTotalPrice, previousTotalPriceText and previousReturnedAt.
Free rows (never charged)
status | When |
|---|---|
no-results | Expedia answered "0 Properties" / "We don't have any available properties for your search". |
destination-resolved-elsewhere | Expedia searched a place that shares no word with what you wrote (the hotel rows for it still come back). |
blocked | Expedia kept showing its "Bot or Not?" check page. The Actor does not answer it; it says which destinations were not searched. |
unreadable | A page could not be read. Nothing is guessed. |
bad-input | The input could not be used (for example a date in the past). Nothing was requested. |
no-change | Monitoring: nothing new and no price moved since the last returned rows. |
budget-reached | The run reached the maximum total charge you set; the rest was not returned and not charged. |
Monitoring on a schedule
- Run once with
monitoringModeon: every hotel comes back asnewand becomes the starting point. - Schedule the same input (for example daily). Each run returns only hotels whose total price moved by
minPriceChangePercentor more since the row last returned for them, and hotels that are new to the list. - A run with no change returns one free
no-changerow; only a small watch check fee is charged for that run.
Use a fixed order such as lowest-price for a watch. Expedia's recommended order reshuffles between reads, so hotels moving into your top maxHotels come back as new (in a 2026-10-09 check, two runs a minute apart with recommended returned 1 and 2 new hotels out of 30; with lowest-price the second run returned no change).
The memory is kept per destination, check-in and check-out as you wrote them (+30 is one watch that moves with the calendar), adults and sort order. Hotels not returned because of a spending limit are not remembered, so the next run returns them.
How it works and what it costs
Unofficial and not affiliated with Expedia. The Actor opens the Expedia search page the same way a visitor does and reads the hotel list the page itself loads. If Expedia keeps showing a check page, the Actor never answers it and returns a free blocked row that says which destinations were not searched. A destination with 100 hotels usually takes 20-40 seconds.
Pricing
You pay per hotel row returned. Free rows are never charged. In monitoring mode, a run that finds no change is charged one watch check instead of rows.
FAQ
Is the price per night or for the whole stay? totalPrice is the total for the whole stay with taxes and fees, as the big price on the Expedia card. pricePerNightBeforeTaxes is the "nightly" figure above it.
Can I get other currencies? Not yet: expedia.com prices in US dollars. Tell us in the Issues tab if you need another Expedia site.
Why is there no star rating? Expedia's search list does not show it. The star-rating sort is passed to Expedia as its own sort option (the rows show sortApplied: PROPERTY_CLASS).
Thanks for using this Actor
We build these tools for people who run them every day, and we improve them from what users tell us.
- Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
- Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.
If this Actor saved you time, a short review helps other people find it.