Expedia Hotels Scraper — Prices, Ratings & Reviews avatar

Expedia Hotels Scraper — Prices, Ratings & Reviews

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Expedia Hotels Scraper — Prices, Ratings & Reviews

Expedia Hotels Scraper — Prices, Ratings & Reviews

Scrape hotels from Expedia by destination and dates: name, nightly price, guest rating, reviews count, location, deals and link. Optionally attach real guest reviews per hotel (text, score, date, reviewer, manager replies). Export JSON/CSV for rate shopping, price intelligence and review analysis.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Extract hotel listings and prices from Expedia as clean, structured JSON. Give it a destination and dates and get the full results list — hotel name, nightly price, guest rating, review count, location, deal badges and link — for every property, across as many cities as you like.

Built for travel price intelligence, hotel revenue managers, OTAs, market researchers and data teams who need fresh Expedia hotel data at scale, without writing or maintaining a scraper.


Why this scraper

  • 🏨 The whole results list — not just the first few sponsored hotels. It renders the page and loads every property Expedia shows for your search.
  • 💷 Live nightly prices for your exact dates and occupancy — the core of any rate-shopping or price-intelligence workflow.
  • Ratings + real guest reviews — the numeric score, rating label, review count, and (optionally) the actual review text per hotel: score, date, reviewer, sentiment themes and manager responses.
  • 🌍 Many cities at once — pass a list of destinations and scrape them all in one run.
  • 🧹 Clean, typed, de-duplicated output, ready for spreadsheets, dashboards and databases.
  • 🛟 Reliable — runs a real browser over residential proxy to handle Expedia's anti-bot and lazy loading.

What you can do with it

💷 Rate shopping & price intelligence

Track nightly prices for your hotels and your competitors across dates and cities. Spot underpricing and overpricing, monitor how rates move with demand, and feed live data into your revenue-management models.

🏨 Hotel benchmarking

Compare your property against the local set on price, guest rating and review volume — and watch how that comparison changes over time.

📊 Travel market research

Analyse supply and pricing across destinations: average nightly rates, rating distribution and deal activity by city and season.

🧳 OTA & metasearch monitoring

Monitor how hotels are presented and priced on Expedia, track deal badges and sponsored placements, and keep your own listings competitive.

🔁 Dashboards & data feeds

Feed Expedia hotel data into your own tool, BI dashboard or data warehouse with a stable schema, and schedule daily runs to keep it fresh.


Features

  • 🔎 Search by destination + dates, adults, rooms and sort order.
  • 🔗 Start-URL mode — paste Expedia Hotel-Search URLs with your own filters.
  • 📜 Full list loading — scrolls and loads the complete results set.
  • Rich fields — name, price, guest rating, rating label, review count, location, deal, sponsored flag, image and link.
  • 💬 Optional guest reviews — turn on Scrape guest reviews to attach real review text per hotel: score, date, reviewer name, "Liked" sentiment themes, verified flag and hotel manager responses.
  • 🌍 Multi-destination in one run, de-duplicated per search.
  • ⚙️ Configurable — cap hotels per search, set concurrency, choose your proxy.
  • 🌐 Proxy-ready — US residential proxy recommended.
  • 📤 Export anywhere — JSON, CSV, Excel, HTML or API, with one-click integrations.

Input

FieldTypeDescription
destinationsarrayCities/places to search, e.g. New York, Paris, London.
checkInstringCheck-in date (YYYY-MM-DD).
checkOutstringCheck-out date (YYYY-MM-DD).
adultsintegerNumber of adults.
roomsintegerNumber of rooms.
sortByselectRecommended, price, guest rating or distance.
startUrlsarrayExpedia Hotel-Search URLs with your own filters.
maxItemsPerSearchintegerCap hotels per destination.
scrapeReviewsbooleanAlso fetch real guest review text per hotel.
maxReviewsPerHotelintegerHow many recent reviews to fetch per hotel.
proxyConfigurationobjectProxy settings. US residential strongly recommended.
maxConcurrencyintegerParallel browser pages.

Example input

