Tripadvisor Places & Ratings Data Scraper
Pricing
from $0.75 / 1,000 tripadvisor place results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 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, 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
- Open the Actor in Apify Console.
- Replace the example in
querywith your country, city, region, locality, or place. If you prefer a direct Tripadvisor URL, clearqueryand paste it understartUrlsinstead. - Set
maxItemsPerQuery, or enablecollectAllwith amaxTotalItemsPerRunsafety cap, and choose any categories, localization, and photo options you need. - 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 tier | Price per delivered place | Equivalent 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.
Related Actors
| Actor | Best for |
|---|---|
| Tripadvisor Reviews Scraper with Place Data | Collecting full Tripadvisor review pages and review-specific filters after discovering places. |
| Google Maps Business Scraper | $1 per 1,000 | Comparing Tripadvisor places with business listings from Google Maps. |
| Google Maps Reviews Scraper | Ratings & Replies | Adding Google Maps ratings, review text and owner replies for cross-platform analysis. |
Limits and data quality
maxItemsPerQueryaccepts up to 10,000 places for each query or URL target whencollectAllis disabled, andstartUrlsaccepts at most 20 URLs.- With
collectAllenabled, pagination continues until the source is exhausted ormaxTotalItemsPerRunis 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.
maxPhotosPerPlaceadds a bounded photo request and can increase runtime;0keeps 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
reviewsarray 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.