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

2 days ago

Last modified

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, available 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, address, phone, website, available opening hours and cuisine, the primary photo, and optional additional photos. Compatibility keys such as awards, hotel amenities, offers, and other unavailable details remain null or empty rather than being invented. 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.

This is the exact input for the representative destination result below:

{
"query": "Madrid, Spain",
"maxItemsPerQuery": 3,
"includeHotels": true,
"includeRestaurants": true,
"includeAttractions": true
}
{
"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 valid search can complete with no matching places. If a requested source or optional photo collection cannot finish, the run reports incomplete collection and preserves places that were already saved.

Open Run report in the output to inspect RUN_REPORT in the default Key-value Store. It records status, collectionComplete, and the verified placesSaved count. A count that cannot be verified remains null. completed confirms collection finished; stopped_by_budget means the spending limit stopped collection while confirmed results remain available; partial identifies a collection stopped by source availability or the collection time budget; incomplete identifies a critical failure or uncertain work. A partial collection can finish with a successful execution status while collectionComplete stays false. Optional photos that cannot be collected do not discard the place's base data.

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

{
"id": "23800273",
"name": "Zuma Madrid",
"type": "RESTAURANT",
"category": "restaurant",
"categoryName": "Restaurant",
"subcategory": [],
"description": "Enjoy a world-renowned contemporary Japanese dining experience in Madrid. Located in the glamorous Salamanca district, right next to three of the city's premier luxury shopping streets, the restaurant offers Izakaya-style Japanese cuisine. Savor dishes such as miso-marinated black cod wrapped in a hoba leaf, delicious sushi, yellowtail sashimi, and much more.",
"locationString": null,
"latitude": 40.426426,
"longitude": -3.689548,
"rating": 4.0,
"numReviews": 170,
"ranking": "#1,440 of 13,732 Restaurants in Madrid",
"rankingPosition": 1440,
"rankingDenominator": 13732,
"rankingCategory": "Restaurants",
"rankingGeo": "Madrid",
"rankingGeoId": null,
"rawRanking": null,
"price": null,
"priceLevel": null,
"isClosed": null,
"isLongClosed": null,
"openNowText": null,
"address": "P.º De La Castellana, 2 Hotel Fénix Gran Meliá - The Leading Hotels of the World, 28046 Madrid Spain",
"addressObj": null,
"phone": "+34 911 98 88 80",
"email": null,
"website": "https://www.zumarestaurant.com/en/madrid?utm_source=infobuttonclick&utm_medium=home&utm_campaign=tripadvisor",
"webUrl": "https://www.tripadvisor.com/Restaurant_Review-g187514-d23800273-Reviews-Zuma_Madrid-Madrid.html",
"sourceUrl": null,
"ancestors": [],
"photo": {
"id": "621005772",
"caption": "Jumbo Shrimps",
"uploadedDate": "2022-07-29T13:39:36Z",
"publishedDate": "2022-07-29T13:39:36Z",
"helpfulVotes": 1,
"images": {
"thumbnail": {
"url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/25/03/cb/cc/jumbo-shrimps.jpg?w=100&h=100&s=1",
"width": 0,
"height": 0
},
"small": {
"url": "https://media-cdn.tripadvisor.com/media/photo-l/25/03/cb/cc/jumbo-shrimps.jpg",
"width": 150,
"height": 150
},
"medium": {
"url": "https://media-cdn.tripadvisor.com/media/photo-i/25/03/cb/cc/jumbo-shrimps.jpg",
"width": 180,
"height": 200
},
"large": {
"url": "https://media-cdn.tripadvisor.com/media/photo-s/25/03/cb/cc/jumbo-shrimps.jpg",
"width": 550,
"height": 367
},
"original": {
"url": "https://media-cdn.tripadvisor.com/media/photo-w/25/03/cb/cc/jumbo-shrimps.jpg",
"width": 1024,
"height": 683
}
}
},
"image": "https://media-cdn.tripadvisor.com/media/photo-w/25/03/cb/cc/jumbo-shrimps.jpg",
"photos": [],
"photoCount": 313,
"awards": [],
"hours": {
"openNowText": "Open now",
"today": [
"1:00 PM - 2:00 AM"
]
},
"amenities": [],
"hotelClass": null,
"hotelClassAttribution": null,
"specialOffers": null,
"roomTips": [],
"cuisine": [
"Japanese",
"Sushi",
"Asian",
"Grill",
"Healthy",
"Dining bars"
],
"dietaryRestrictions": [
"Gluten free options"
],
"mealTypes": [],
"establishmentTypes": [],
"dishes": [],
"subCuisine": [],
"menuWebUrl": null,
"booking": null,
"reserveInfo": null,
"ratingHistogram": null,
"reviews": [
{
"id": "1080874578",
"title": "I recommend everyone to visit this place because it is truly wonderful and worth it.",
"summary": "Everything was wonderful: the staff, the place, and the delicious food. I recommend visiting this place to enjoy it.",
"rating": 5,
"publishedDate": null,
"url": null,
"machineTranslated": null
},
{
"id": "1078882041",
"title": "Terrible experience",
"summary": "Very poor value for money. Slow service, inexperienced. They got the order wrong several times.Portions the size of tapas. They charged us for two dishes that we ordered but they didn't bring. A total rip-off.Not recommended, I will not return.",
"rating": 1,
"publishedDate": null,
"url": null,
"machineTranslated": null
},
{
"id": "1070605893",
"title": "Fantastic food and service.",
"summary": "Incredible food quality, good service, and spectacular desserts.",
"rating": 5,
"publishedDate": null,
"url": null,
"machineTranslated": null
}
],
"query": "Madrid, Spain",
"language": "en",
"currency": "USD",
"scrapedAt": "2026-10-21T16:48:40.742202+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 report identifies a partial collection even when the execution ends without error. Critical delivery, billing or recovery uncertainty remains an error.

ActorBest for
Tripadvisor Reviews Scraper with Place DataCollecting full Tripadvisor review pages and review-specific filters after discovering places.
Google Maps Business Scraper | $1 per 1,000Comparing Tripadvisor places with business listings from Google Maps.
Google Maps Reviews Scraper | Ratings & RepliesAdding Google Maps ratings, review text and owner replies for cross-platform analysis.

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, photos and cuisine are source-dependent and may be missing. Compatibility keys for unsupported details, including awards, hotel amenities and offers, remain null or empty.
  • 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 source cannot complete the requested collection, the Actor stops with a partial report and keeps confirmed results available. Partial output is never labeled as a complete collection.
  • 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, unavailable optional photos and incomplete detail hydration produce an explicit partial report. Invalid input, corrupt state and uncertain delivery or billing remain critical errors.

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 source problem produces a partial report; inspect collectionComplete before treating the Dataset as 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.