Tripadvisor Places & Ratings Data Scraper avatar

Tripadvisor Places & Ratings Data Scraper

Pricing

from $0.75 / 1,000 tripadvisor place results

Go to Apify Store
Tripadvisor Places & Ratings Data Scraper

Tripadvisor Places & Ratings Data Scraper

Scrape structured Tripadvisor place data from city searches, category pages, or public place URLs. Collect hotels, restaurants, attractions, and activities with ratings, review counts, rankings, contacts, hours, cuisine or amenities, primary images, and optional photos in one normalized dataset.

Pricing

from $0.75 / 1,000 tripadvisor place results

Rating

0.0

(0)

Developer

DataScraperES

DataScraperES

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Collect structured Tripadvisor place data from a search or public Tripadvisor URL. Get one normalized Dataset item per unique hotel, restaurant, attraction, or activity, with ratings, rankings, addresses, contact fields, hours, primary media, and optional additional photos.

What this Actor does

Tripadvisor Places & Ratings Data Scraper accepts a free-text query for any country, city, region, or locality, plus public Tripadvisor place/category URLs from localized country domains. A place URL returns one place; a category URL is paginated up to your configured limit; a locality query discovers a balanced set of hotels, restaurants, and attractions/activities before hydrating each result with its detailed public listing data.

Each Dataset item is keyed by Tripadvisor's stable location ID and can include the name, type, category, coordinates, rating, review count, ranking, price fields, address, phone, website, opening hours, awards, amenities, cuisine or activity fields, the primary photo, and optional additional photos. The Actor also preserves the small review preview that Tripadvisor includes in a place-detail response; it does not paginate the complete review history.

The result is designed for travel research, local SEO, market analysis, directories, and lead research. It does not add unrelated third-party enrichment, and it keeps the public input bounded so a run can be estimated before it starts.

Use cases

  • Build structured hotel, restaurant, attraction, and activity datasets for any destination or locality.
  • Enrich a known Tripadvisor place URL with contact, ranking, category, and location data.
  • Compare local businesses, ratings, review counts, awards, and opening information.
  • Create travel directories, destination inventories, or local SEO research tables.
  • Add a bounded selection of public place photos to a normalized Dataset.

How to use

  1. Open the Actor in Apify Console.
  2. Replace the example in query with your country, city, region, locality, or place. If you prefer a direct Tripadvisor URL, clear query and paste it under startUrls instead.
  3. Set maxItemsPerQuery, or enable collectAll with a maxTotalItemsPerRun safety cap, and choose any categories, localization, and photo options you need.
  4. Click Start and open the Dataset when the run finishes.

The simplest run is to replace the prefilled Madrid, Spain search and click Start. The advanced language, currency, and photo options can remain at their defaults.

Input

Use one of the two entry paths: a search in query, or public Tripadvisor URLs in startUrls. The Console opens with a Madrid example so a first run needs only one edit and a click. If you use startUrls, clear the example search first so the run does not process both entry paths accidentally. query accepts any country or locality supported by Tripadvisor, for example Madrid, Spain, hotels in Tokyo, Japan, or museums in Paris, France. Include the country after a comma when a locality name is ambiguous. startUrls accepts up to 20 public Tripadvisor URLs from country-specific domains such as tripadvisor.es, tripadvisor.fr, or tripadvisor.co.jp. Place URLs containing a location ID return one item; category URLs containing a geographic ID are paginated up to maxItemsPerQuery, including common localized category slugs.

maxItemsPerQuery defaults to 20 and accepts 1 through 10,000 for each query or URL target when collectAll is disabled. The Actor deduplicates places across all targets in the run by id, so the final Dataset can contain fewer items than the sum of individual target limits. The hotel, restaurant, and attraction switches are enabled by default; they apply to geographic searches and category URLs. A direct place URL is always processed because it is an explicit target.

