Expedia Hotels Scraper avatar

Expedia Hotels Scraper

Pricing

Pay per usage

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

Pay per usage

Rating

0.0

(0)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

5

Monthly active users

6 days ago

Last modified

Share

Expedia Hotels Listings Scraper

Extract structured Expedia hotel listing data from Hotel-Search result pages. Collect prices, ratings, property links, listing metadata, and search context for analysis, monitoring, and travel intelligence workflows.


Features

  • Hotel listings extraction - Capture Expedia search-result cards with core property metadata.
  • Rich pricing details - Collect nightly, total, and strikeout prices when available.
  • Rating and review context - Include stars, guest score, and review counts.
  • Clean output records - Automatically omit empty values instead of storing null fields.
  • Duplicate-safe collection - Save each hotel once per run using hotel ID deduplication.

Use Cases

Price Monitoring

Track hotel prices across destinations and travel windows to identify spikes, drops, and seasonal movement.

Market Comparison

Benchmark competing properties in the same region by rating, review volume, and price visibility.

Travel Dataset Building

Generate structured hotel datasets for BI dashboards, forecasting, and internal travel tools.

Offer Intelligence

Analyze member-price indicators, strikeout price patterns, and cancellation signals at listing level.


Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringYesExpedia London Hotel-Search URLExpedia Hotel-Search or Expedia destination URL. The actor normalizes pasted URLs, strips junk, and auto-fills common missing search params such as dates, adults, and sort.
results_wantedIntegerNo20Maximum number of listings to save.
max_pagesIntegerNo8Maximum result-load rounds to attempt.
proxyConfigurationObjectNoResidential Apify ProxyProxy settings for stable extraction.

Output Data

Each dataset item can contain:

FieldTypeDescription
hotel_idStringExpedia hotel ID
hotel_nameStringProperty name from search card
cityStringCity or area label
star_ratingNumberOfficial hotel star rating
guest_ratingNumberGuest score shown in listing card
guest_rating_out_of_fiveNumberGuest score in 5-point representation
review_countIntegerNumber of guest reviews
review_labelStringRating label such as "Very Good"
nightly_priceStringNightly price text
total_priceStringTotal stay price text
strikeout_priceStringPrevious price text when present
taxes_and_fees_noteStringTaxes and fees message
free_cancellationBooleanFree cancellation signal when available
member_price_availableBooleanMember price indicator
vacation_rentalBooleanVacation rental marker
image_urlStringPrimary listing image URL
property_urlStringExpedia hotel detail URL
region_idStringSearch region ID
region_nameStringSearch region name
check_inStringCheck-in date
check_outStringCheck-out date
adultsIntegerAdults in room 1
childrenArrayChild ages in room 1
sortStringSort mode used in request
search_idStringExpedia search identifier
source_urlStringSource endpoint URL
operation_nameStringListing operation name
scraped_atStringISO timestamp of capture

Usage Examples

Basic Run

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

Messy URL Recovery

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

The actor removes wrapper characters, preserves the Expedia destination, and injects fresh future dates and sane occupancy defaults when they are missing or stale.

Proxy-Optimized Run

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

Sample Output

{
"hotel_id": "5173526",
"hotel_name": "Point A London Kings Cross - St Pancras",
"city": "London",
"star_rating": 2.5,
"guest_rating": 8.4,
"guest_rating_out_of_five": 4.2,
"review_count": 2888,
"review_label": "Very Good",
"nightly_price": "$101 nightly",
"total_price": "$121",
"strikeout_price": "$135",
"taxes_and_fees_note": "Total with taxes and fees",
"free_cancellation": false,
"member_price_available": true,
"vacation_rental": false,
"image_url": "https://images.trvl-media.com/lodging/6000000/5180000/5173600/5173526/24292dd5.jpg?impolicy=resizecrop&ra=fit&rw=455&rh=455",
"property_url": "https://www.expedia.com/London-Hotels-Point-A-Hotel-London-Kings-Cross-St-Pancras.h5173526.Hotel-Information?...",
"region_id": "6139104",
"region_name": "London, United Kingdom (LON-All Airports)",
"check_in": "2026-04-19",
"check_out": "2026-04-20",
"adults": 2,
"children": [],
"sort": "RECOMMENDED",
"search_id": "5546132f-1251-4ae8-b52a-9ad927c5ee32",
"source_url": "https://www.expedia.com/graphql",
"operation_name": "PropertyListingQuery",
"scraped_at": "2026-04-06T13:32:11.102Z"
}

Tips For Best Results

Start With Default Volume

  • Use results_wanted: 20 first to validate destination and timing.
  • Increase volume only after verifying stable output.

Use Expedia URLs Only

  • Provide an Expedia Hotel-Search URL or an Expedia destination page URL.
  • The actor repairs missing dates, adults, sort, and common query noise automatically.

Use Residential Proxies

  • Residential routing improves reliability on protected travel pages.
  • Keep request volume moderate when collecting large destination sets.

Keep Dates Valid

  • If pasted dates are missing or already in the past, the actor shifts them to a safe future stay automatically.
  • If only one date is usable, checkout is healed to the next day.

Expect Field Variance

  • Not every listing exposes every field.
  • Empty/null fields are removed automatically from dataset records.

Integrations

  • Google Sheets - Export pricing and rating snapshots for analysts.
  • Airtable - Build searchable destination and hotel tracking tables.
  • Looker Studio - Visualize market trends across city/date combinations.
  • Webhooks - Trigger downstream enrichment or alerting pipelines.

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

Why are some fields missing in certain records?

Listings do not always expose the same details. The actor keeps only non-empty values.

Can I scrape multiple destinations?

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

How many listings can I collect?

It depends on destination inventory and load depth. Increase max_pages and results_wanted as needed.

Why does proxy matter?

Some Expedia result pages apply request-rate controls. Residential proxies improve run stability.

Does the actor remove duplicates?

Yes. Duplicate listing cards are filtered by hotel ID.

What happens if my URL is incomplete?

The actor normalizes Expedia URLs, strips wrapper characters and common tracking junk, and retries with a refreshed session when Expedia rejects the first bootstrap attempt.


Support

For issues or feature requests, use Apify Console support channels.

Resources


This actor is designed for legitimate data collection and analysis workflows. You are responsible for complying with website terms, applicable laws, and responsible data usage practices.