TripAdvisor Places Scraper - Most Comprehensive avatar

TripAdvisor Places Scraper - Most Comprehensive

Pricing

from $0.08 / 1,000 places

Go to Apify Store
TripAdvisor Places Scraper - Most Comprehensive

TripAdvisor Places Scraper - Most Comprehensive

🔥 ~$0.1/1K places 🔥 Collect TripAdvisor hotels, restaurants, and things to do for cities and supported neighborhoods.

Pricing

from $0.08 / 1,000 places

Rating

0.0

(0)

Developer

Kai

Kai

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

3

Monthly active users

2 days ago

Last modified

Share

TripAdvisor Places Scraper

Collect TripAdvisor places and bookable experiences as structured dataset records. Each place has a consistent set of identity, rating, location, contact, and ranking fields.

Use it to compare places across destinations, build research lists, monitor ratings and rankings, or collect exact places and bookable experiences.

Start with a destination

Search Boston and collect up to 30 results for each default place type:

{
"locations": ["Boston"]
}

The default place types are restaurants, hotels, and attractions.

Choose a search boundary

ModeLocation inputRules
areaCity, town, island, region, geography ID, geography URL, or Neighborhood, CityA street address or postal code is not a reliable area boundary. Do not supply boundingBox.
boundingBoxExactly one parent geographySupply all four edges. north must be greater than south, and east must be greater than west. The box cannot cross the antimeridian.
nearbyExact POI IDs or URLsboundingBox is optional. Place filters and non-auto place sorts are not accepted.
exactExact POI or product IDs or URLsPlace type is detected from the target. boundingBox, place filters, and non-auto place sorts are not accepted.

Collect an exact place

Collect one place when you already have its TripAdvisor ID:

{
"searchMode": "exact",
"locations": ["5572598"],
"dataPreset": "coreProfiles"
}

Choose place types and limits

placeTypes accepts restaurant, hotel, and attraction. Things-to-do searches can also return attraction_product records.

maxItemsPerType applies to each location and place-type pair. For example, two locations and three place types create six independent result limits.

Refine places with TripAdvisor labels

Each filter has a field and one or more values. Use the labels that TripAdvisor shows for the destination. The Actor resolves the current choices for that search and verifies an explicit sort.

FilterAccepted field values
restaurantFiltersawards, bookable, cuisines, diets, dishes, establishmentTypes, meals, michelinAwards, minimumRating, neighborhoods, openNow, features, priceLevels, styles
hotelFiltersamenities, brands, classes, deals, distance, neighborhoods, popular, price, minimumRating, rewards, styles, travelerAwards, types
attractionFilterstags, awards, categories, categoryGroup, neighborhoods, openNow, minimumRating, duration
reviewFilterslanguage, rating, tripType, month, text

This bounding-box search collects Italian restaurants in central Boston:

{
"searchMode": "boundingBox",
"locations": ["Boston"],
"boundingBox": {
"north": 42.373,
"south": 42.338,
"east": -71.03,
"west": -71.09
},
"placeTypes": ["restaurant"],
"maxItemsPerType": 30,
"restaurantFilters": [
{ "field": "cuisines", "values": ["Italian"] }
],
"restaurantSort": "popularity"
}

Filter and sort choices can change by destination, place type, category, date, and earlier filters. An unavailable or ambiguous label is rejected instead of being replaced silently.

Choose the data to collect

PresetData collected
listingsListing-card data without profile details.
coreProfilesListing data plus core profile details.
fullProfilesCore profile details plus applicable about, amenities, menu, opening-hours, health-and-safety, and AI review-summary sections.

New runs in Apify Console prefill dataPreset: "listings". API and CLI inputs that omit dataPreset use the legacy includeDetails: true default and select coreProfiles.

Use additionalData for paginated collections and optional sections. This example adds filtered reviews, photos, tips, questions, and attraction products:

{
"locations": ["Boston"],
"placeTypes": ["attraction"],
"maxItemsPerType": 10,
"attractionFilters": [
{ "field": "categoryGroup", "values": ["Tours"] }
],
"attractionSort": "travelerFavorite",
"reviewFilters": [
{ "field": "language", "values": ["English"] },
{ "field": "rating", "values": ["5"] }
],
"dataPreset": "fullProfiles",
"additionalData": [
"reviews",
"tips",
"questionsAndAnswers",
"photos",
"attractionProducts"
],
"maxReviewsPerPlace": 10,
"maxTipsPerPlace": 10,
"maxQuestionsPerPlace": 10,
"maxPhotosPerPlace": 10,
"maxAttractionProductsPerPlace": 10
}

