π₯ Expedia Hotels & Reviews Scraper Pro
by clearpath
Scrape Expedia hotels with prices, ratings, reviews & amenities from 30+ global sites. Multi-room booking, flexible dates, unlimited hotels & reviews....
Opens on Apify.com
About π₯ Expedia Hotels & Reviews Scraper Pro
Scrape Expedia hotels with prices, ratings, reviews & amenities from 30+ global sites. Multi-room booking, flexible dates, unlimited hotels & reviews. Ideal for price monitoring, travel platforms & market analysis. $29/month.
What does this actor do?
π₯ Expedia Hotels & Reviews Scraper Pro is a web scraping and automation tool available on the Apify platform. It's designed to help you extract data and automate tasks efficiently in the cloud.
Key Features
- Cloud-based execution - no local setup required
- Scalable infrastructure for large-scale operations
- API access for integration with your applications
- Built-in proxy rotation and anti-blocking measures
- Scheduled runs and webhooks for automation
How to Use
- Click "Try This Actor" to open it on Apify
- Create a free Apify account if you don't have one
- Configure the input parameters as needed
- Run the actor and download your results
Documentation
Expedia Hotels Scraper A powerful Apify actor for scraping hotel data from Expedia. Get hotel listings with prices, ratings, amenities, and optional reviews. ## Features - Multi-region support - Scrape from 30+ Expedia country sites with local pricing - Flexible room configuration - Single room, families with children, or multi-room groups - Complete hotel data - Prices, ratings, amenities, photos, and reviews - Pagination support - Scrape unlimited hotels or set a maximum limit - Review scraping - Optional detailed review extraction per hotel - Residential proxy support - Reliable access with automatic proxy rotation - Date flexibility - Custom check-in/check-out dates or smart defaults ## Pricing $29/month for unlimited usage - No usage limits, scrape as many hotels as you need with unlimited reviews, pagination, and access to all 30+ regional sites. ## Quick Start ### Basic Search Search for hotels in a city with default settings (2 adults, 1 room): json { "location": "Paris", "maxResults": 100, "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } ### Filter by Hotel Brand Search for specific hotel chains or property names: json { "location": "New York", "propertyName": "Marriot", "maxResults": 50, "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } Tip: Works with any brand name - "Hilton", "Hyatt", "Holiday Inn", "Best Western", etc. ### Family Search with Children Search for family accommodations: json { "location": "Orlando", "rooms": [ { "adults": 2, "children": [ {"age": 5}, {"age": 10} ] } ], "checkIn": "2025-06-15", "checkOut": "2025-06-22", "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } ### Multi-Room Group Travel Search for multiple rooms for group travel: json { "location": "Las Vegas", "rooms": [ {"adults": 2, "children": []}, {"adults": 2, "children": [{"age": 8}]}, {"adults": 1, "children": []} ], "maxResults": 50, "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } ### Scraping Hotel Reviews & Property Details Enable detailed review scraping and comprehensive property information: json { "location": "Tokyo", "maxResults": 20, "scrapeReviews": true, "maxReviews": 100, "scrapePropertyDetails": true, "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } Review Scraping Options: - Disabled (default): Omit scrapeReviews or set to false - no reviews are scraped - Limited reviews: Set scrapeReviews: true and maxReviews: 25 (default) - scrapes up to 25 reviews per hotel - All reviews: Set scrapeReviews: true and maxReviews: 0 (or null) - scrapes ALL available reviews per hotel Property Details Options: - Enabled (default): scrapePropertyDetails: true - includes comprehensive property data (exact address, coordinates, detailed amenities, nearby attractions, review summaries, etc.) - Disabled: Set to false - only basic hotel information from search results β οΈ Note: Scraping all reviews increases runtime for hotels with thousands of reviews. The scraper can handle it though, no worries! ## Input Parameters | Parameter | Type | Required | Description | Default | |-----------|------|----------|-------------|---------| | location | String | Yes | Destination to search (city, region, or landmark) | - | | checkIn | Date | No | Check-in date (ISO format or datepicker) | 7 days from today | | checkOut | Date | No | Check-out date (ISO format or datepicker) | 10 days from today | | rooms | Array | No | Room configuration (see below) | [{"adults": 2, "children": []}] | | site | String | No | Expedia regional site (e.g., "www.expedia.com") | "www.expedia.com" | | maxResults | Integer | No | Maximum hotels to scrape (0 = unlimited) | 100 | | sortBy | String | No | Sort results by price, rating, distance, etc. (see sorting options below) | "RECOMMENDED" | | propertyName | String | No | Filter hotels by property name (e.g., "Marriot", "Hilton") | - | | scrapeReviews | Boolean | No | Fetch detailed reviews for each hotel | false | | maxReviews | Integer | No | Maximum reviews per hotel (0 or null = unlimited, only used if scrapeReviews is true) | 25 | | scrapePropertyDetails | Boolean | No | Fetch comprehensive property details (location, amenities, nearby attractions, etc.) | true | | proxyConfiguration | Object | Recommended | Proxy settings (residential proxy strongly recommended) | - | ## Rooms Configuration The rooms parameter allows you to specify room configurations for your search. Each room can have multiple adults and children with specific ages. ### Room Object Structure json { "adults": 2, // Number of adults (1-8) "children": [ // Array of children {"age": 5}, // Each child needs an age (0-17) {"age": 10} ] } ### Rules and Limits - Rooms: 1-8 rooms per search - Adults: 1-8 adults per room (required) - Children: 0-6 children per room (optional) - Child ages: 0-17 years old ### Examples #### Single Room (Default) json { "rooms": [ {"adults": 2, "children": []} ] } #### Family with Children json { "rooms": [ { "adults": 2, "children": [ {"age": 5}, {"age": 8}, {"age": 12} ] } ] } #### Multi-Room Group json { "rooms": [ {"adults": 2, "children": []}, {"adults": 2, "children": [{"age": 10}, {"age": 16}]}, {"adults": 1, "children": [{"age": 3}]} ] } #### Large Group json { "rooms": [ {"adults": 2, "children": []}, {"adults": 2, "children": []}, {"adults": 2, "children": []}, {"adults": 2, "children": []} ] } ### How Room Configuration Affects Results - Pricing: Hotels show room-specific pricing based on occupancy - Availability: Filters out hotels without enough available rooms - Room Types: Results include appropriate room types for your party size - Children: Some hotels offer free stays or discounts for children under certain ages ## Sorting Options Control how hotel results are ordered using the sortBy parameter: | Sort Option | Description | Best For | |-------------|-------------|----------| | RECOMMENDED | Expedia's algorithm (default) | General browsing, balanced results | | PRICE_LOW_TO_HIGH | Cheapest first | Budget travelers, price comparison | | PRICE_HIGH_TO_LOW | Most expensive first | Luxury travel, premium hotels | | DISTANCE | Nearest properties first | Location-focused searches | | REVIEW | Highest rated first | Quality-focused searches | | PROPERTY_CLASS | Star rating (5β1 star) | Star rating focused searches | Example - Find cheapest hotels: json { "location": "Paris", "sortBy": "PRICE_LOW_TO_HIGH", "maxResults": 50 } Example - Best rated hotels: json { "location": "Tokyo", "sortBy": "REVIEW", "scrapeReviews": true, "maxReviews": 25 } ## Supported Expedia Sites The actor supports 30+ regional Expedia sites: - πΊπΈ United States (USD) - www.expedia.com - π¬π§ United Kingdom (GBP) - www.expedia.co.uk - π©πͺ Germany (EUR) - www.expedia.de - π«π· France (EUR) - www.expedia.fr - π¨π¦ Canada (CAD) - www.expedia.ca - π¦πΊ Australia (AUD) - www.expedia.com.au - π²π½ Mexico (MXN) - www.expedia.com.mx - π―π΅ Japan (JPY) - www.expedia.co.jp - ...and 20+ more regional sites Each site returns results in local currency with region-specific inventory and pricing. ## Output Data The actor returns comprehensive hotel data with the following structure: ### Core Hotel Information - Basic details: ID, name, URL, star rating - Pricing: Current price, original price, nightly rate, deal badges - Ratings: Overall score, review count, description (e.g., "Excellent") - Media: Property images with descriptions - Policies: Refund policies, booking conditions ### Property Details (propertyDetails object) When scrapePropertyDetails: true (default), each hotel includes: - Location: Full address, coordinates (lat/long), parent region, map images - Amenities: Top amenities, categorized facilities (Internet, Parking, Food & Drink, etc.) - Basic Info: Property tagline, star rating, mandatory/optional fees - Description: Property overview, editorial content about the area - Nearby Attractions: Points of interest with walking/driving distances - Reviews Summary: Overall scores, review highlights, cleanliness ratings ### Reviews (reviews object) When scrapeReviews: true, includes: - Summary: Overall rating, total count, superlative (e.g., "Excellent") - Individual Reviews: Rating, text, author, date, travel type, liked/disliked aspects, management responses, photos ## Complete Output Example Here's a real (slightly shortened) example of hotel data returned by the scraper (with scrapePropertyDetails: true and scrapeReviews: true): json { "id": "64923094", "name": "TownePlace Suites by Marriott New York Brooklyn", "url": "https://www.expedia.com/New-York-Hotels-TownePlace-Suites-By-Marriott-New-York-Brooklyn...", "distance_from_search": "Brooklyn", "rating": { "score": 8.8, "score_text": "8.8", "description": "Excellent", "review_count": 353, "review_count_text": "353 reviews" }, "price": { "current": 310.0, "current_formatted": "$310", "original": 346.0, "original_formatted": "$346", "nightly_rate": 253.0, "nightly_rate_formatted": "$253 nightly", "currency": "USD", "deal_badge": "We have 2 left at $36 off at", "duration": "for 1 night", "dates": "Nov 13 - Nov 14" }, "images": [ { "url": "https://a.travel-assets.com/media/.../8b097323_b.jpg", "description": "Reception" } ], "badges": { "sponsored": true, "deal_badge": "We have 2 left at $36 off at" }, "policies": ["Fully refundable", "Reserve now, pay later"], "propertyDetails": { "basic_info": { "id": "64923094", "name": "TownePlace Suites by Marriott New York Brooklyn", "tagline": "Hotel with free breakfast, near Barclays Center Brooklyn", "star_rating": 3.0, "fees": { "optional": [ { "title": "Optional extras", "body": "Pet fee: USD 150.00 per pet, per stay\nParking: USD 45 per night" } ] } }, "location": { "latitude": 40.67794, "longitude": -73.97516, "address": { "street": "70 Nevins Street", "city": "Brooklyn", "province": "NY", "country_code": "USA", "full_address": "70 Nevins Street, Brooklyn, NY, 11217" }, "parent_region": "New York" }, "amenities": { "top": [ "Breakfast included", "Pet-friendly", "Free WiFi", "Air conditioning", "Gym", "Parking available" ], "categories": [ { "name": "Internet", "items": ["Available in all rooms: Free WiFi"] }, { "name": "Food and drink", "items": ["Buffet breakfast daily 6:30 AM-9:30 AM"] } ] }, "description": { "editorial": "Located in Downtown Brooklyn near Barclays Center..." }, "nearby_pois": [ { "name": "Barclays Center", "distance": "4 min walk", "category": "place" }, { "name": "Brooklyn Bridge", "distance": "16 min walk", "category": "place" } ], "reviews_summary": { "overall_score": 8.8, "overall_description": "Excellent", "review_count": 353, "highlight_message": "Guests rated this property 9.1/10 for cleanliness." } }, "reviews": { "summary": { "overallRating": "8.8/Excellent", "totalCount": 353 }, "items": [ { "text": "The hotel was nice and clean. Great location near Barclays center.", "rating": "10/10 Excellent", "ratingScore": 10, "author": "Sharon", "date": "Oct 27, 2025", "traveledWith": ["Traveled with family"], "liked": ["Liked: Cleanliness, staff & service, amenities"] } ], "pagination": { "fetched": 25, "total": 353, "hasMore": true } } } Key features shown in this example: - propertyDetails object: Comprehensive property information including exact location, detailed amenities, nearby attractions - Location data: Full address with coordinates (lat/long), perfect for mapping and distance calculations - Categorized amenities: Top amenities plus detailed categories (Internet, Food & Drink, Parking, etc.) - Nearby POIs: Points of interest with walking/driving distances - Reviews summary: Overall scores, review counts, and highlight messages - Deal pricing: Shows both original ($346) and discounted price ($310) - Review structure: Complete reviews with ratings, text, author info, travel type, and liked/disliked aspects - Review pagination: Tracks fetched vs total reviews (25 of 353) ## Proxy Configuration β οΈ Residential proxy is STRONGLY RECOMMENDED Expedia has strict rate limiting and blocks datacenter IPs. Always use residential proxies: json { "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } Without residential proxy, you'll likely encounter HTTP 429 "Too Many Requests" errors. ## Common Use Cases ### Price Comparison json { "location": "New York", "checkIn": "2025-07-01", "checkOut": "2025-07-05", "sortBy": "PRICE_LOW_TO_HIGH", "maxResults": 200, "scrapeReviews": false } ### Family Vacation Planning json { "location": "Disney World", "rooms": [ { "adults": 2, "children": [{"age": 6}, {"age": 9}] } ], "sortBy": "REVIEW", "scrapeReviews": true } ### Group Event (Wedding, Conference) json { "location": "Cabo San Lucas", "rooms": [ {"adults": 2, "children": []}, {"adults": 2, "children": []}, {"adults": 2, "children": []}, {"adults": 2, "children": []} ], "maxResults": 100 } ## Advanced Use Cases ### Market Research & Competitive Analysis Track hotel pricing trends, analyze competitor positioning, and monitor market dynamics: json { "location": "Miami Beach", "checkIn": "2025-12-20", "checkOut": "2025-12-27", "maxResults": 0, "scrapeReviews": true, "maxReviews": 100, "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } Use for: - Price monitoring: Track seasonal pricing patterns and dynamic pricing strategies - Competitive benchmarking: Compare your hotel's pricing, ratings, and amenities against competitors - Market analysis: Identify pricing gaps, popular amenities, and guest satisfaction trends - Portfolio analysis: Monitor multiple properties across different markets - Investment research: Evaluate hotel performance metrics before acquisition decisions ### Travel Agency & Booking Platforms Build automated hotel recommendation engines or comparison tools: json { "location": "Barcelona", "rooms": [ {"adults": 2, "children": [{"age": 8}]} ], "scrapeReviews": true, "maxReviews": 50, "maxResults": 200 } Use for: - Automated inventory updates for your booking platform - Personalized hotel recommendations based on guest preferences - Real-time price comparison across multiple OTAs - Review aggregation for better decision-making tools ### Data Analytics & Business Intelligence Extract comprehensive datasets for analysis and visualization: json { "location": "London", "site": "www.expedia.co.uk", "scrapeReviews": true, "maxReviews": 0, "maxResults": 0 } Use for: - Sentiment analysis on guest reviews - Amenity correlation with pricing and ratings - Geographic pricing analysis and heatmaps - Seasonal demand forecasting ## Troubleshooting ### HTTP 429 - Too Many Requests Symptoms: Actor fails with "Request blocked by Expedia" or HTTP 429 error Causes: - No proxy configured - Using datacenter proxy instead of residential - Proxy IP already rate-limited Solutions: 1. Enable residential proxy in input settings: json { "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } } 2. If using custom proxy, ensure it's residential-grade 3. The actor automatically retries with new IPs on 429 errors --- ### No Results Found for Location Symptoms: Actor fails with "No results found for location: [your location]" Causes: - Typo in location name - Location too specific or not recognized by Expedia - Wrong regional site for the location Solutions: 1. Try broader location names: - β
"Paris" instead of β "Paris 16th Arrondissement" - β
"Los Angeles" instead of β "West Hollywood, LA" 2. Use well-known landmarks: "Eiffel Tower", "Times Square", "Big Ben" 3. For international locations, use the appropriate regional site (e.g., use www.expedia.de for German cities) --- ### Room Configuration Validation Errors Symptoms: Actor fails with "Invalid rooms configuration" error Causes: - Invalid room parameters (0 adults, child age > 17, too many rooms) - Incorrect JSON format Solutions: 1. Validate room configuration: - Adults: 1-8 per room (required) - Children: 0-6 per room (optional) - Child ages: 0-17 years old - Max rooms: 8 per search 2. Example valid configuration: json { "rooms": [ {"adults": 2, "children": [{"age": 5}, {"age": 10}]} ] } --- ## Technical Details ### Data Quality - Real-time pricing and availability - Official hotel data and images - Accurate ratings and reviews ## Support - π§ Email: max@mapa.slmail.me - π Found a bug?: Use the issues tab and describe your issue - π§ Feature Requests: Contact via email or issues tab ## Legal Compliance This Expedia scraper extracts publicly available hotels data. Users must comply with Expedia's terms of service and applicable data protection regulations for their intended use. --- π Start Extracting Expedia Hotels and reviews
Categories
Common Use Cases
Market Research
Gather competitive intelligence and market data
Lead Generation
Extract contact information for sales outreach
Price Monitoring
Track competitor pricing and product changes
Content Aggregation
Collect and organize content from multiple sources
Ready to Get Started?
Try π₯ Expedia Hotels & Reviews Scraper Pro now on Apify. Free tier available with no credit card required.
Start Free TrialActor Information
- Developer
- clearpath
- Pricing
- Paid
- Total Runs
- 151
- Active Users
- 9
Related Actors
π― Tweet Scraper V2 - X / Twitter Scraper
by apidojo
Google Search Results Scraper
by apify
Instagram Profile Scraper
by apify
Tweet Scraper|$0.25/1K Tweets | Pay-Per Result | No Rate Limits
by kaitoeasyapi
Apify provides a cloud platform for web scraping, data extraction, and automation. Build and run web scrapers in the cloud.
Learn more about ApifyNeed Professional Help?
Couldn't solve your problem? Hire a verified specialist on Fiverr to get it done quickly and professionally.
Trusted by millions | Money-back guarantee | 24/7 Support