Expedia Hotel Reviews Scraper
Pricing
from $1.39 / 1,000 expedia review extracteds
Expedia Hotel Reviews Scraper
[💰 $1.39-$1.99 / 1K] Extract structured Expedia hotel reviews, ratings, dates, traveler details, sentiments, photos, and management responses without a browser.
Pricing
from $1.39 / 1,000 expedia review extracteds
Rating
0.0
(0)
Developer
Fetch Finch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract structured Expedia hotel reviews, ratings, traveler details, dates, sentiment labels, photos, and management responses with a browserless Apify Actor. Give it one Expedia Hotel-Information URL, several hotel URLs, or a hotel ID and receive clean records in an Apify dataset.
Public example tasks
Try the ready-to-run examples:
- Test Expedia hotel reviews — a quick sanity check with a small result set.
- Compare recent Expedia hotel reviews — collect reviews from multiple hotels for comparison.
- Reviews for a specific Expedia hotel — collect reviews for one property.
- Analyze Expedia hotel ratings — inspect ratings, sentiments, and traveler details.
Highlights
- Browserless GraphQL requests; no browser session is required.
- One hotel, multiple hotels, or hotel-ID input.
- Pagination, review ordering, retries, proxy support, and optional raw diagnostics.
- Dataset records are normalized for exports, dashboards, and downstream analysis.
How to use
The smallest useful input is an Expedia hotel URL:
{"startUrl": "https://www.expedia.com/London-Hotels-London-Heathrow-Marriott-Hotel.h438504.Hotel-Information","results_wanted": 20,"review_sort": "most_recent"}
For several properties, use startUrls. You can also provide hotelId
directly; it takes precedence over the ID in a URL.
Input
| Field | Description |
|---|---|
startUrl | One Expedia Hotel-Information URL. |
startUrls | One or more Expedia hotel URLs. |
hotelId | Numeric Expedia hotel ID. |
results_wanted | Maximum review records to save; default 20. |
max_pages | Maximum GraphQL pages per hotel; default 8. |
review_sort | none, most_relevant, most_recent, highest_rating, or lowest_rating. Expedia may not expose every order for every property. |
proxyConfiguration | Apify proxy configuration. Residential proxies are recommended for Expedia. |
proxyUrl | Optional custom HTTP proxy URL for a single run. |
requestHeaders | Optional current browser headers, including an updated client-info value if needed. |
cookie | Optional current browser Cookie header. Cookies expire and should be supplied at runtime. |
graphqlRequest | Optional GraphQL request body copied from DevTools if Expedia changes its query schema. |
pageSize | Reviews requested per GraphQL page; default 20, maximum 100. |
maxRetries | Retries per page; default 3. |
saveRawResponses | Save successful GraphQL pages to the key-value store. |
includeRawReview | Include Expedia's raw review object in each item. |
includeDebugFields | Include diagnostic fields in each item. |
includeMetaRecords | Add one summary record per hotel. |
The actor also accepts the original MVP names maxReviews, maxPages,
sortBy, useApifyProxy, proxyGroups, and proxyCountryCode for backward
compatibility.
Output
By default, one dataset item is emitted per review. Depending on Expedia's response, a record can include:
hotel_id, hotel_name, review_id, rating, title, review_text,
published_date, stay_date, traveler fields, language, helpful votes,
sentiment and theme labels, guest photos, management response fields, source
URLs, and scraped_at. Missing values are omitted.
Summary records and raw response diagnostics are optional and do not create
additional review charges. Raw pages are saved as
RAW-{hotelId}-{page} in the key-value store.
Proxy and reliability
The default input uses Apify's residential proxy configuration. You can set your own rotating gateway in the Actor's environment variables:
RESIDENTIAL_PROXY_URL=http://username:password@proxy.example.com:1234
The environment variable is used when the proxyUrl input is empty. A
per-run proxyUrl takes precedence over the environment variable, and both
take precedence over Apify's built-in proxy configuration. Keep this value
secret; it is never logged by the actor.
HTTP 429 responses, server errors, timeouts, and transient GraphQL errors are
retried with exponential backoff and a new proxy session. Expedia can still
throttle or challenge requests, so availability depends on the property,
traffic, and proxy quality. If Expedia changes the request schema, provide a
fresh DevTools request body in graphqlRequest.
Pricing
This Actor uses pay-per-event pricing. The current rate is $1.99 per 1,000 reviews on the free tier, with lower rates for higher Apify subscription tiers. A small actor-start charge and the Apify minimum charge also apply. Only saved review records are billed as review events.