Add dates and party details

Travel context requests booking offers for the matching place type. Dates must be today or later.

Hotel stay

{
"locations": ["Boston"],
"placeTypes": ["hotel"],
"additionalData": ["bookingOffers"],
"currency": "USD",
"unitLength": "MILES",
"hotelStay": {
"checkIn": "2099-09-10",
"checkOut": "2099-09-12",
"rooms": [
{ "adults": 2, "childrenAges": [8] }
]
}
}

Restaurant reservation

{
"locations": ["Boston"],
"placeTypes": ["restaurant"],
"additionalData": ["bookingOffers"],
"restaurantReservation": {
"date": "2099-09-10",
"time": "19:00",
"partySize": 2
}
}

Attraction visit

{
"locations": ["Boston"],
"placeTypes": ["attraction"],
"additionalData": ["bookingOffers", "importantInformation"],
"attractionVisit": {
"date": "2099-09-10",
"travelers": [
{ "ageBand": "ADULT", "count": 2 },
{ "ageBand": "CHILD", "count": 1 }
]
}
}

The 2099 dates keep these syntax examples valid as future-date requests. They are not availability examples.

Input reference

FieldTypeDefaultDescription
searchModestringareaarea, boundingBox, nearby, or exact.
locationsstring[]requiredArea names or geography IDs in area mode; exact TripAdvisor POI IDs or URLs in nearby and exact modes.
boundingBoxobjectnonenorth, south, east, and west coordinates. It is required in boundingBox mode and optional in nearby mode.
placeTypesstring[]restaurant, hotel, attractionOne or more place types. Attraction searches can also return bookable attraction_product items.
maxItemsPerTypeinteger30Maximum unique items for each location and selected place type. Minimum: 1.
restaurantFiltersobject[][]Restaurant rules with field and one or more human-readable values.
restaurantSortstringautoauto, popularity, relevance, or featured.
hotelFiltersobject[][]Hotel rules with field and one or more human-readable values.
hotelSortstringautoauto, bestValue, popularity, priceLowToHigh, or distanceFromCityCenter.
attractionFiltersobject[][]Attraction rules with field and one or more human-readable values.
attractionSortstringautoauto, travelerFavorite, travelerRanked, featured, either price order, or either duration order.
reviewFiltersobject[][]Review rules used when additionalData includes reviews. Each rule has field and values.
dataPresetstringderived from includeDetailslistings, coreProfiles, or fullProfiles. If set, it takes precedence over includeDetails.
additionalDatastring[][]Optional profile sections and collections. See the output variants below.
maxReviewsPerPlaceinteger20Maximum reviews for each place when reviews are selected. Minimum: 1.
maxTipsPerPlaceinteger20Maximum traveller tips for each place. Minimum: 1.
maxQuestionsPerPlaceinteger20Maximum questions and answers for each place. Minimum: 1.
maxPhotosPerPlaceinteger20Maximum photos for each place. Minimum: 1.
maxAttractionProductsPerPlaceinteger20Maximum attraction products for each place. Minimum: 1.
includeDetailsbooleantrueLegacy control used only when dataPreset is absent.
currencystringUSDUppercase three-letter currency code for price requests.
unitLengthstringMILESMILES or KILOMETERS.
hotelStayobjectnonecheckIn, checkOut, and rooms. Each room has adults and optional childrenAges.
restaurantReservationobjectnonedate, local time in HH:mm format, and partySize.
attractionVisitobjectnoneVisit date and unique travelers entries with ageBand and count. Age bands are ADULT, CHILD, INFANT, SENIOR, and YOUTH.

Hotel-specific input example

This example shows the hotel-specific input paths that are not used in the task examples above. The input table covers the other place types and options.

Place output

The default dataset contains one normalised item per place. This example uses values from a retained public response for Ostra. It has no optional enrichment fields.

Base place fields

