Expedia Reviews Scraper
Pricing
from $0.02 / 1,000 review saveds
Expedia Reviews Scraper
Export public Expedia hotel reviews, ratings, guest text, dates, photos and management responses for hospitality research.
Export public Expedia hotel reviews from property IDs or hotel URLs into a structured dataset for hospitality research, reputation analysis and review archives. Each row contains a review's available rating, guest text, author attribution, submission date, photos and management responses; some reviews contain only a rating.
Quick start
Enter one or more Expedia property IDs or hotel URLs, set a small review limit and start the Actor. Open the dataset to inspect results, then export CSV, Excel or JSON.
{"propertyIds": ["905202"],"maxReviewsPerHotel": 20,"sortBy": "NEWEST_TO_OLDEST","includeRatingsOnly": true}
At least one propertyIds or startUrls entry is needed. Reviews and fields depend on what Expedia returns; access restrictions can prevent extraction. No Expedia login or cookies are required.
Ready-to-run examples
Choose a small, preconfigured public example:
- Export newest Expedia hotel reviews — Request up to 20 newest reviews for one hotel.
- Scrape Expedia reviews from a hotel URL — Start with a hotel page and request up to 15 reviews.
- Compare Expedia reviews for two hotels — Request up to 10 reviews per property for comparison.
Output example
Illustrative shape only, not an extracted guest review. Missing scalar fields are generally null, missing collections are empty arrays, and an unavailable submission date is an empty string.
{"hotelId": "905202","propertyUrl": "https://www.expedia.com/h905202.Hotel-Information","reviewId": "illustrative-review-id","rating": 8,"ratingLabel": "8/10","superlative": null,"title": null,"text": null,"locale": "en_US","author": "Anonymous","submissionDate": "","stayDate": null,"stayDetails": null,"travelerType": null,"travelers": [],"brandType": "EXPEDIA","verifiedStay": null,"themes": [],"photos": [],"managementResponses": [],"propertyReviewSource": null,"reviewRegion": null,"sourceUrl": "https://www.expedia.com/h905202.Hotel-Information","scrapedAt": "2026-10-24T12:00:00.000Z","pageIndex": 0,"position": 1}
Who is it for?
- Hotel reputation teams: review recurring guest feedback and available management responses.
- Travel analysts: compare ratings and comments across selected properties.
- Data teams: build review archives using review IDs and collection timestamps.
Input settings
Both target lists are combined when supplied together. Detailed behavior and limitations are in each field's input-form help.
| Setting | API key | Purpose |
|---|---|---|
| Expedia property IDs | propertyIds | Numeric hotel IDs. |
| Expedia hotel URLs | startUrls | Hotel-Information or Hotel-Reviews URLs containing .h<ID>. |
| Maximum reviews per hotel | maxReviewsPerHotel | Per-property limit; form default 20. Set explicitly for bounded API calls. |
| Sort reviews | sortBy | Request newest, relevance, highest or lowest rating order. |
| Include ratings-only reviews | includeRatingsOnly | Include entries without written text; default true. |
| Review text search | search | Optional Expedia text filter. |
| Reviews per request | pageSize | Request size, from 1 to 50. |
| Traveler type | travelerType | Optional Expedia filter value. |
| Expedia locale | locale | Localized labels and dates; default en_US. |
| Runtime budget | maxRuntimeSecs | Shared time budget in seconds. |
Output fields
| Fields | Meaning |
|---|---|
hotelId, propertyUrl, reviewId | Property identity, page and review identifier. |
rating, ratingLabel, superlative | Available numeric score and Expedia labels. |
title, text, locale | Public review content; title/text can be null. |
author, submissionDate | Author attribution (Anonymous when unavailable) and localized submitted date, not a normalized ISO date. |
travelers, brandType | Available traveler labels and source brand. |
themes, photos, managementResponses | Available theme, media and reply collections; empty arrays when absent. |
stayDate, stayDetails, travelerType, verifiedStay | Reserved fields currently returned as null; not populated by this export. |
propertyReviewSource, reviewRegion | Reserved source/region metadata currently returned as null. |
sourceUrl, scrapedAt | Input provenance and collection timestamp. |
pageIndex, position | Zero-based page index and one-based source position, not a guarantee of complete coverage. |
Pricing and limits
This Actor uses pay-per-event pricing: start is charged once after input validation, and item is charged per review saved to the dataset. A started run can incur the start charge even if no reviews are saved. See the live Pricing tab for current rates and discounts.
- Start with 20 reviews per property. The per-property review limit and runtime budget bound the requested work.
- Filters and sort order depend on Expedia's response. Reviews can be edited, removed or unavailable; no complete historical archive is guaranteed.
- Completed empty extraction can return an empty dataset. A run with property failures and no saved reviews fails; saved output from completed pages/properties is preserved in mixed runs.
- Check the
SUMMARYkey-value-store record forsaved,targets,failuresandpartialbefore treating a run as complete. - The Actor is not affiliated with Expedia and does not retrieve private account data.
API usage
Use fetch_cat/expedia-reviews-scraper with a bounded input. The cURL request starts an asynchronous run; use its returned default dataset ID to retrieve saved reviews after completion.
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~expedia-reviews-scraper/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"propertyIds":["905202"],"maxReviewsPerHotel":20}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/expedia-reviews-scraper').call({propertyIds: ['905202'], maxReviewsPerHotel: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/expedia-reviews-scraper').call(run_input={'propertyIds': ['905202'], 'maxReviewsPerHotel': 20})items = client.dataset(run['defaultDatasetId']).list_items().items
Client list methods return a page of dataset items; paginate for larger exports.
MCP and AI agents
Use the official Apify MCP server setup guide. The general server at https://mcp.apify.com can discover and run Actors; the focused URL https://mcp.apify.com?tools=fetch_cat/expedia-reviews-scraper selects this Actor. Configure authentication as described in the guide.
Example request: “Export up to 20 newest reviews for Expedia property 905202 using propertyIds and maxReviewsPerHotel, then summarize the available review text.” Retrieve the dataset, check SUMMARY, and account for nullable fields before analysis. This uses Apify's server, not a separate Expedia-specific MCP service.
FAQ
Can I export Expedia reviews to CSV or Excel?
Yes. Run a bounded export, then use the dataset's export options for CSV, Excel or JSON, or retrieve results through the API.
Is this an Expedia reviews API?
It provides an Apify API workflow for public review exports. It is not an official Expedia API, and upstream availability can change.
Can I compare several hotels?
Yes. Supply multiple IDs or URLs. maxReviewsPerHotel applies to each property, and both target lists are processed when supplied together.
Why are some fields empty?
Ratings-only entries may have no written content. Missing collections are empty arrays, many scalars are null, and reserved stay/verification/source fields are not populated. Request includeRatingsOnly: false to ask Expedia for written reviews only.
What if the run saves no reviews?
Check SUMMARY and the run status. A completed request with no reviews is different from a failed request or restricted target. Confirm the property ID and filters; do not interpret inaccessibility alone as proof that the hotel or its reviews were deleted.
Related Actors
- Booking Reviews Scraper — Research guest feedback on Booking.com.
- Tripadvisor Reviews Scraper — Collect another source of travel reviews.
- Google Maps Reviews Scraper — Review feedback on local listings.
- Agoda Reviews Scraper — Compare another hotel-review source.
- Google Hotels Scraper — Explore adjacent hotel-discovery data.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run ID, a non-sensitive input example and what you expected.
Made with care for curious people, AI agents and the possibilities in data. ♥