TripAdvisor Places Scraper - Most Comprehensive
Pricing
from $0.08 / 1,000 places
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
24 days ago
Last modified
Categories
Share
What does TripAdvisor Places Scraper do?
TripAdvisor Places Scraper collects normalized restaurants, hotels, attractions, and bookable attraction products from TripAdvisor. Enter a city for a quick run, or use a bounding box, a nearby-place search, or exact TripAdvisor place links when you need tighter control. Results are saved as one dataset record per place, with optional reviews, photos, profile sections, and booking data.
Running it on Apify adds API access, schedules, integrations, proxy rotation, run monitoring, and exportable datasets without requiring your own server. The default input is intentionally simple: enter a location and start the Actor.
Why use TripAdvisor Places Scraper?
- Compare tourism and hospitality supply across destinations.
- Build prospect or research lists for restaurants, hotels, and attractions.
- Monitor ratings, review totals, badges, and TripAdvisor category positions.
- Collect exact POIs or bookable attraction products without broadening them to a city.
- Add only the data you need, from lightweight listings to reviews, photos, amenities, questions, or current booking offers.
- Use human-readable filters instead of maintaining TripAdvisor's changing internal filter IDs.
The Actor follows TripAdvisor's geography definitions and response-provided pagination, then removes duplicate places before applying your result limit.
How to use TripAdvisor Places Scraper
- Open the Actor's Input tab.
- In section 1. Where do you want to search?, keep Cities, regions, or neighborhoods for a normal destination search and enter a value such as
Boston. - Choose the place types and maximum result count in section 2.
- Optionally refine results, request extra data, or enter trip dates in sections 3–5.
- Start the run, then open the default dataset to inspect or export the records.
The smallest input is:
{"locations": ["Boston"]}
Existing four-field integrations remain supported. includeDetails is now hidden in the Console, but it still controls the preset when dataPreset is omitted:
{"locations": ["Boston"],"placeTypes": ["restaurant", "hotel", "attraction"],"maxItemsPerType": 30,"includeDetails": true}
For new integrations, prefer dataPreset because it states the intended data depth directly. The Console prefills listings so a first run finishes quickly; choose coreProfiles or fullProfiles when profile-level fields are required.
Input
The Console groups inputs into five workflow sections.
1. Where do you want to search?
searchMode defaults to area, and locations is required.
| Mode | Accepted location input | Constraints |
|---|---|---|
area | City, town, island, region, numeric geography ID, geography URL, or Neighborhood, City | Street addresses and postal codes are not reliable area boundaries. |
boundingBox | Exactly one parent geography plus boundingBox | Requires north, south, east, and west; north must exceed south, east must exceed west, and the box cannot cross the antimeridian. |
nearby | Exact TripAdvisor POI IDs or URLs | boundingBox is optional. A city ID is not a nearby anchor. |
exact | Exact TripAdvisor POI or product IDs/URLs | Place type is inferred. Bounding boxes are not accepted. |
Neighborhood input is resolved against TripAdvisor's current filters for each selected place type. If the neighborhood is unavailable or ambiguous, the Actor reports an error rather than collecting the entire parent city.
2. What places do you need?
placeTypes defaults to restaurants, hotels, and Things to do. maxItemsPerType defaults to 30 and is applied to every location × selected type stream. Things-to-do results can include attraction_product records when a category group such as Tours switches TripAdvisor to bookable inventory. Exact mode can also return an exact product.
3. Refine the results
restaurantFilters, hotelFilters, and attractionFilters accept human-readable values such as Italian, Free Wifi, 4, or Tours. Type-specific sort fields default to TripAdvisor's recommended order. reviewFilters applies only when reviews are requested.
Place filters and list ordering apply to area and boundingBox searches. They are rejected in nearby and exact modes, where TripAdvisor does not provide the same per-type list contract. Review filters still work whenever reviews are requested.
Filters and sorts are dynamic: their available values can change by destination, place type, selected category, dates, and earlier filters. The Actor discovers the current choices, maps your labels to them, and rejects unavailable or ambiguous choices. It also verifies explicit sorting rather than accepting TripAdvisor's silent fallback.
4. What data should be collected?
Choose one dataPreset:
listingsfor the fastest list-card collection and the Console's initial selection.coreProfilesfor authoritative place details. Legacy API calls that omitdataPresetretain this behavior throughincludeDetails: true.fullProfilesfor core details plus every applicable non-paginated profile section.
additionalData can add about text, amenities, menus, opening hours, health and safety, AI review summaries, reviews, tips, questions and answers, question-form metadata, photos, attraction products, product information, or booking offers. Separate maximum fields cap reviews, tips, questions, photos, and attraction products per place.
5. Dates, guests, prices, and units
currency defaults to USD, and unitLength defaults to MILES. Optional hotelStay, restaurantReservation, and attractionVisit objects request context-specific availability. Dates must be valid and today or later, hotel checkout must follow check-in, and attraction traveler age bands must be unique. Each context requests offers only for its matching place type. Offer availability remains dependent on TripAdvisor and the selected dates, destination, and place.
An advanced bounding-box request can look like this:
{"searchMode": "boundingBox","locations": ["Boston"],"boundingBox": {"north": 42.373,"south": 42.338,"east": -71.03,"west": -71.09},"placeTypes": ["restaurant"],"restaurantFilters": [{ "field": "cuisines", "values": ["Italian"] }],"restaurantSort": "popularity","dataPreset": "coreProfiles","additionalData": ["reviews", "openingHours", "photos"],"maxReviewsPerPlace": 10,"maxPhotosPerPlace": 10}
Output
Each dataset item contains stable place fields and, when requested, optional feature data. A shortened record is:
{"contentId": "5572598","contentType": "restaurant","name": "Ostra","url": "https://www.tripadvisor.com/Restaurant_Review-g60745-d5572598-Reviews-Ostra.html","sourceLocation": {"input": "Boston","geoId": 60745,"name": "Boston","neighborhood": null,"mode": "area"},"rating": 4.6,"reviewCount": 1140,"address": "1 Charles St S, Boston, MA 02116","detailStatus": "fetched","additionalData": {"openingHours": {},"reviews": []},"additionalDataErrors": {"aiReviewSummary": "Not available for this place"},"scrapedAt": "2026-08-11T12:00:00.000Z"}
additionalData is keyed by requested feature. additionalDataErrors contains safe per-feature messages when optional enrichment fails; the base place record is retained. Fields that were not requested can be absent. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data table
| Field | Description |
|---|---|
contentId, contentType | TripAdvisor identity and family: restaurant, hotel, attraction, or exact attraction product |
name, url | Place name and canonical public TripAdvisor URL |
sourceLocation | Original input, resolved geography, optional neighborhood, and search mode |
listPosition | Displayed result-card position, not an authoritative category rank |
rating, reviewCount | Current overall traveler rating and review count |
primaryInfo, secondaryInfo | Type-specific list summary text |
photoUrls, labels, badge | Listing images and visible distinctions |
description, tags | Profile description and TripAdvisor tags |
address, latitude, longitude | Place address and coordinates when available |
contactLinks, ownerStatus | Public contacts and claimed-owner status |
ranking | Category-ranking text and context when TripAdvisor supplies it |
ratingHistogram, subRatings | Rating distribution and type-specific subratings |
detailStatus | Whether core details were skipped, fetched, or failed |
additionalData | Optional feature results keyed by the requested feature name |
additionalDataErrors | Safe errors for optional features that could not be fetched |
scrapedAt | UTC collection timestamp |
How much does it cost to scrape TripAdvisor places?
Cost depends on the number of location/type streams, result caps, data preset, and optional paginated collections. A listings-only run makes fewer requests than a full profile run with reviews and photos. Under pay-per-event pricing, each persisted place produces one place event and each review object saved in additionalData.reviews produces one review-scraped event. The aggregate reviewCount field is informational and is never charged as if those reviews were downloaded. Start with one location and a small limit, inspect the result and cost, and increase scope only when needed.
Tips and advanced options
- Use
listingswhile testing filters, then enable deeper profiles for a smaller final run. - Copy filter labels as users see them on TripAdvisor; raw numeric filter IDs are intentionally unsupported.
- Use a bounding box for a known rectangle. Do not approximate an address or postal code with area mode.
- Keep review, question, photo, and product caps modest because each can require multiple pages.
- Optional data is type-specific. A menu may not apply to a hotel, and attraction products may not exist for every attraction.
- Result pages can repeat promoted or overlapping cards; deduplication occurs before the cap is applied.
FAQ, disclaimers, and support
Can I search an address or postal code as an area? No. TripAdvisor content search is not a dependable postal geocoder. Use a verified geography, a bounding box, or an exact POI.
Why was my filter or sort rejected? TripAdvisor exposes different choices for different searches, and attraction categories can change the available sort family. The Actor rejects a choice it cannot verify instead of silently changing your request.
Why is optional data missing? Some features are unavailable for particular place types or dates. When a requested operation fails, check additionalDataErrors; core list data is retained whenever possible.
Are attraction products ranked as Things to do? Not necessarily. attraction_product represents bookable tour or experience inventory and can lack an attraction-category rank.
Web scraping may be regulated by website terms and applicable law. Use the Actor responsibly, collect only data you are permitted to process, and avoid unnecessary request volume. For problems or feature requests, use the Actor's Issues tab with a sanitized input example. Custom location modes or output fields can be discussed there as a custom solution.