Vexaloom Labs

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.

FieldTypeRequiredDescription
startUrlsarrayrequiredTripAdvisor place URLs or numeric location IDs. Hotel, restaurant, attraction, activity/tour, single-review and country-domain links are supported.
maxReviewsintegeroptionalMaximum number of reviews to collect from each place. The run also stops when the source runs out.
sortBystringoptionalOrder 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
FieldTypeRequiredDescription
startUrlsarrayrequiredTripAdvisor place URLs or numeric location IDs. Hotel, restaurant, attraction, activity/tour, single-review and country-domain links are supported.
maxReviewsintegeroptionalMaximum number of reviews to collect from each place. The run also stops when the source runs out.
sortBystringoptionalOrder in which reviews are collected. 'detailed' prioritizes longer reviews; 'insightful' is accepted but currently returns the same order as 'most recent' on tested places.
ratingFilterarrayoptionalOnly collect reviews with these star ratings. Leave empty for all ratings.
tripTypeFilterarrayoptionalOnly collect reviews from these traveler types. Leave empty for all trip types.
monthFilterarrayoptionalOnly 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.
reviewLanguagearrayoptionalOnly collect reviews available in these languages. TripAdvisor may show a machine translation; the language each review was written in is always reported.
keywordstringoptionalOnly collect reviews containing this text. Leave empty for all reviews.
publishedAfterstringoptionalKeep 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.

FieldTypeRequiredDescription
reviewsstringoptionalDataset 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 count
  • placeAddress, placeCity, placeCountry, placeLatitude, placeLongitude — location details
  • placeRanking, placeRankingPosition, placeRankingCount — ranking string and its numeric parts
  • placePriceRange, placePriceLevel, placeHotelClass — price and class details when shown
  • placeRatingBreakdown — counts for excellent, veryGood, average, poor and terrible
  • placeAmenities — key amenities shown for the place

Review fields

  • reviewId, reviewTitle, reviewText, reviewRating — the review itself; reviewId is TripAdvisor's review ID
  • reviewDate, reviewPublishedAt — published date in readable and ISO form
  • travelDate, travelDateIso, tripType — when the reviewer traveled and with whom
  • reviewerName, reviewerLocation, reviewerContributions, reviewerUsername, reviewerProfileUrl — reviewer details
  • helpfulVotes — helpful-vote count
  • reviewPhotos, reviewPhotoCount — review photo URLs and total photo count
  • ownerResponse, ownerResponseDate, ownerResponseAt, ownerResponseRole, ownerResponseAuthor — management reply details
  • reviewSubratings — category scores such as value, rooms, service, cleanliness or food
  • reviewTip — a short reviewer tip when one is attached
  • isHighlighted, hasSafetyAlert — flags shown by TripAdvisor when present
  • reviewLanguage, displayLanguage, isTranslated — the language the review was written in, the language shown, and whether it was machine translated
  • reviewUrl — direct link to the review
  • position — the review's position in this run's collection order for that place
  • scrapeTimestamp — 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.

Open the step-by-step Python guide →

Source build ZjovOOA8WlEoaTuGe. Documentation is regenerated from the default published build; private drafts are not included.