Set collectAll to true when you want pagination to continue until Tripadvisor has no more source pages. In this mode, maxItemsPerQuery is not the stopping point: maxTotalItemsPerRun is the hard safety cap for the complete run, defaults to 10,000, and accepts up to 50,000. The Actor stops at source exhaustion or that cap, whichever comes first. Use a lower cap for exploratory runs and increase it only when you expect a large Dataset and budget for it.

language defaults to en and accepts a language code such as en, es, fr, or de; regional forms are normalized to their two-letter language code. currency defaults to USD and is normalized to uppercase. maxPhotosPerPlace defaults to 0; set it from 1 to 50 to fetch additional photos.

For a direct-place URL example, use this input and set maxItemsPerQuery to 1:

{
"startUrls": [
{
"url": "https://www.tripadvisor.com/Attraction_Review-g60750-d104122-Reviews-San_Diego_Zoo-San_Diego_California.html"
}
],
"maxItemsPerQuery": 1,
"language": "en",
"currency": "USD",
"maxPhotosPerPlace": 0
}
{
"query": "Madrid, Spain",
"startUrls": [],
"maxItemsPerQuery": 20,
"collectAll": false,
"maxTotalItemsPerRun": 10000,
"includeHotels": true,
"includeRestaurants": true,
"includeAttractions": true,
"language": "en",
"currency": "USD",
"maxPhotosPerPlace": 0
}

This complete input contract includes every public property from the Actor schema.

Output

The Actor writes one normalized place object per unique location to the default Dataset. Export the Dataset as JSON, JSONL, CSV, Excel, XML, or another format supported by Apify. A run is successful only when the requested collection produces usable data. If the source does not provide enough usable data, the run can fail instead of presenting an incomplete collection as successful; rows that were already delivered remain in the Dataset.

This is the complete Dataset item from a real successful execution:

