Expedia Hotels Scraper avatar

Expedia Hotels Scraper

Pricing

from $1.49 / 1,000 results

Go to Apify Store
Expedia Hotels Scraper

Expedia Hotels Scraper

Extract hotel data from Expedia instantly. Scrape prices, reviews, ratings, availability & amenities across destinations. Perfect for travel research, price monitoring & market analysis. Get structured hotel information for comparison & analytics. No coding required.

Pricing

from $1.49 / 1,000 results

Rating

5.0

(5)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

5

Bookmarked

83

Total users

15

Monthly active users

1.3 hours

Issues response

11 days ago

Last modified

Share

What does Expedia Hotels Listings Scraper do?

This Actor extracts structured hotel listing data from Expedia Hotel-Search result pages. Paste an Expedia destination or Hotel-Search URL, and the Actor collects hotel names, nightly and total prices, guest ratings, star ratings, review counts, cancellation signals, property URLs, and search context. The output works for price monitoring, competitive benchmarking, travel dataset building, and offer intelligence workflows.

Why use Expedia Hotels Listings Scraper?

  • Structured hotel data without manual work - Skip copy-pasting Expedia search results. Get clean, deduplicated records with hotel IDs, pricing, ratings, and links in one run.
  • Handles messy URLs automatically - Paste any Expedia Hotel-Search or destination URL. The Actor normalizes wrapper characters, tracking junk, missing dates, stale check-in dates, and missing occupancy defaults before the first request.
  • Resilient Expedia session handling - If Expedia challenges the session or returns rate-limit responses, the Actor retries with rotated browser profiles and proxy strategies before failing.
  • Automation-ready output - Export results to JSON, CSV, Excel, or XML. Connect datasets to Google Sheets, Airtable, Looker Studio, or downstream API pipelines.

What data can you extract from Expedia?

FieldDescription
hotel_nameProperty name from the search card
cityCity or area label shown on the listing
star_ratingOfficial hotel star rating
guest_ratingGuest score out of 10
review_countTotal number of guest reviews
review_labelRating label such as "Very Good" or "Wonderful"
nightly_priceNightly price text from the listing
total_priceTotal stay price for the selected dates
strikeout_pricePrevious price shown as strikethrough when available
free_cancellationWhether the listing offers free cancellation
member_price_availableWhether Expedia member pricing is available
vacation_rentalWhether the listing is a vacation rental
property_urlDirect link to the Expedia hotel details page
image_urlPrimary listing image URL
check_inCheck-in date used for the search
check_outCheck-out date used for the search
adultsNumber of adult travelers
childrenChild ages when applicable
sortSort mode applied to the search
search_idExpedia search session identifier
scraped_atISO timestamp when the record was captured

How to use Expedia Hotels Listings Scraper

  1. Open the Actor on Apify Store.
  2. Paste an Expedia Hotel-Search URL or Expedia destination page URL into the startUrl field.
  3. Set the maximum number of listings to save and optional page load limit.
  4. Run the Actor.
  5. Download the dataset or connect it to an integration.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringYes-Expedia Hotel-Search or Expedia destination URL. Messy, partial, or stale URLs are normalized automatically. Missing common search params such as dates, adults, and sort are healed at runtime.
resultsWantedIntegerNo20Maximum number of hotel listings to save.
maxPagesIntegerNo8Maximum result-load rounds to attempt while scrolling or loading more results.
proxyConfigurationObjectNoApify Residential proxyProxy settings for stable extraction. Residential routing is recommended for Expedia.

Output Data

FieldTypeDescription
hotel_idStringExpedia hotel ID
hotel_nameStringProperty name from search card
cityStringCity or area label
star_ratingNumberOfficial hotel star rating
guest_ratingNumberGuest score out of 10
guest_rating_out_of_fiveNumberGuest score out of 5 from analytics payload
review_countIntegerTotal number of guest reviews
review_labelStringRating label such as "Very Good" or "Wonderful"
nightly_priceStringNightly price text
total_priceStringTotal stay price text
strikeout_priceStringPrevious price text when available
taxes_and_fees_noteStringTaxes and fees message
free_cancellationBooleanWhether free cancellation is indicated
member_price_availableBooleanWhether member pricing is available
vacation_rentalBooleanWhether the listing is a vacation rental
image_urlStringPrimary listing image URL
property_urlStringExpedia hotel details URL
region_idStringSearch region ID
region_nameStringSearch region name
check_inStringCheck-in date in YYYY-MM-DD format
check_outStringCheck-out date in YYYY-MM-DD format
adultsIntegerNumber of adult travelers
childrenArrayChild ages when applicable
sortStringSort mode used for the search
search_idStringExpedia search session identifier
source_urlStringGraphQL endpoint URL used for extraction
operation_nameStringGraphQL operation name used
scraped_atStringISO timestamp when the record was captured

Usage Examples

Basic Run

Collect the first set of hotel listings from an Expedia destination:

{
"startUrl": "https://www.expedia.com/Hotel-Search?regionId=6139104&destination=London%2C%20United%20Kingdom%20%28LON-All%20Airports%29",
"resultsWanted": 20,
"maxPages": 8
}

