# Expedia Scraper API — Hotels, Prices, Rooms & Reviews | $1.8/1k (`pro100chok/expedia-all-in-one-scraper`) Actor

Scrape Expedia.com hotels by city, landmark, search URL or hotel URL: live prices & deals for your dates, every room & rate plan, address & GPS, all photos, amenities, policies, rating distribution, AI review summary and guest reviews. No login, no API key.

- **URL**: https://apify.com/pro100chok/expedia-all-in-one-scraper.md
- **Developed by:** [Raven](https://apify.com/pro100chok) (community)
- **Categories:** Travel, E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 hotels

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Expedia Scraper API — Hotels, Prices, Rooms, Reviews & Photos

Scrape **Expedia.com hotels** by city, landmark, Expedia search URL or hotel URL, **from $1.80 per 1,000 hotels**. Every row is a complete hotel: live prices and deals for your dates, every room type with every rate plan, full address and GPS coordinates, all photos, amenities, policies, FAQ, rating distribution, category scores, Expedia's AI review summary and — optionally — full guest reviews nested inside. No login, no API key, no code, no proxies to set up.

![Expedia scraper API: hotel prices, rooms and rates, photos, ratings and guest reviews from Expedia.com as JSON](https://raw.githubusercontent.com/PRO100CHOK/apify-readme-assets/main/expedia-all-in-one-scraper/hero.png)

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#1668E3;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">Raven &middot; TRAVEL &amp; HOSPITALITY</span>
<span style="color:#D0E1F9;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Expedia, Booking, TripAdvisor, Google Maps</span>
</td>
</tr>
<tr>
<td style="background:#D5E4FA;padding:10px 12px;border:1px solid #E4E4E7;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://raw.githubusercontent.com/PRO100CHOK/apify-readme-assets/main/expedia-all-in-one-scraper/icon.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/expedia-all-in-one-scraper" style="color:#145ECC;text-decoration:none;font-weight:700;font-size:13px">Expedia&nbsp;Scraper</a></span><br>
<span style="color:#145ECC;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="background:#ECF3FD;padding:10px 12px;border:1px solid #E4E4E7;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-ndx8v7vE2UZLdaPh3-q8F89sJ3yV-8b39d8ca-79e9-4e96-aed0-dd8ab344e038.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/booking-all-in-one-scraper" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">Booking&nbsp;Scraper</a></span><br>
<span style="color:#71717A;font-size:11px">Hotels, prices, hosts, reviews</span>
</td>
<td style="background:#ECF3FD;padding:10px 12px;border:1px solid #E4E4E7;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-caoIAzJRQpPYIg12M-tlsdeBufko-c028930e-93b5-4dbf-8c6f-2801f0cdb2ba.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/tripadvisor-all-in-one" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">TripAdvisor&nbsp;Scraper</a></span><br>
<span style="color:#71717A;font-size:11px">Hotels, restaurants, emails</span>
</td>
<td style="background:#ECF3FD;padding:10px 12px;border:1px solid #E4E4E7;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-w0yugQzf3ETbRbAC2-ehi6JwVR72-ae55cffc-cd6e-481f-bb22-f89a349f7287.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/google-maps-scraper" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">Google&nbsp;Maps&nbsp;Scraper</a></span><br>
<span style="color:#71717A;font-size:11px">Places, emails, reviews</span>
</td>
</tr>
</table>

### 🏨 What does this Expedia Scraper do?

It works as an **unofficial Expedia API**: Expedia's own partner APIs are only open to approved affiliates and travel businesses, while this actor turns the public Expedia.com website into clean JSON, CSV or Excel for anyone.

| You give it | You get |
|---|---|
| **Destinations** — `Paris`, `Times Square, New York`, `JFK Airport`, a hotel name | Up to 5,000 hotels per destination, found the way Expedia's search box finds them |
| **Expedia search URLs** — `…/Hotel-Search?…` | The same results you see on the site, with **every filter you applied kept** (stars, price, amenities, property type, guest rating, neighborhood, sort) |
| **Hotel URLs** — `…h891081.Hotel-Information` | That hotel with full details, rooms & rates and reviews |
| **Hotel IDs** — `891081` | Same as a hotel URL, no link needed |

One row per hotel. Rooms, rates, photos and reviews are **nested inside the hotel**, so 100 hotels = 100 rows.

### ✅ Why use this scraper?

- ✅ **Up to 61 top-level fields per hotel**, plus 9 fields per room, 11 per rate plan and 17 per review.
- ✅ **Rooms & rates for your dates** — every room type, and every rate plan with price, crossed-out price, deal, cancellation terms, payment options (pay now / pay later / deposit), extras like breakfast and "rooms left".
- ✅ **Ratings breakdown** — rating distribution (count and % for each score), category scores (cleanliness, staff & service, amenities, condition) and Expedia's **AI review summary** with mention counts.
- ✅ **All photos with categories** (Rooms, Bathroom, Exterior, Dining…) and property videos.
- ✅ **Reviews nested in each hotel** — up to 10,000 per hotel, sorted by newest / most relevant / highest / lowest, filtered by traveler type and date.
- ✅ **Up to 200 hotels per search request** and up to 5,000 hotels per destination.
- ✅ **Search URL filters kept as-is** — set up the search on Expedia, paste the URL.
- ✅ **Pay per result** — hotels and reviews are billed separately; no monthly fee.

| | Expedia partner API | Typical Expedia scrapers | This actor |
|---|---|---|---|
| Access | Approved partners only | Open | Open |
| Hotels from search | ✅ | ✅ | ✅ |
| Every room & rate plan with cancellation / payment / extras | Partner-dependent | Rarely | ✅ |
| Rating distribution + category scores + AI summary | ❌ | Rarely all three | ✅ |
| Reviews in the same run | ❌ | Usually a separate actor | ✅ nested per hotel |
| Search URL with site filters | ❌ | Sometimes | ✅ |
| Setup | Contract, keys | Often a proxy to configure | None |

### 📦 What data can you extract?

**Listing & price (from search)**

| Field | Example |
|---|---|
| `hotelId`, `name`, `url` | `75198855`, `Hotel Monte Hermana Tokyo` |
| `starRating`, `guestRating`, `guestRatingText`, `reviewCount` | `3`, `9.2`, `Wonderful`, `1002` |
| `priceTotal`, `pricePerNight`, `priceStrikethrough`, `priceLabel` | `320`, `247`, `445`, `Total with taxes and fees` |
| `dealBadge`, `badges`, `availabilityMessage`, `freeCancellation` | `Sale $125 off`, `VIP Access`, `We have 2 left at this price`, `true` |
| `searchPosition`, `isSponsored`, `neighborhood`, `thumbnail`, `cardAmenities` | `2`, `false`, `Tokyo` |
| `searchQuery`, `destination`, `regionId`, `checkIn`, `checkOut`, `adults`, `currency` | `Tokyo`, `2026-10-11`, `USD` |

**Location**: `address`, `street`, `city`, `region`, `postalCode`, `countryCode`, `latitude`, `longitude`, `mapImage`, `neighborhoodDescription`, `nearbyPlaces` (name, distance, walking time, image).

**Property**: `tagline`, `description`, `starRatingInfo`, `highlights`, `popularAmenities`, `familyAmenities`, `amenities` (by category), `checkInPolicy`, `checkOutPolicy`, `policies`, `importantInfo` (fees, optional extras), `faq`.

**Media**: `images` (url, caption, category), `videos` (url, caption, duration, thumbnail).

**Ratings**: `ratingDistribution` (rating, label, count, percent), `categoryRatings` (category, score), `reviewSummaryAI` (section, text, mentions).

**Rooms & rates** (`rooms[]`): `roomTypeId`, `name`, `features` (size, beds, occupancy), `highlights`, `refundPolicy`, `amenities`, `images`, `available`, and `rates[]` with `ratePlanId`, `priceTotal`, `pricePerNight`, `priceStrikethrough`, `deal`, `extras`, `cancellation`, `payment`, `paymentModel`, `roomsLeft`. Plus `lowestPriceBreakdown` (base rate and taxes of the cheapest offer).

**Reviews** (`reviews[]`): `reviewId`, `rating`, `ratingLabel`, `title`, `text`, `author`, `date`, `travelerType`, `stay`, `nightsStayed`, `liked`, `disliked`, `photos`, `verified`, `hotelResponse`, `hotelResponseAuthor`, `hotelResponseDate`.

### 🚀 How to scrape Expedia step by step

1. Create a free Apify account — it comes with **$5 of free credits every month**.
2. Open **Expedia Scraper** and type a destination (e.g. `Paris`), or paste Expedia search / hotel URLs.
3. Set **Max hotels per destination**, your **check-in / check-out dates** and guests.
4. Optionally add filters (stars, price, guest rating, free cancellation, sort) and choose what to collect: **Hotel details**, **Rooms & rates**, **Guest reviews**.
5. Click **Start**. Hotels appear in the Output tab while the run is going.
6. Download as JSON, CSV, Excel, XML or HTML, or pull the data through the API.

### 🔗 How to scrape an Expedia search with all its filters

Build the search on Expedia.com — destination, dates, guests, star rating, price range, amenities, property type, guest rating, sort — and copy the address bar. Paste it into **Expedia URLs**. The actor reads the destination, dates, rooms, children and every filter from the URL and returns the same hotels, up to your **Max hotels per destination**. The dates and filters from the input form apply to destinations; a search URL keeps its own.

### 💬 How to get Expedia reviews for many hotels at once

Turn on **Guest reviews** and set **Max reviews per hotel**. Reviews are fetched 50 at a time and attached to their hotel, so a destination search can bring back hundreds of hotels with their reviews in one run. Use **Reviews order** = *Most recent* together with **Reviews newer than** to collect only fresh reviews — the actor stops paging a hotel once it reaches older ones. To get reviews only, pass hotel URLs or IDs and switch off **Hotel details** and **Rooms & rates**.

### 🛏️ How to compare room rates and cancellation terms

With **Rooms & rates** on (default), each hotel carries every room type and every rate plan Expedia offers for your dates: non-refundable vs. fully refundable, with or without breakfast, pay now vs. pay later, and how many rooms are left at that price. Change `checkIn`, `checkOut`, `adults`, `childrenAges` and `rooms` to price a specific trip.

### ⚙️ Input parameters

| Parameter | Type | Description |
|---|---|---|
| `destinations` | array | Places or hotel names as typed into Expedia's search box |
| `startUrls` | array | Expedia hotel pages and/or Hotel-Search result pages |
| `hotelIds` | array | Expedia property IDs |
| `maxItems` | integer | Max hotels per destination or search URL (1–5,000, default 50) |
| `checkIn` / `checkOut` | string | `YYYY-MM-DD` or relative (`7 days`). Default: 14 days from today, 1 night |
| `adults` | integer | Adults per room (default 2) |
| `childrenAges` | array | Age of each child |
| `rooms` | integer | Number of rooms (default 1) |
| `sortBy` | enum | `RECOMMENDED`, `PRICE_LOW_TO_HIGH`, `PRICE_HIGH_TO_LOW`, `REVIEW`, `DISTANCE`, `PROPERTY_CLASS` |
| `minPrice` / `maxPrice` | integer | Price range in USD |
| `starRatings` | array | `10`–`50` (1–5 stars) |
| `minGuestRating` | enum | `30` (7+), `35` (8+), `40` (9+), `45` (9.5+) |
| `freeCancellationOnly` | boolean | Only fully refundable properties |
| `includeDetails` | boolean | Address, coordinates, photos, amenities, policies, FAQ, ratings breakdown (default on) |
| `includeRooms` | boolean | Rooms & rates for your dates (default on) |
| `includeReviews` | boolean | Attach guest reviews (default off) |
| `maxReviewsPerHotel` | integer | Default 20 |
| `reviewsSort` | enum | `newest`, `relevant`, `highest`, `lowest` |
| `reviewsTravelerType` | enum | `all`, `business`, `couples`, `families`, `families_young_children`, `groups`, `solo`, `pets` |
| `reviewsFrom` | string | Skip reviews older than this date |
| `maxConcurrency` | integer | Hotels processed in parallel (default 10) |

### 🧪 Ready-to-paste input recipes

**Cheapest 4–5 star hotels in Paris for a weekend**

```json
{
  "destinations": ["Paris"],
  "maxItems": 100,
  "checkIn": "2026-11-13",
  "checkOut": "2026-11-15",
  "starRatings": ["40", "50"],
  "sortBy": "PRICE_LOW_TO_HIGH"
}
```

**Family trip with children, free cancellation only**

```json
{
  "destinations": ["Orlando"],
  "maxItems": 50,
  "adults": 2,
  "childrenAges": ["6", "9"],
  "freeCancellationOnly": true,
  "minGuestRating": "40"
}
```

**Hotel reputation monitoring — fresh reviews only**

```json
{
  "startUrls": [{ "url": "https://www.expedia.com/Paris-Hotels-Hotel-Trianon-Rive-Gauche.h891081.Hotel-Information" }],
  "includeDetails": false,
  "includeRooms": false,
  "includeReviews": true,
  "maxReviewsPerHotel": 1000,
  "reviewsSort": "newest",
  "reviewsFrom": "2026-06-01"
}
```

**Market research: several cities with reviews**

```json
{
  "destinations": ["London", "New York", "Tokyo"],
  "maxItems": 300,
  "includeReviews": true,
  "maxReviewsPerHotel": 20
}
```

**Expedia search URL with filters from the site**

```json
{
  "startUrls": [{ "url": "https://www.expedia.com/Hotel-Search?destination=Paris%2C%20France&regionId=2734&startDate=2026-11-10&endDate=2026-11-12&adults=2&sort=PRICE_LOW_TO_HIGH&star=40&star=50&price=100&price=400" }],
  "maxItems": 200
}
```

**Lightweight price scan (no details, no rooms)**

```json
{
  "destinations": ["Barcelona", "Rome", "Lisbon"],
  "maxItems": 500,
  "includeDetails": false,
  "includeRooms": false
}
```

### 📤 Output example

A real record from a run (lists shortened):

```json
{
  "hotelId": "75198855",
  "name": "Hotel Monte Hermana Tokyo",
  "url": "https://www.expedia.com/Tokyo-Hotels-Hotel-Monte-Hermana-Tokyo.h75198855.Hotel-Information",
  "starRating": 3,
  "guestRating": 9.2,
  "guestRatingText": "Wonderful",
  "reviewCount": 1002,
  "address": "3-3-15 Nihonbashi, Tokyo, Tokyo, 103-0027",
  "city": "Tokyo",
  "postalCode": "103-0027",
  "countryCode": "JPN",
  "latitude": 35.680202,
  "longitude": 139.770923,
  "priceTotal": 320,
  "pricePerNight": 247,
  "priceStrikethrough": 445,
  "dealBadge": "Sale $125 off",
  "availabilityMessage": "We have 2 left at this price",
  "freeCancellation": true,
  "searchPosition": 2,
  "searchQuery": "Tokyo",
  "checkIn": "2026-10-11",
  "checkOut": "2026-10-12",
  "adults": 2,
  "currency": "USD",
  "tagline": "Hotel near Tokyo International Forum",
  "ratingDistribution": [
    { "rating": 10, "label": "Excellent", "count": 693, "percent": 69 },
    { "rating": 8, "label": "Good", "count": 236, "percent": 24 }
  ],
  "categoryRatings": [
    { "category": "Cleanliness", "score": 9.6 },
    { "category": "Staff & service", "score": 9.6 }
  ],
  "reviewSummaryAI": [
    { "section": "What guests liked", "text": "The hotel is surrounded by numerous local restaurants and eateries within walking distance, offering a variety of dining options.", "mentions": 28 }
  ],
  "popularAmenities": ["Free WiFi", "Air conditioning", "Breakfast available", "Laundry"],
  "images": [
    { "url": "https://images.trvl-media.com/lodging/76000000/75200000/75198900/75198855/a2956964.jpg?impolicy=resizecrop&rw=1200&ra=fit", "caption": "A modern hotel entrance with a patterned facade…", "category": "Exterior" }
  ],
  "rooms": [
    {
      "roomTypeId": "316139087",
      "name": "Twin Room, Non Smoking",
      "features": ["183 sq ft", "1 bedroom", "Sleeps 4", "2 Twin Beds", "Free WiFi"],
      "highlights": ["Air conditioning", "Heating", "Blackout drapes/curtains"],
      "rates": [
        {
          "ratePlanId": "394022681",
          "extras": "No extras",
          "priceTotal": 320,
          "pricePerNight": 247,
          "priceStrikethrough": 445,
          "deal": "Sale $125 off",
          "cancellation": "Fully refundable before Thu, Oct 8",
          "payment": ["Pay the total now", "Pay when you stay", "Reserve with deposit"],
          "roomsLeft": "We have 2 left"
        }
      ]
    }
  ],
  "reviews": [
    {
      "reviewId": "6ab0d51ad78e387900203f2f",
      "rating": 10,
      "ratingLabel": "Excellent",
      "text": "Staff Friendly and helpful. Comfortable rooms. Great location to train stations. We would stay again here",
      "author": "JEFF",
      "date": "2026-09-21",
      "travelerType": "Traveled with partner",
      "stay": "Stayed 4 nights in Sep 2026",
      "nightsStayed": 4,
      "liked": ["cleanliness", "staff & service", "amenities", "property conditions & facilities"],
      "verified": true,
      "hotelResponse": "Thank you so much for your kind review…",
      "hotelResponseDate": "2026-09-22"
    }
  ],
  "scrapedAt": "2026-09-27T17:16:38+00:00"
}
```

The Output tab also offers ready-made table views: **Overview**, **Location & contacts**, **Details**, **Rooms & rates** and **Reviews**.

### 💰 How much does it cost to scrape Expedia?

Pay-per-event pricing — you pay only for hotels and reviews you receive.

| Event | Free plan | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| **Hotel** — full record (listing, price, details, photos, rooms & rates) | $1.80 / 1,000 | $1.60 | $1.50 | $1.40 | $1.30 | $1.20 |
| **Review** — one guest review attached to a hotel | $0.50 / 1,000 | $0.40 | $0.35 | $0.30 | $0.25 | $0.18 |

| Job | Free plan | Gold plan |
|---|---|---|
| 100 hotels in one city | $0.18 | $0.14 |
| 1,000 hotels with details and rooms | $1.80 | $1.40 |
| 1,000 hotels + 20 reviews each | $11.80 | $7.40 |
| 10,000 reviews (reviews only) | $5.00 + hotels | $3.00 + hotels |

The free **$5 monthly credit** covers roughly **2,700 hotels**, or about 400 hotels with 20 reviews each. There is also a platform start fee of $0.00005 per run. Prices are all-inclusive. Set **Maximum cost per run** in the run options and the actor stops cleanly when it is reached.

### 🔌 Integrations

Send results anywhere with Apify integrations: **Make, Zapier, n8n, Google Sheets, Slack, Airtable, webhooks**, or the Apify API and Python / JavaScript clients. Use **Schedules** to re-run a search every day and track Expedia prices over time.

### 🤖 Use with AI agents (MCP)

The actor is available through the [Apify MCP server](https://mcp.apify.com), so Claude, ChatGPT, Cursor and other MCP clients can call it as a tool. Example prompt:

> "Find the 20 cheapest 4-star hotels in Lisbon on Expedia for 12–14 November with free cancellation, and list their guest rating, price per night and address."

### 🎯 Popular use cases

- **Hotels & revenue managers** — monitor competitors' prices, deals, rooms left and cancellation terms for your dates.
- **Travel agencies & OTAs** — build hotel catalogs with photos, amenities, policies and coordinates.
- **Market researchers & investors** — compare destinations by price level, star mix and guest ratings.
- **Reputation & CX teams** — collect reviews, liked/disliked topics and hotel responses; track the AI review summary.
- **Data & AI teams** — feed hotel data and reviews into dashboards, RAG pipelines and travel assistants.

### ⚖️ Is it legal to scrape Expedia?

The actor collects publicly visible hotel information — the same prices, descriptions and reviews anyone can see on Expedia.com without logging in. Reviews contain reviewer first names, which may be personal data under GDPR and similar laws; only process them if you have a legitimate reason. You are responsible for complying with Expedia's terms and applicable laws. Read more: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/) This actor is not affiliated with Expedia Group.

### ❓ FAQ

#### Does Expedia have a public API?

Expedia's official APIs are available to approved partners only. This actor gives you the same public hotel data as structured JSON without a partner agreement.

#### Do I need an Expedia account, API key or proxies?

No. Everything needed is included — just enter a destination or URL.

#### Which Expedia sites are supported?

Expedia.com (US). Prices are in USD and texts are in English.

#### How many hotels can I get per destination?

Up to 5,000 per destination or search URL. Expedia typically lists a few hundred to a few thousand properties per city; for more, split a city into neighborhoods or use filters.

#### Why are there fewer hotels than I asked for?

Expedia returned fewer matches for that destination, dates and filters. Loosen filters, widen the price range or change dates.

#### Which dates are prices for?

The `checkIn` / `checkOut` in each row. Without dates, check-in is 14 days from today for one night.

#### Why is `priceTotal` empty for some hotels?

`priceTotal` comes from search results. Hotels requested by URL or ID get `priceFrom` (the cheapest rate) and the full list of room rates instead. Sold-out hotels have no price.

#### Why are some fields missing in a record?

Empty values are dropped rather than returned as `null`. Some properties simply have no star rating, videos, FAQ or AI summary on Expedia.

#### Can I get only reviews?

Yes — pass hotel URLs or IDs, turn off **Hotel details** and **Rooms & rates**, and turn on **Guest reviews**.

#### How many reviews per hotel can I get?

Up to 10,000 per hotel, which covers all reviews Expedia shows for almost any property.

#### Does it return hotel emails or phone numbers?

No. Expedia does not publish hotels' own emails, phones or websites. You get the full address and exact coordinates.

#### Can I export to CSV or Excel?

Yes — JSON, CSV, Excel, XML and HTML from the Output tab or the API.

#### Will I be charged for hotels that return nothing?

No. Hotels that can't be read are skipped, logged and not charged.

#### Can I run it on a schedule to track prices?

Yes. Save your input as a task and add a Schedule (e.g. daily); each run records the prices for the dates you set.

#### Can AI agents use it?

Yes, through the Apify MCP server — see the section above.

### 🛟 Feedback & support

Found a bug or need a field? Open an issue in the **Issues** tab of the actor and include the run link.

### More scrapers by Raven

**Travel & hospitality**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-ndx8v7vE2UZLdaPh3-q8F89sJ3yV-8b39d8ca-79e9-4e96-aed0-dd8ab344e038.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Booking Scraper](https://apify.com/pro100chok/booking-all-in-one-scraper)** — Hotels, prices, hosts, emails and reviews
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-caoIAzJRQpPYIg12M-tlsdeBufko-c028930e-93b5-4dbf-8c6f-2801f0cdb2ba.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[TripAdvisor Scraper](https://apify.com/pro100chok/tripadvisor-all-in-one)** — Hotels, restaurants, emails and reviews
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-w0yugQzf3ETbRbAC2-ehi6JwVR72-ae55cffc-cd6e-481f-bb22-f89a349f7287.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Google Maps Scraper](https://apify.com/pro100chok/google-maps-scraper)** — Places, emails, reviews and photos
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-hf4D1qFJHmE95F7CJ-Hkdhw1Nnc8-783bdfba-34ea-42a8-bbe0-27e63a5e8bd2.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Yelp Scraper](https://apify.com/pro100chok/yelp-scraper)** — Businesses, emails and reviews

**Real estate**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Z8DnUeXHDZ8h3bwz5-2fpYwHzXLj-3464c791-c1e6-4569-be2f-06c9ea795b7f.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Zillow Scraper](https://apify.com/pro100chok/zillow-scraper-all-in-one)** — Listings, Zestimate, agents
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-vness86lujcu7VTrh-ikEhCJzgGf-0553337e-4f6d-48dd-999a-f0a7f03c8804.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Realtor Scraper](https://apify.com/pro100chok/realtor-com-scraper)** — Listings, property data, agents
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-2bXBHs5BF7iBki2rV-8EhrRpAVWj-c84534b4-ba6f-4d40-8d93-801e9658109b.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Apartments.com Scraper](https://apify.com/pro100chok/apartments-scraper-usage)** — Rentals, prices, reviews
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Z2kaPRD9dlPAfA95f-1L0kLtuR9W-cbad1ec4-1b82-437a-bf31-76fc21d4ff5b.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Idealista Scraper](https://apify.com/pro100chok/idealista-scraper)** — Spain, Italy & Portugal listings

**Reviews & business data**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-lFLILoeJarJWgpyfA-hW3U63Zaih-75495494-6b1c-4365-bb7e-3b0275c76e18.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Trustpilot Scraper](https://apify.com/pro100chok/trustpilot-all-in-one-scraper)** — Companies, reviews, emails
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Jwxb2NnpjBqbwi3JH-fNreVEhGwW-6078c039-cf2a-4b0c-8915-2a1c8bcf1bcb.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[G2 Scraper](https://apify.com/pro100chok/g2-scraper)** — Software reviews and ratings
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-1X9ZSt3urlN5pptAO-Nyu91cUNLw-9d50dd18-fb66-400e-85c7-413263018bd8.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Website Contact Scraper](https://apify.com/pro100chok/extract-emails)** — Emails, phones and socials from any site

**E-commerce**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-kaoNl8Aod80TyV1eZ-HMK8j1Pfit-6e72a428-ec01-4d5e-b2fa-80fc6313a008.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Amazon Scraper](https://apify.com/pro100chok/amazon-scraper)** — Products, reviews, sellers
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-mBQQG1GlbZlkcetR5-Sp5ocRGs6r-6f2bcafa-1c0e-4c89-9fdc-6efdfb753328.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[AliExpress Scraper](https://apify.com/pro100chok/aliexpress-scraper)** — Products, variants, reviews
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-BVortsfndmSNtL0Mq-dikv6hX55m-4b204a93-b28c-4951-aa28-d72b1650900c.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Alibaba Scraper](https://apify.com/pro100chok/alibaba-scraper)** — Products and suppliers
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-FzXXmis0AF2EYyyii-3mCXVBAxXh-bc40a62c-b130-486d-b676-ab123126497f.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[TikTok Shop Scraper](https://apify.com/pro100chok/tiktok-shop-scraper-usage)** — Products, reviews, GMV

**Social media & SEO**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-7fyOP12UzHR5Zlnc5-dmuwhmDVDL-31c88c54-bc51-4767-8869-e9ce3ea0ae19.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Instagram Scraper](https://apify.com/pro100chok/instagram-scraper-all-in-one)** — Profiles, posts, reels, comments
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-ZgqqqOMdHEIwgTqnj-smOdJXIFrK-fbb7fc8c-edf1-44ae-8f44-ca61ca354c26.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[YouTube Scraper](https://apify.com/pro100chok/youtube-scraper-all-in-one)** — Videos, comments, channel emails
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Uj3ZMPy7TF7mva0cS-PQKMvMQ1RE-45304cad-3e49-4813-9159-c5068e73bdf3.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Reddit Scraper](https://apify.com/pro100chok/reddit-scraper-all-in-one)** — Posts, comments, media
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-pC8gsptNv2RwJm0QE-W9y7YrikQ2-Gemini_Generated_Image_sweylvsweylvswey.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Ahrefs SEO Scraper](https://apify.com/pro100chok/ahrefs-seo-tools)** — DR, backlinks, keywords
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-aqPbs3KeH9aD8b22w-7uDzdHiNaF-9358b53b-cd06-42f2-bc53-6c5ac7d9558c.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[SimilarWeb Scraper](https://apify.com/pro100chok/similarweb-scraper)** — Website traffic and rankings

**Tags:** expedia scraper, expedia api, expedia hotels scraper, expedia hotel prices, expedia reviews scraper, expedia room rates, hotel price monitoring, hotel data api, travel data scraper, hotel reviews api, expedia data extraction, hotel rate shopping, expedia search scraper, hotel photos scraper, hotel amenities data, unofficial expedia api

# Changelog

This Actor's version history is a separate document: https://apify.com/pro100chok/expedia-all-in-one-scraper/changelog.md

# Actor input Schema

## `destinations` (type: `array`):

Cities, neighborhoods, landmarks, airports or hotel names, exactly as you would type them into Expedia's search box (e.g. "Paris", "Times Square, New York", "Hotel Des Arts Paris Montmartre"). Each destination is searched separately.

## `startUrls` (type: `array`):

Expedia.com hotel pages (…h123456.Hotel-Information) and/or search result pages (…/Hotel-Search?…). Search URLs keep every filter you applied on the site (stars, price, amenities, property type, guest rating, sort…).

## `hotelIds` (type: `array`):

Expedia property IDs (the number after ".h" in a hotel URL, e.g. 891081).

## `maxItems` (type: `integer`):

Maximum number of hotels to save for each destination or search URL.

## `checkIn` (type: `string`):

YYYY-MM-DD, or relative like "7 days" (from today). Prices and room rates are quoted for these dates. Default: 14 days from today.

## `checkOut` (type: `string`):

YYYY-MM-DD, or relative like "8 days". Default: one night after check-in.

## `adults` (type: `integer`):

Number of adult guests in each room.

## `childrenAges` (type: `array`):

Age of each child (0–17), one entry per child. Leave empty for no children.

## `rooms` (type: `integer`):

Number of rooms to book (each with the adults above).

## `sortBy` (type: `string`):

Order of the search results.

## `minPrice` (type: `integer`):

Lowest price to include, in USD.

## `maxPrice` (type: `integer`):

Highest price to include, in USD.

## `starRatings` (type: `array`):

Only properties with these star ratings.

## `minGuestRating` (type: `string`):

Only properties rated at least this high by guests.

## `freeCancellationOnly` (type: `boolean`):

Only properties offering fully refundable rates.

## `includeDetails` (type: `boolean`):

Address, coordinates, description, star rating, all photos, amenities, policies, check-in/out, FAQ, nearby places, rating breakdown and AI review summary.

## `includeRooms` (type: `boolean`):

Every room type with its photos, amenities and all rate plans (price, cancellation terms, payment options, extras like breakfast, rooms left) for your dates.

## `includeReviews` (type: `boolean`):

Attach guest reviews (text, rating, date, traveler type, stay, liked/disliked, photos, hotel response) to each hotel. Billed per review.

## `maxReviewsPerHotel` (type: `integer`):

Maximum number of reviews to collect for each hotel.

## `reviewsSort` (type: `string`):

Which reviews come first.

## `reviewsTravelerType` (type: `string`):

Only reviews written by this kind of traveler.

## `reviewsFrom` (type: `string`):

Stop collecting reviews older than this date (works with "Most recent" order).

## `maxConcurrency` (type: `integer`):

How many hotels are processed at the same time.

## `proxyConfiguration` (type: `object`):

Proxy servers used for requests. Residential proxies are recommended.

## Actor input object example

```json
{
  "destinations": [
    "Paris"
  ],
  "maxItems": 10,
  "adults": 2,
  "rooms": 1,
  "sortBy": "RECOMMENDED",
  "freeCancellationOnly": false,
  "includeDetails": true,
  "includeRooms": true,
  "includeReviews": false,
  "maxReviewsPerHotel": 20,
  "reviewsSort": "newest",
  "reviewsTravelerType": "all",
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `location` (type: `string`):

No description

## `details` (type: `string`):

No description

## `rooms` (type: `string`):

No description

## `reviews` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "destinations": [
        "Paris"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("pro100chok/expedia-all-in-one-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "destinations": ["Paris"],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("pro100chok/expedia-all-in-one-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "destinations": [
    "Paris"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call pro100chok/expedia-all-in-one-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pro100chok/expedia-all-in-one-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Zm0Nysyj0zljEX8aC/builds/v82kJ5vcKlUpFBvQF/openapi.json