{
"id": "104122",
"name": "San Diego Zoo",
"type": "ATTRACTION",
"category": "attraction",
"categoryName": "Attraction",
"subcategory": [
{
"key": "48",
"name": "Zoos & Aquariums"
},
{
"key": "57",
"name": "Nature & Parks"
},
{
"key": "61",
"name": "Outdoor Activities"
}
],
"description": "The San Diego Zoo pioneered cageless exhibits and offers travelers a fun and informative experience. Featuring over 4000 animals, the park gives you a peek into the wildlife of several ecosystems, from deserts to rainforests. Ride the tour bus, which crosses three quarters of the zoo’s area, and learn more about the animals from the guide as you view them in their natural habitats. You can also hop on the Skyfari gondola lift to see the entire park from above. Tickets to the San Diego Zoo that also cover the San Diego Zoo Safari Park in Escondido are available for a discount. – Tripadvisor",
"locationString": "San Diego, California",
"latitude": 32.735275,
"longitude": -117.14911,
"rating": 4.6,
"numReviews": 31948,
"ranking": "#3 of 946 things to do in San Diego",
"rankingPosition": 3,
"rankingDenominator": 946,
"rankingCategory": "attraction",
"rankingGeo": "San Diego",
"rankingGeoId": "60750",
"rawRanking": 4.941324234008789,
"price": null,
"priceLevel": null,
"isClosed": false,
"isLongClosed": false,
"openNowText": "Closed Now",
"address": "2920 Zoo Drive Balboa Park, San Diego, CA 92101",
"addressObj": {
"street1": "2920 Zoo Drive",
"street2": "Balboa Park",
"city": "San Diego",
"state": "CA",
"country": "United States",
"postalcode": "92101"
},
"phone": "+1 619-231-1515",
"email": null,
"website": "https://zoo.sandiegozoo.org/",
"webUrl": "https://www.tripadvisor.com/Attraction_Review-g60750-d104122-Reviews-San_Diego_Zoo-San_Diego_California.html",
"sourceUrl": "https://www.tripadvisor.com/Attraction_Review-g60750-d104122-Reviews-San_Diego_Zoo-San_Diego_California.html",
"ancestors": [
{
"subcategory": [
{
"key": "municipality",
"name": "Municipality"
}
],
"name": "San Diego",
"abbrv": null,
"location_id": "60750"
},
{
"subcategory": [
{
"key": "state",
"name": "State"
}
],
"name": "California",
"abbrv": "CA",
"location_id": "28926"
},
{
"subcategory": [
{
"key": "country",
"name": "Country"
}
],
"name": "United States",
"abbrv": null,
"location_id": "191"
}
],
"photo": {
"id": "326743187",
"caption": "",
"uploadedDate": "2018-06-25T16:03:16-0400",
"publishedDate": "2018-06-25T16:03:16-0400",
"helpfulVotes": 12,
"images": {
"small": {
"width": "250",
"url": "https://media-cdn.tripadvisor.com/media/photo-f/13/79/b4/93/20180426-104539-largejpg.jpg",
"height": "141"
},
"thumbnail": {
"width": "50",
"url": "https://media-cdn.tripadvisor.com/media/photo-t/13/79/b4/93/20180426-104539-largejpg.jpg",
"height": "50"
},
"original": {
"width": "1280",
"url": "https://media-cdn.tripadvisor.com/media/photo-m/1280/13/79/b4/93/20180426-104539-largejpg.jpg",
"height": "720"
},
"large": {
"width": "1024",
"url": "https://media-cdn.tripadvisor.com/media/photo-w/13/79/b4/93/20180426-104539-largejpg.jpg",
"height": "576"
},
"medium": {
"width": "550",
"url": "https://media-cdn.tripadvisor.com/media/photo-s/13/79/b4/93/20180426-104539-largejpg.jpg",
"height": "309"
}
},
"user": {
"userId": null,
"memberId": "0",
"type": "user"
}
},
"image": "https://media-cdn.tripadvisor.com/media/photo-m/1280/13/79/b4/93/20180426-104539-largejpg.jpg",
"photos": [],
"photoCount": 16780,
"awards": [],
"hours": {
"week_ranges": [
[
{
"open_time": 540,
"close_time": 1200
}
],
[
{
"open_time": 540,
"close_time": 1200
}
],
[
{
"open_time": 540,
"close_time": 1080
}
],
[
{
"open_time": 540,
"close_time": 1080
}
],
[
{
"open_time": 540,
"close_time": 1080
}
],
[
{
"open_time": 540,
"close_time": 1080
}
],
[
{
"open_time": 540,
"close_time": 1200
}
]
],
"timezone": "America/Los_Angeles"
},
"amenities": [],
"hotelClass": null,
"hotelClassAttribution": null,
"specialOffers": null,
"roomTips": [],
"cuisine": [],
"dietaryRestrictions": [],
"mealTypes": [],
"establishmentTypes": [],
"dishes": [],
"subCuisine": [],
"menuWebUrl": null,
"booking": {
"provider": "Viator",
"url": "https://www.tripadvisor.com/Commerce?url=https%3A%2F%2Fwww.viator.com%2Ftours%2Fx%2Fy%2Fd0-3097ZOO_TR%3Feap%3Dmobile-web-11383%26aid%3Dtripen1&partnerKey=1&urlKey=0b13a8a4fc06f7f7b&logme=true&uidparam=refid&attrc=true&Provider=Viator&area=TOP&slot=1&cnt=1&geo=104122&clt=TM&from=api&nt=true"
},
"reserveInfo": null,
"ratingHistogram": {
"count_1": "247",
"count_2": "485",
"count_3": "1949",
"count_4": "6031",
"count_5": "23236"
},
"reviews": [],
"query": null,
"language": "en",
"currency": "USD",
"scrapedAt": "2026-09-24T12:46:36.020239+00:00"
}

The most useful fields are id, name, type, category, rating, numReviews, addressObj, latitude, longitude, webUrl, photo, photos, and the category-specific arrays. Fields that Tripadvisor does not expose for a place remain null or empty arrays.

Pricing

The Actor uses pay-per-event pricing. You are charged only for each unique place item successfully saved to the Dataset. Searches, URLs, failed place requests, and runs with no delivered place rows do not create a place-result charge. If a run reaches its maximum charge limit, it returns only the rows that fit within that limit.

