TripAdvisor Guest Review & Rating Extractor
Scrape guest reviews from any TripAdvisor hotel, restaurant, or attraction page, with rating, reviewer details, trip type, and owner replies, enriched with the place's own overall rating and address.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
startUrls | array | required | TripAdvisor place URLs or numeric location IDs. Hotel, restaurant, attraction, activity/tour, single-review and country-domain links are supported. |
maxReviews | integer | optional | Maximum number of reviews to collect from each place. The run also stops when the source runs out. |
sortBy | string | optional | Order in which reviews are collected. 'detailed' prioritizes longer reviews; 'insightful' is accepted but currently returns the same order as 'most recent' on tested places. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
startUrls | array | required | TripAdvisor place URLs or numeric location IDs. Hotel, restaurant, attraction, activity/tour, single-review and country-domain links are supported. |
maxReviews | integer | optional | Maximum number of reviews to collect from each place. The run also stops when the source runs out. |
sortBy | string | optional | Order in which reviews are collected. 'detailed' prioritizes longer reviews; 'insightful' is accepted but currently returns the same order as 'most recent' on tested places. |
ratingFilter | array | optional | Only collect reviews with these star ratings. Leave empty for all ratings. |
tripTypeFilter | array | optional | Only collect reviews from these traveler types. Leave empty for all trip types. |
monthFilter | array | optional | Only collect reviews published in these months. TripAdvisor applies this to the review submission month; the visit month is reported in travelDate. Leave empty for all months. |
reviewLanguage | array | optional | Only collect reviews available in these languages. TripAdvisor may show a machine translation; the language each review was written in is always reported. |
keyword | string | optional | Only collect reviews containing this text. Leave empty for all reviews. |
publishedAfter | string | optional | Keep reviews published on or after this date (YYYY-MM-DD). Useful for scheduled incremental runs. Leave empty for all dates. |
Download the published input schema
View complete JSON
{
"description": "Extract guest reviews from TripAdvisor hotels, restaurants, attractions and tours by URL or location ID.",
"properties": {
"keyword": {
"default": "",
"description": "Only collect reviews containing this text. Leave empty for all reviews.",
"editor": "textfield",
"prefill": "",
"title": "Keyword",
"type": "string"
},
"maxReviews": {
"default": 100,
"description": "Maximum number of reviews to collect from each place. The run also stops when the source runs out.",
"maximum": 10000,
"minimum": 1,
"prefill": 5,
"title": "Maximum reviews per place",
"type": "integer"
},
"monthFilter": {
"default": [],
"description": "Only collect reviews published in these months. TripAdvisor applies this to the review submission month; the visit month is reported in travelDate. Leave empty for all months.",
"editor": "select",
"items": {
"enum": [
"january",
"february",
"march",
"april",
"may",
"june",
"july",
"august",
"september",
"october",
"november",
"december"
],
"enumTitles": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"type": "string"
},
"prefill": [],
"title": "Months published",
"type": "array"
},
"publishedAfter": {
"default": "",
"description": "Keep reviews published on or after this date (YYYY-MM-DD). Useful for scheduled incremental runs. Leave empty for all dates.",
"editor": "textfield",
"prefill": "",
"title": "Published after",
"type": "string"
},
"ratingFilter": {
"default": [],
"description": "Only collect reviews with these star ratings. Leave empty for all ratings.",
"editor": "select",
"items": {
"enum": [
"1",
"2",
"3",
"4",
"5"
],
"enumTitles": [
"1 star",
"2 stars",
"3 stars",
"4 stars",
"5 stars"
],
"type": "string"
},
"prefill": [],
"title": "Star ratings",
"type": "array"
},
"reviewLanguage": {
"default": [],
"description": "Only collect reviews available in these languages. TripAdvisor may show a machine translation; the language each review was written in is always reported.",
"editor": "select",
"items": {
"enum": [
"en",
"es",
"fr",
"de",
"it",
"pt",
"nl",
"ru",
"ja",
"zhCN",
"zhTW",
"ko",
"ar",
"tr",
"pl",
"sv",
"da",
"no",
"fi",
"el",
"he",
"th",
"vi",
"id",
"cs",
"hu",
"sk",
"sr"
],
"enumTitles": [
"English",
"Spanish",
"French",
"German",
"Italian",
"Portuguese",
"Dutch",
"Russian",
"Japanese",
"Chinese (Simplified)",
"Chinese (Traditional)",
"Korean",
"Arabic",
"Turkish",
"Polish",
"Swedish",
"Danish",
"Norwegian",
"Finnish",
"Greek",
"Hebrew",
"Thai",
"Vietnamese",
"Indonesian",
"Czech",
"Hungarian",
"Slovak",
"Serbian"
],
"type": "string"
},
"prefill": [],
"title": "Review languages",
"type": "array"
},
"sortBy": {
"default": "mostRecent",
"description": "Order in which reviews are collected. 'detailed' prioritizes longer reviews; 'insightful' is accepted but currently returns the same order as 'most recent' on tested places.",
"editor": "select",
"enum": [
"mostRecent",
"detailed",
"insightful"
],
"enumTitles": [
"Most recent",
"Most detailed",
"Most insightful"
],
"prefill": "mostRecent",
"title": "Sort reviews by",
"type": "string"
},
"startUrls": {
"description": "TripAdvisor place URLs or numeric location IDs. Hotel, restaurant, attraction, activity/tour, single-review and country-domain links are supported.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [
"https://www.tripadvisor.com/Hotel_Review-g60763-d675616-Reviews-The_Plaza_New_York-New_York_City_New_York.html"
],
"title": "Place URLs or IDs",
"type": "array"
},
"tripTypeFilter": {
"default": [],
"description": "Only collect reviews from these traveler types. Leave empty for all trip types.",
"editor": "select",
"items": {
"enum": [
"solo",
"couples",
"family",
"friends",
"business"
],
"enumTitles": [
"Solo",
"Couples",
"Family",
"Friends",
"Business"
],
"type": "string"
},
"prefill": [],
"title": "Trip types",
"type": "array"
}
},
"required": [
"startUrls"
],
"schemaVersion": 1,
"title": "TripAdvisor Reviews Scraper Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
reviews | string | optional | Dataset containing all scraped TripAdvisor reviews. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Guest reviews with ratings, dates, traveler context, reviewer details, photos, owner responses and place metadata.",
"properties": {
"reviews": {
"description": "Dataset containing all scraped TripAdvisor reviews.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Reviews",
"type": "string"
}
},
"title": "TripAdvisor Guest Reviews Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"reviews": {
"display": {
"component": "table",
"properties": {
"helpfulVotes": {
"format": "text",
"label": "Helpful"
},
"ownerResponse": {
"format": "text",
"label": "Owner response"
},
"placeCategory": {
"format": "text",
"label": "Type"
},
"placeName": {
"format": "text",
"label": "Place"
},
"placePriceRange": {
"format": "text",
"label": "Price range"
},
"placeRanking": {
"format": "text",
"label": "Ranking"
},
"placeRating": {
"format": "text",
"label": "Place rating"
},
"placeReviewCount": {
"format": "text",
"label": "Place reviews"
},
"reviewDate": {
"format": "text",
"label": "Published"
},
"reviewRating": {
"format": "text",
"label": "Rating"
},
"reviewSubratings": {
"format": "object",
"label": "Subratings"
},
"reviewTitle": {
"format": "text",
"label": "Title"
},
"reviewUrl": {
"format": "link",
"label": "Review URL"
},
"reviewerName": {
"format": "text",
"label": "Reviewer"
},
"travelDate": {
"format": "text",
"label": "Visited"
},
"tripType": {
"format": "text",
"label": "Trip type"
}
}
},
"title": "Reviews",
"transformation": {
"fields": [
"placeName",
"placeCategory",
"placeRating",
"placeReviewCount",
"reviewTitle",
"position",
"reviewRating",
"reviewDate",
"travelDate",
"tripType",
"reviewerName",
"helpfulVotes",
"ownerResponse",
"reviewSubratings",
"placeRanking",
"placePriceRange",
"reviewUrl"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
TripAdvisor Guest Review & Rating Extractor
Collect guest reviews from TripAdvisor hotels, restaurants, attractions and tours. Get the full review text, star and category ratings, trip context, reviewer history, photos and owner replies, plus each place's ranking, price range, rating breakdown and key amenities.
What this actor does
- Collects reviews from one or more TripAdvisor places in a single run, using place URLs or numeric location IDs
- Supports hotels, restaurants, attractions and activity/tour pages, including links from any country's TripAdvisor site
- Filters by star rating, traveler type, publication month, language and review keyword
- Adds exact publish dates, visit dates, reviewer profile details, photos, per-review subratings and owner responses
- Attaches place-level ranking, price range, hotel class, rating breakdown and key amenities to every review
- Omits fields the source does not provide instead of writing empty strings
Output per review
Place fields
placeName,placeId,placeUrl,placeCategory— the reviewed place, its TripAdvisor ID, page URL and type (hotel,restaurant,attraction,activity)placeRating,placeReviewCount— overall rating and total review countplaceAddress,placeCity,placeCountry,placeLatitude,placeLongitude— location detailsplaceRanking,placeRankingPosition,placeRankingCount— ranking string and its numeric partsplacePriceRange,placePriceLevel,placeHotelClass— price and class details when shownplaceRatingBreakdown— counts forexcellent,veryGood,average,poorandterribleplaceAmenities— key amenities shown for the place
Review fields
reviewId,reviewTitle,reviewText,reviewRating— the review itself;reviewIdis TripAdvisor's review IDreviewDate,reviewPublishedAt— published date in readable and ISO formtravelDate,travelDateIso,tripType— when the reviewer traveled and with whomreviewerName,reviewerLocation,reviewerContributions,reviewerUsername,reviewerProfileUrl— reviewer detailshelpfulVotes— helpful-vote countreviewPhotos,reviewPhotoCount— review photo URLs and total photo countownerResponse,ownerResponseDate,ownerResponseAt,ownerResponseRole,ownerResponseAuthor— management reply detailsreviewSubratings— category scores such asvalue,rooms,service,cleanlinessorfoodreviewTip— a short reviewer tip when one is attachedisHighlighted,hasSafetyAlert— flags shown by TripAdvisor when presentreviewLanguage,displayLanguage,isTranslated— the language the review was written in, the language shown, and whether it was machine translatedreviewUrl— direct link to the reviewposition— the review's position in this run's collection order for that placescrapeTimestamp— when the run collected the record
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls |
array | – | TripAdvisor place URLs or numeric location IDs. Required. Supports hotel, restaurant, attraction, activity/tour, single-review and country-domain links. |
maxReviews |
integer | 100 |
Maximum reviews per place (1–10,000). The run also stops when the source runs out. |
sortBy |
string | mostRecent |
mostRecent, detailed or insightful. detailed prioritizes longer reviews; insightful is accepted but currently returns the same order as mostRecent on tested places. |
ratingFilter |
array | [] |
Keep only these star ratings (1–5). Empty means all ratings. |
tripTypeFilter |
array | [] |
Keep only these traveler types: solo, couples, family, friends, business. |
monthFilter |
array | [] |
Keep only reviews published in these months. TripAdvisor applies this to the review submission month; the visit month is reported in travelDate. Empty means all months. |
reviewLanguage |
array | [] |
Keep reviews available in these languages. The original language and translation flag are always reported. |
keyword |
string | – | Keep only reviews containing this text. |
publishedAfter |
string | – | Keep reviews published on or after this date (YYYY-MM-DD). Useful for scheduled incremental runs. |
Example: recent reviews from a hotel
{
"startUrls": [
"https://www.tripadvisor.com/Hotel_Review-g60763-d675616-Reviews-The_Plaza_New_York-New_York_City_New_York.html"
],
"maxReviews": 50,
"sortBy": "mostRecent"
}
Example: five-star family reviews about breakfast
{
"startUrls": [
"https://www.tripadvisor.com/Hotel_Review-g60763-d675616-Reviews-The_Plaza_New_York-New_York_City_New_York.html",
"https://www.tripadvisor.com/Restaurant_Review-g60763-d457808-Reviews-Daniel-New_York_City_New_York.html"
],
"maxReviews": 200,
"ratingFilter": ["5"],
"tripTypeFilter": ["family"],
"keyword": "breakfast"
}
Example: a scheduled incremental run
{
"startUrls": [
"https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-Empire_State_Building-New_York_City_New_York.html"
],
"maxReviews": 100,
"publishedAfter": "2026-10-01"
}
Example: hotels, restaurants, attractions and a tour
{
"startUrls": [
"675616",
"https://www.tripadvisor.com/Restaurant_Review-g60763-d457808-Reviews-Daniel-New_York_City_New_York.html",
"https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-Empire_State_Building-New_York_City_New_York.html",
"https://www.tripadvisor.com/AttractionProductReview-g293916-d12565966-Bangkok_Midnight_Food_Tuk_Tuk_Tour-Bangkok.html"
],
"maxReviews": 40
}
Use cases
- Reputation monitoring — keep a daily or weekly feed of new guest reviews and owner replies for your properties
- Competitive benchmarking — compare ratings, complaint themes and response rates across nearby hotels or restaurants
- Guest-experience research — study reviews by trip type, month or language for product and service decisions
- Response auditing — identify reviews without an owner reply and measure response coverage
- Travel content — collect real guest quotes, photos and ratings for destination pages and newsletters
- Data enrichment — attach place ranking, price range and rating breakdown to an existing review dataset
FAQ
Which TripAdvisor place types are supported? Hotels, restaurants, attractions and activity/tour products. You can paste a place page URL, a single-review URL, a link from any TripAdvisor country site, or a bare numeric location ID.
Do I need a TripAdvisor account, cookies or an API key? No. The actor reads publicly available review data and needs no login, user cookies or API key. It generates an anonymous session cookie at runtime.
How many reviews can I collect?
Up to maxReviews per place. The run stops early when the place has no more reviews. Very large listings can return incomplete results after roughly 6,000 reviews per place because of TripAdvisor's deep-pagination behaviour; when that happens the run finishes with an honest partial-count message instead of failing.
Why are some fields missing from a record?
TripAdvisor does not show every field for every review. Reviewer location, photos, owner replies, subratings and tips are conditional, so they are omitted when absent. Counts such as helpfulVotes and reviewPhotoCount are still included when they are zero.
What is the difference between reviewLanguage and displayLanguage?
reviewLanguage is the language the reviewer wrote in. displayLanguage is the language TripAdvisor returned the text in. When isTranslated is true, the text you receive was machine translated, and reviewLanguage still tells you the original language.
Why do activity/tour rows have fewer place fields? Activity product pages do not expose the same address, ranking, price range or amenity data as hotels, restaurants and attractions. Those records still include the product name, review count, review fields and review URL.
Can I use this for scheduled incremental runs?
Yes. Set publishedAfter to a recent date and schedule the actor. With the default most-recent sort it stops once it reaches older reviews.
Are owner responses included? Yes, when the business posted one. The response text, date, responder role and responder name are included.
Is this affiliated with TripAdvisor? No. This is an independent, third-party actor that reads publicly available TripAdvisor review data. It is not affiliated with or endorsed by TripAdvisor.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build ZjovOOA8WlEoaTuGe. Documentation is regenerated from the default published build; private drafts are not included.