Messy URL Recovery

The Actor strips wrapper characters, tracking junk, and stale URL fragments before the first request. It also injects fresh future dates and sane occupancy defaults when they are missing:

{
"startUrl": "<https://www.expedia.com/Hotel-Search?destination=London%2C%20United%20Kingdom%20%28LON-All%20Airports%29&regionId=6139104&sort=RECOMMENDED>",
"resultsWanted": 40,
"maxPages": 10
}

Higher Volume Collection

Increase the result limit and page depth for destinations with more inventory:

{
"startUrl": "https://www.expedia.com/Hotel-Search?regionId=6139104&destination=London%2C%20United%20Kingdom%20%28LON-All%20Airports%29",
"resultsWanted": 100,
"maxPages": 15
}

Proxy Optimized Run

Residential proxies improve reliability on Expedia result pages:

{
"startUrl": "https://www.expedia.com/Hotel-Search?regionId=6139104&destination=London%2C%20United%20Kingdom%20%28LON-All%20Airports%29",
"resultsWanted": 30,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Sample Output

{
"hotel_id": "42297074",
"hotel_name": "Zedwell Piccadilly Circus",
"city": "West End",
"star_rating": 3,
"guest_rating": 7.6,
"guest_rating_out_of_five": 3.8,
"review_count": 5892,
"review_label": "Good",
"nightly_price": "$142 nightly",
"total_price": "$171",
"strikeout_price": "$201",
"taxes_and_fees_note": "Total with taxes and fees",
"free_cancellation": false,
"vacation_rental": false,
"image_url": "https://images.trvl-media.com/lodging/43000000/42300000/42297100/42297074/63e4ff89.jpg?impolicy=resizecrop&ra=fit&rw=455&rh=455",
"property_url": "https://www.expedia.com/London-Hotels-Zedwell-Piccadilly-Trocadero.h42297074.Hotel-Information",
"region_id": "6139104",
"region_name": "London, United Kingdom (LON-All Airports)",
"check_in": "2026-08-21",
"check_out": "2026-08-22",
"adults": 2,
"sort": "RECOMMENDED",
"search_id": "cb481b56-f4b8-4f49-8d4a-9ab98d138245",
"source_url": "https://www.expedia.com/graphql",
"operation_name": "PropertyListingQuery",
"scraped_at": "2026-07-22T16:16:50.038Z"
}

Tips for Best Results

  • Start with resultsWanted: 20 to validate the destination and timing before scaling up.
  • Use complete Expedia Hotel-Search URLs. The Actor repairs missing dates and occupancy, but a valid region or destination must be present.
  • Residential proxies improve run stability on Expedia search pages. Enable them in proxyConfiguration for production runs.
  • If pasted dates are missing or already in the past, the Actor shifts them to a safe future stay automatically.
  • Not every listing exposes every field. Empty values are removed from dataset records automatically.

Integrations

  • Google Sheets - Export pricing and rating snapshots for spreadsheet analysis.
  • Airtable - Build searchable hotel and destination tracking tables.
  • Looker Studio - Visualize market trends across city and date combinations.
  • Webhooks - Trigger downstream enrichment or alerting pipelines.
  • API - Access datasets programmatically from your own systems.

Export Formats

  • JSON - Best for APIs and programmatic pipelines.
  • CSV - Best for spreadsheet workflows.
  • Excel - Best for reporting teams.
  • XML - Best for legacy integrations.

Frequently Asked Questions

Can I export the data to CSV or Excel?

Yes. Apify datasets can be downloaded in CSV, Excel, JSON, XML, and other supported formats directly from Apify Console.

Why are some fields missing in certain records?

Listings do not always expose the same details on every Expedia Hotel-Search page. The Actor keeps only non-empty values in each record.

Can I scrape multiple Expedia destinations?

Yes. Run one job per destination URL or schedule separate runs with different input payloads.

How many listings can I collect per run?

It depends on the destination inventory and load depth. Increase maxPages and resultsWanted for larger collections.

Does the Actor remove duplicate listings?

Yes. Duplicate listing cards are filtered by hotel ID so each property appears once per run.

What happens if my Expedia URL is incomplete or messy?

The Actor normalizes Expedia URLs by stripping wrapper characters, tracking parameters, and stale query values. It injects missing dates, default occupancy, and a sort mode. If Expedia rejects the first bootstrap attempt, the Actor retries with a refreshed session.

Can I run this Actor on a schedule?

Yes. You can schedule the Actor in Apify Console to refresh Expedia hotel data hourly, daily, weekly, or at another interval.

Is this Actor suitable for non-technical users?

Yes. The Actor can be run from Apify Console with a single URL input, and the output can be downloaded without writing code.

Scraping public web data may be legal, but you are responsible for complying with applicable laws, Expedia's terms of service, and responsible data usage practices.

Support

For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.

This Actor is designed for legitimate data collection from publicly available Expedia search pages. Users are responsible for using the data responsibly and complying with applicable laws and website terms.