Expedia Hotel Search Scraper avatar

Expedia Hotel Search Scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Expedia Hotel Search Scraper

Expedia Hotel Search Scraper

Scrapes hotel search results from Expedia.com. Extracts name, price, rating, stars, location, amenities, and more.

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

ScrapeAI

ScrapeAI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

High-performance, production-grade Expedia Hotel Search Scraper built on Apify SDK and Playwright. Extracts live, dynamic hotel listings and deep property details with rich pricing, guest ratings, star classifications, addresses, coordinates, room types, policies, amenities, and high-resolution photo galleries.


🌟 Key Capabilities

  • πŸš€ Multi-Layer Live Extraction Pipeline:
    • Layer 1: Live Network API Interception β€” Intercepts and queries live Expedia / Hotels.com Autosuggest & Lodging Network APIs dynamically based on user input.
    • Layer 2: Network & GraphQL Interception β€” Intercepts live LodgingSearchQuery, PropertySearchQuery, and REST payloads asynchronously.
    • Layer 3: Embedded State & JSON-LD β€” Extracts pre-rendered __NEXT_DATA__, __APOLLO_STATE__, and Schema.org Hotel JSON-LD structures.
    • Layer 4: Resilient Multi-Pattern DOM UI Scraping β€” Full coverage of modern card layouts, badges, and responsive UI components.
  • 🎯 Strict Pagination & Execution Limit Control:
    • Dynamically enforces user-defined maxItems limits with hard stop conditions.
    • Progressive infinite scroll and dynamic DOM height hydration.
    • Automatic detection and triggering of "Show more results" AJAX pagination.
  • πŸ›‘οΈ Anti-Bot & Verification Bypass:
    • Built-in DataDome interactive slider solving with human-like mouse trajectory emulation.
    • Browser fingerprint randomization with realistic viewport, user-agent, and header rotation.
    • Native support for Apify Residential and custom proxy configurations.
  • πŸ“Š Zero-Null Data Enrichment:
    • Normalizes and enriches missing fields from fallback layers to ensure the richest live output.

πŸ“₯ Input Parameters

ParameterTypeRequiredDefaultDescription
destinationStringβœ… Yes"New York City"City, region, landmark, or hotel name to search.
checkInStringNoβ€”Check-in date in YYYY-MM-DD format.
checkOutStringNoβ€”Check-out date in YYYY-MM-DD format.
adultsIntegerNo2Number of adult guests (1–8).
roomsIntegerNo1Number of rooms (1–8).
sortByStringNo"recommended"Sort order: recommended, price_low_to_high, price_high_to_low, star_rating_desc, review_score_desc.
maxItemsIntegerNo25Maximum number of hotel listings to extract (1–300).
scrapeDetailsBooleanNofalseWhen true, opens each hotel page in parallel to extract detailed descriptions, room categories, check-in/out times, and full photo galleries.
proxyConfigurationObjectNo{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}Proxy settings. Residential proxies are strongly recommended.

Example Input (INPUT.json)

{
"destination": "Paris",
"checkIn": "2026-09-10",
"checkOut": "2026-09-15",
"adults": 2,
"rooms": 1,
"sortBy": "recommended",
"maxItems": 50,
"scrapeDetails": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

πŸ“€ Output Format

Each hotel is saved directly to the default Apify Dataset as a clean, structured JSON record.

Example Output Record

{
"rank": 1,
"hotelId": "6206679",
"name": "Hotel Le Meurice Dorchester Collection",
"stars": 5,
"rating": 9.4,
"ratingText": "Exceptional",
"reviewCount": "2,847 reviews",
"price": "$620 nightly",
"pricePerNight": "$620",
"totalPrice": "$3,100 total",
"originalPrice": "$780",
"discount": "20% off",
"currency": "USD",
"neighborhood": "1st arrondissement",
"address": "228 Rue de Rivoli, Paris, 75001",
"distanceFromCenter": "0.2 km from city center",
"latitude": 48.8651,
"longitude": 2.3297,
"badge": "VIP Access",
"freeCancellation": true,
"freeCancellationDate": "Free cancellation before Sep 8",
"breakfastIncluded": true,
"reserveNowPayLater": true,
"amenities": [
"Free WiFi",
"Spa and wellness center",
"Michelin-star Restaurant",
"Fitness Center",
"Bar & Lounge",
"Pet friendly",
"Room service"
],
"thumbnail": "https://images.trvl-media.com/lodging/7000000/6200000/6206700/6206679/d1e2f3.jpg",
"images": [
"https://images.trvl-media.com/lodging/7000000/6200000/6206700/6206679/d1e2f3.jpg",
"https://images.trvl-media.com/lodging/7000000/6200000/6206700/6206679/a4b5c6.jpg"
],
"url": "https://www.expedia.com/Paris-Hotels-Hotel-Le-Meurice.h6206679.Hotel-Information",
"description": "An iconic Parisian palace hotel blending 18th-century opulence with contemporary design.",
"checkInTime": "3:00 PM",
"checkOutTime": "12:00 PM",
"roomTypes": [
"Classic Room",
"Deluxe Room with Tuileries Garden View",
"Prestige Suite"
],
"destination": "Paris",
"checkIn": "2026-09-10",
"checkOut": "2026-09-15",
"adults": 2,
"rooms": 1,
"sortBy": "recommended",
"scrapedAt": "2026-08-21T12:00:00.000Z"
}

⚑ Local Development & Execution

  1. Install Dependencies:

    $npm install
  2. Run Locally:

    $npm start
  3. Validate Dataset Schema:

    $npm run validate-datasets

πŸš€ Running on Apify

  1. Deploy or import this actor to your Apify account:
    $apify push
  2. Configure search destination, dates, guests, and limit in the Apify Console.
  3. Enable Apify Residential Proxies for maximum reliability against bot detection.
  4. Click Start to run the Actor and download the dataset in JSON, CSV, Excel, or XML.