FieldTypeDescription
contentIdstringTripAdvisor place or product ID.
contentTypestringrestaurant, hotel, attraction, or attraction_product.
namestringDisplay name.
urlstring or nullPublic TripAdvisor URL.
routeUrlstring or nullTripAdvisor route path.
sourceLocationobjectSearch input and resolved location context. See its child fields below.
listPositionnumber or nullPosition shown in the result list. It is null outside a list search.
ratingnumber or nullOverall traveller rating.
reviewCountnumber or nullNumber of reviews reported for the place.
primaryInfostring or nullPrimary list-card summary.
secondaryInfostring or nullSecondary list-card summary.
photoUrlsstring[]List-card image URLs.
labelsstring[]Visible list-card labels.
badgeobject or nullVisible badge. See its child fields below.
descriptionstring or nullProfile description.
tagsstring[]TripAdvisor categories and tags.
addressstring or nullDisplay address.
latitude, longitudenumber or nullCoordinates.
neighborhoodobject or nullPlace neighborhood. See its child fields below.
ownerStatusstring or nullClaimed-owner status.
contactLinksobject[]Public contact links. See their child fields below.
rankingobject or nullCategory ranking. See its child fields below. An attraction_product item can have no Things-to-do category rank.
ratingHistogramobject or nullRating distribution. See its child fields below.
subRatingsobject or nullType-specific rating names and numeric values. Rating names can vary by place type.
detailStatusstringnot_requested, fetched, or failed.
additionalDataobject, optionalRequested optional data, keyed by feature name.
additionalDataErrorsobject, optionalFeature names mapped to error-message strings.
scrapedAtstringUTC collection timestamp.

Nested fields

ObjectChild fields and types
sourceLocationinput and name strings; geoId number or null; neighborhood object or null; optional mode value area, boundingBox, nearby, or exact. The neighborhood child has string id and name.
badgetype string; year string or null.
neighborhoodid number; name string.
contactLinks[]label string or null; url string.
rankingtext string; position, total, and geoId numbers or null; contentType string or null.
ratingHistogramNumeric excellent, veryGood, average, poor, and terrible counts.
subRatingsOpen rating-name keys with numeric values.

additionalData variants

Child fields inside optional sections can change. Each feature value contains the section objects that TripAdvisor returns. A requested feature normally returns an array. An unavailable but valid feature returns an empty array. If a feature is absent, additionalDataErrors can contain its source message.

KeyApplies toReturned value
aboutPlace profilesAbout and profile-tab section objects.
amenitiesHotelsAmenity section objects; empty for other place types.
menuRestaurantsMenu section objects; empty for other place types.
openingHoursPlace profilesOpening-hours section objects.
healthSafetyPlace profilesHealth-and-safety section objects.
aiReviewSummaryPlace profiles where availableAI review-summary section objects.
reviewsPlace profilesReview-card objects, limited by maxReviewsPerPlace.
tipsPlace profiles where availableTraveller-tip objects, limited by maxTipsPerPlace.
questionsAndAnswersPlace profiles where availableQuestion-and-answer objects, limited by maxQuestionsPerPlace.
questionFormMetadataPlace profiles where availableQuestion-form metadata objects.
photosPlace profilesPhoto objects, limited by maxPhotosPerPlace.
attractionProductsAttractionsProduct objects, limited by maxAttractionProductsPerPlace; empty for other place types.
importantInformationAttractions and exact attraction productsFor an attraction, objects have productId and open sections; for an exact product, the value is the returned section array. Empty for other place types.
bookingOffersHotels, restaurants, and attractionsHotel offer sections, restaurant reservation or time-slot objects, or attraction product offers. The variant follows contentType; a non-applicable type returns an empty array.

fullProfiles adds the applicable about, amenities, menu, openingHours, healthSafety, and aiReviewSummary sections. It does not add paginated collections such as reviews or photos. importantInformation also requests the related attraction products. A matching hotelStay, restaurantReservation, or attractionVisit requests bookingOffers for that place type.

The retained Ostra detail response contains the following opening-hours values. This selected example shows how a returned section is placed under additionalData.openingHours; section objects can contain more source fields.

{
"additionalData": {
"openingHours": [
{
"stableDiffingType": "RestaurantOpenHoursSection",
"iconName": "clock",
"text": {
"string": "Closed now"
},
"todaySchedule": [
{
"string": "Opens 5:30 PM - 9:00 PM"
}
]
}
]
}
}

Limits

  • maxItemsPerType applies to each location and place-type pair. Duplicate list cards are removed before the limit is applied.
  • Filter and sort choices depend on the destination and place type. Each requested label must match one current choice unambiguously.
  • Review, tip, question, photo, and attraction-product limits apply separately to each place.
  • Travel dates must be today or later. Hotel checkout must follow check-in. Each room accepts 1–20 adults and child ages 0–17. Reservation party size and each traveller count accept 1–100.
  • Optional data depends on the place type and TripAdvisor availability. Check additionalDataErrors when a requested feature is absent; the base place item remains available.