TripAdvisor URL: Hotels, Restaurants, Attractions, Reviews
Pricing
from $4.00 / 1,000 tripadvisor url parsed (location / lightweight)s
TripAdvisor URL: Hotels, Restaurants, Attractions, Reviews
Paste any TripAdvisor URL - hotel, restaurant, attraction, listing, reviews page or destination - and the actor auto-detects the type and returns the full structured payload. The only universal TripAdvisor URL parser on Apify Store.
Pricing
from $4.00 / 1,000 tripadvisor url parsed (location / lightweight)s
Rating
0.0
(0)
Developer
Data Forge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
TripAdvisor URL Parser
The only universal TripAdvisor URL parser on Apify Store. Drop in any TripAdvisor URL - hotel detail, restaurant page, attraction listing, reviews page, geo landing - and the actor auto-detects the page type and returns the matching structured payload. Optionally pulls reviews for every hotel / restaurant / attraction URL in the same run, so one input covers both the place and its reviews. No more wiring up six different scrapers to handle six URL patterns. One actor, one input, one consistent dataset.
Built for growth teams scraping competitor inventory, travel-research analysts pulling thousands of locations, and engineers who want one API for every TripAdvisor surface. Drop a URL → get a row (or, with reviews enabled, a row plus N more).
What it does
- Accepts 1 to 500 TripAdvisor URLs in a single run.
- Auto-detects the page type from the URL pattern - 8 supported types (hotel detail, restaurant detail, attraction detail, reviews, hotels listing, restaurants listing, attractions listing, geo landing).
- Works across 9 locales:
.com,.co.uk,.de,.fr,.es,.it,.ca,.com.au,.co.jp. - Optional reviews fan-out: for any hotel / restaurant / attraction URL the actor can paginate reviews (up to 5,000 per place) and emit each review as its own dataset row - ready for SQL / Pandas / Excel without extra parsing.
- Survives mid-batch failures with
stopOnError=false(default): failing URLs are recorded inline witherror_codeand the run continues. - Per-event pricing - only pay for what you actually scrape. Cheap geo lookups stay cheap, reviews bill per row.
Input
{"urls": ["https://www.tripadvisor.com/Hotel_Review-g60763-d1218720-Reviews-The_Plaza-New_York_City_New_York.html","https://www.tripadvisor.com/Restaurants-g187147-Paris_Ile_de_France.html","https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"],"stopOnError": false,"maxReviewsPerEntity": 20,"reviewLanguage": "en","reviewSort": "most_relevant"}
| Field | Type | Required | Description |
|---|---|---|---|
urls | array of strings | ✅ | 1-500 TripAdvisor URLs from any of the 9 supported locales |
stopOnError | boolean | optional, default false | If true, abort the run on the first failing URL. Default skips and records the failure inline |
maxReviewsPerEntity | integer 0-5000 | optional, default 0 | When set above 0, every hotel / restaurant / attraction URL also fans out into per-review rows (up to this many per place). Each review charges url-parsed-review at $0.001. Ignored for destination / listing / reviews-page URLs |
reviewLanguage | string | optional, default en | TripAdvisor language code (e.g. en, fr, de, es, it, ja, zh) or all. Applied only when maxReviewsPerEntity > 0 |
reviewSort | enum | optional, default most_relevant | One of: most_relevant, newest, oldest, highest, lowest. Applied only when maxReviewsPerEntity > 0 |
Output
One dataset row per input URL (plus one row per fanned-out review when maxReviewsPerEntity > 0). On success, type and data are populated; on failure, error_code and error_message are populated instead.
Detail row example
{"input_url": "https://www.tripadvisor.com/Hotel_Review-g60763-d1218720-Reviews-The_Plaza-New_York_City_New_York.html","type": "hotel_detail","data": {"location_id": 1218720,"name": "The Plaza","rating": 4.5,"review_count": 1487,"address": "768 5th Ave, New York City, NY 10019","amenities": ["Free Wifi", "Bar/lounge", "Concierge"],"rooms": [{"name": "Deluxe King", "price_min": 895}],"photos": [{"url": "https://media-cdn.tripadvisor.com/.../photo.jpg"}]}}
Per-review row example (when maxReviewsPerEntity > 0)
{"input_url": "https://www.tripadvisor.com/Hotel_Review-g60763-d1218720-Reviews-The_Plaza-New_York_City_New_York.html","type": "review","parent_type": "hotel_detail","parent_location_id": "1218720","data": {"rating": 5,"title": "Outstanding stay","text": "Beautiful suite, attentive staff…","language": "en","traveler_type": "couples","published_date": "2026-04-12","helpful_votes": 3,"photos": []}}
parent_location_id is what you JOIN on to link reviews back to their parent hotel / restaurant / attraction row in the same dataset.
Console table view
| 🔗 URL | 🏷 Type | 📦 Payload | 🪪 Parent location ID | ❌ Error |
|---|---|---|---|---|
…/Hotel_Review-…/The_Plaza.html | hotel_detail | 17 fields incl. rooms + photos | - | - |
…/Hotel_Review-…/The_Plaza.html | review | one review (rating, text, language, …) | 1218720 | - |
…/Restaurants-g187147-… | restaurants_listing | paginated restaurant cards | - | - |
…/Attraction_Review-…/Eiffel_Tower.html | attraction_detail | 14 fields incl. awards | - | - |
…/Hotel_Review-…/BrokenLink.html | - | - | - | NOT_FOUND |
What data contains by type
| Type | Payload |
|---|---|
hotel_detail | 17 fields: location_id, name, rating, review_count, address, amenities[], rooms[], photos[], lowest_offer + OTA prices |
restaurant_detail | 15 fields: id, name, cuisine, price_range, hours, location, photos[] |
attraction_detail | 14-15 fields: id, name, category, duration, awards[], reviews_count |
review | one review row (rating, title, text, language, traveler_type, published_date, helpful_votes, photos) with parent_type + parent_location_id set |
reviews | paginated reviews page (when the URL itself is a …-Reviews-orN-… page) |
hotels_listing / restaurants_listing / attractions_listing | full SERP for the geo with filters applied |
location | destination metadata (name, geoId, region, country, photos) |
Error codes
error_code | Meaning |
|---|---|
NOT_FOUND | TripAdvisor returned no payload for this URL (deleted listing, broken slug, regional removal) |
UPSTREAM_BLOCKED | Anti-bot challenge wasn't bypassed - retry the run later |
INVALID_URL | URL didn't match any known TripAdvisor pattern |
INTERNAL_ERROR | Something else broke - see error_message |
More TripAdvisor tools
Part of the USP Ultimate TripAdvisor suite - pick the actor that fits the job:
- TripAdvisor Hotels, Restaurants & Cruises Scraper - search a whole destination across 5 verticals (hotels, restaurants, things to do, vacation rentals, cruises).
- TripAdvisor Reviews Scraper - bulk-pull every review from a list of hotels, restaurants or attractions.
Prefer the raw API across all 21 TripAdvisor endpoints with your own key? See the USP Ultimate TripAdvisor API on RapidAPI.
Need help? Enterprise plans? Custom scraping?
I personally support every customer - drop a message on any channel.