{
"destinations": ["New York", "Miami"],
"checkIn": "2026-08-01",
"checkOut": "2026-08-03",
"adults": 2,
"rooms": 1,
"sortBy": "RECOMMENDED",
"maxItemsPerSearch": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Output

Each hotel is one dataset record:

{
"hotelId": "h3229",
"name": "Kixby",
"url": "https://www.expedia.com/New-York-Hotels-Kixby.h3229.Hotel-Information",
"priceNightly": 130,
"priceCurrency": "USD",
"allPrices": [130, 227, 728],
"rating": 9.4,
"ratingLabel": "Exceptional",
"reviewCount": 1922,
"location": "New York",
"dealBadge": "Summer Savings",
"isSponsored": false,
"image": "https://...",
"searchDestination": "New York",
"checkIn": "2026-08-01",
"checkOut": "2026-08-03",
"rank": 1,
"scrapedAt": "2026-06-20T14:00:00.000Z",
"reviewsScraped": 2,
"reviews": [
{
"reviewId": "6a2ebd506f963f0b4244d2a1",
"score": 9,
"scoreText": "9/10 Wonderful",
"superlative": "Wonderful",
"title": "Great stay in midtown",
"text": "This hotel is in a great location and my room was very nice...",
"date": "Jun 14, 2026",
"verified": true,
"author": "Victor",
"themes": ["Liked: Cleanliness, staff & service, amenities"],
"managerResponse": null
}
]
}

Set scrapeReviews: true to attach the reviews array (and reviewsScraped count) to every hotel. Leave it off for the fastest, cheapest price-only runs.

Field reference

FieldDescription
hotelIdExpedia hotel ID (stable — safe for deduplication).
nameHotel name.
urlHotel page URL.
priceNightlyLead nightly price for your dates.
priceCurrencyPrice currency.
allPricesAll price figures shown on the card (nightly, total, strikethrough).
ratingGuest rating out of 10.
ratingLabelRating word (Exceptional, Excellent, Very Good…).
reviewCountNumber of guest reviews.
locationLocation / neighborhood.
dealBadgeDeal / promotion badge, if any.
isSponsoredWhether the listing is a sponsored (Ad) placement.
imageHotel image URL.
searchDestination / checkIn / checkOutThe search that produced the record.
rankPosition in the results.
scrapedAtISO scrape timestamp.

Tip: prices reflect the exact checkIn/checkOut and occupancy you set — change them to rate-shop across stay lengths and party sizes.


How to use

  1. Set destinations, checkIn, checkOut and occupancy (or paste startUrls).
  2. Keep the US residential proxy suggested in the input.
  3. Click Start and watch hotels stream into the dataset.
  4. Export as JSON, CSV, Excel, HTML or via API, or connect to Google Sheets, Make, Zapier, Slack and more.

Run on a schedule

Use the platform Scheduler to run the same searches daily and build a price history per hotel and city — the foundation of any rate-shopping or revenue-management workflow.

Run it via API

Start runs and fetch results programmatically through the standard platform API and client libraries, and wire Expedia data straight into your own systems.


Tips for best results

  • Use US residential proxies — Expedia blocks datacenter IPs; residential is the most reliable.
  • Use valid future dates in YYYY-MM-DD — prices are date-specific.
  • One destination per search keeps results focused; pass several in destinations to cover multiple cities.
  • Cap with maxItemsPerSearch to control volume and cost.
  • Deduplicate on hotelId when merging runs over time.
  • Schedule it to build a historical price dataset.

Frequently asked questions

Which Expedia site does it scrape? The main Expedia hotel search (expedia.com).

Do I get prices for my exact dates? Yes — nightly prices reflect the checkIn, checkOut, adults and rooms you set.

Do I get the full list or just a few hotels? The full results list — the Actor loads all properties Expedia shows for your search, not only the sponsored ones at the top.

Do I get guest ratings and reviews? Yes — every hotel carries the numeric rating, rating label and review count. Turn on Scrape guest reviews to also get the actual review text per hotel: score, date, reviewer name, "Liked" sentiment themes, a verified flag and hotel manager responses.

Will scraping reviews slow down my run? It adds a little time per hotel (one lightweight request per page of reviews), so leave it off for fast price-only runs and on when you need review content. Use maxReviewsPerHotel to control how many you pull.

Can I use my own filters (price, stars, amenities)? Yes — apply filters on Expedia in your browser, copy the URL, and paste it into startUrls.

How many cities can I scrape? As many as you like — pass them all in destinations and they're scraped in one run.

How fresh is the data? It is scraped live at run time. Schedule the Actor to keep prices up to date.

Is a proxy required? A US residential proxy is strongly recommended (and pre-filled) for reliable results.

Do I need to write code? No. Set the inputs, click Start and export. Developers can also drive everything via the API.


Troubleshooting

  • No hotels found? Check the destination spelling and that dates are valid future YYYY-MM-DD dates, and make sure a US residential proxy is enabled.
  • Fewer hotels than expected? Raise maxItemsPerSearch, or broaden your destination/dates.
  • Run is slow or blocked? Lower maxConcurrency, keep residential proxy on, and avoid extremely broad searches.

Changelog

0.1 — Initial release (June 2026)

  • Search Expedia hotels by destination and dates (adults, rooms, sort), or via Start URLs.
  • Loads the full results list in a real browser and parses every property.
  • Fields: name, nightly price (+ all prices), guest rating and label, review count, location, deal badge, sponsored flag, image and link.
  • Optional guest reviews — attach real review text per hotel (score, date, reviewer, sentiment themes, verified flag, manager responses) via scrapeReviews.
  • Multi-destination per run, de-duplication by hotel ID, and graceful handling of anti-bot and lazy loading.