Apify tierPrice per delivered placeEquivalent price per 1,000 delivered places
FREE$0.001$1.00
BRONZE$0.0009$0.90
SILVER$0.0008$0.80
GOLD$0.00075$0.75
PLATINUM$0.00075$0.75
DIAMOND$0.00075$0.75

The billable unit is one delivered place; the per-1,000 amounts are comparison equivalents. Apify determines the tier and applies its configured price. When source collection is incomplete, successfully saved place rows are still billable and the run ends as failed so partial data is not mistaken for a complete collection.

ActorBest for
Google Maps Business Scraper | $1 per 1,000Comparing Tripadvisor hotels, restaurants, and attractions with business listings from Google Maps.
Google Maps Reviews Scraper | Ratings & RepliesAdding Google Maps review text, ratings, and owner replies to a cross-platform place research workflow.

Limits and data quality

  • maxItemsPerQuery accepts up to 10,000 places for each query or URL target when collectAll is disabled, and startUrls accepts at most 20 URLs.
  • With collectAll enabled, pagination continues until the source is exhausted or maxTotalItemsPerRun is reached. That safety cap defaults to 10,000 and accepts up to 50,000 places per run.
  • A direct place URL returns one record. A category URL and a geographic search can return fewer records when the source has fewer usable places, a category is disabled, or a target has no results.
  • Results are deduplicated across the complete run by Tripadvisor location_id.
  • Search ordering and category contents can change with query wording, language, currency, location, source updates, and time.
  • Opening hours, phone numbers, websites, rankings, awards, photos, prices, amenities, and category-specific fields are source-dependent and may be missing.
  • maxPhotosPerPlace adds a bounded photo request and can increase runtime; 0 keeps only the primary photo included in the place detail.
  • Tripadvisor may temporarily restrict access or return incomplete data. If the Actor cannot complete the requested collection, the run fails rather than silently treating missing records as complete; any rows already delivered remain available in the Dataset.
  • The reviews array contains only review previews exposed with the place detail. It is not a complete review archive and does not apply review-language, rating, translation, or date filters.
  • Date-sensitive hotel offers, AI review summaries, nearby expansion, tags, and lead-enrichment options are outside this first places contract.
  • Persistent source failures or incomplete detail hydration fail the run rather than claiming Completed with silently missing records.

Frequently asked questions

Can I submit a normal Tripadvisor place URL?

Yes. Use a public place URL containing its Tripadvisor location ID, normally the d segment in a hotel, restaurant, attraction, or activity URL. The Actor extracts the ID and requests the structured place details directly.

Can a search return hotels, restaurants, and attractions together?

Yes. When a search resolves to a geographic location, the three category switches control which groups are included. The Actor interleaves enabled categories before hydrating details so a small limit does not consume the whole Dataset with only one category.

Does this Actor collect all Tripadvisor reviews?

No. It returns the small review preview that can be included in place details. Use the separate review-focused Actor when the goal is complete review pagination and review filters.

Why did my run return fewer items than the limit?

The limit is a maximum, not a guarantee. The source may expose fewer eligible places, filters may disable categories, duplicates may be removed, or the source may return incomplete data. A persistent incomplete collection fails the run so it is not mistaken for a complete result.

Are prices and hotel offers guaranteed?

No. The Actor preserves price fields when Tripadvisor exposes them for a place and requested currency, but it does not promise date-specific availability or booking offers.

Responsible use

Use this Actor only for lawful purposes and in accordance with applicable laws, privacy obligations, database rights, and the terms governing the source data. You are responsible for deciding whether collecting, storing, combining, and using the output is permitted for your use case.

Protect exported Datasets, minimize retention, avoid excessive collection, and honor applicable deletion or opt-out requests.

Support

If a run does not behave as expected, open an issue in the Actor's Issues tab. Include the run ID, a sanitized reproducible input, the expected result, and the observed result. Do not post credentials, cookies, or confidential information.

For Python, JavaScript and cURL integration examples, see the public companion repository.