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
0
Monthly active users
6 days 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 each 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 across TripAdvisor surfaces. Drop a URL → get a row (or, with reviews enabled, a row plus N more).
Why this Actor?
| Capability | TripAdvisor URL Parser (Data Forge) | Typical single-vertical scrapers |
|---|---|---|
| Setup before you parse a URL | Zero config - paste the URL, page type is auto-detected | Pick the right per-vertical scraper first |
| Page types from one input | 8 auto-detected (hotel, restaurant, attraction, 3 listings, reviews, geo) | 1 vertical per actor |
| Entity plus its reviews in a single run | Yes, via maxReviewsPerEntity | 2 separate runs or actors |
| Review sort control | 5 orders (most_relevant, newest, oldest, highest, lowest) | Fixed order or none |
| Review language filter | 14+ language codes | Usually English only |
| Locale domains covered | 9 (.com, .co.uk, .de, .fr, .es, .it, .ca, .com.au, .co.jp) | Mostly .com |
| Output shape | Typed rows (hotel_detail, review, restaurants_listing, and more) | Mixed, per-tool shapes |
| Billing | Pay per result (per parsed URL, plus $0.001 per review row) | Monthly seat or per-page |
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 modes
Three ready-to-run recipes, each mapped 1:1 to a published example task. The URL below is Le Bristol Paris - swap in any of your own TripAdvisor URLs.
1. Parse any URL (zero config)
Analyst grabbing one entity fast: paste a single URL and get a structured row back, no vertical to choose.
{"urls": ["https://www.tripadvisor.com/Hotel_Review-g187147-d188729-Reviews-Le_Bristol_Paris-Paris_Ile_de_France.html"]}
2. Parse the entity plus its reviews
Reputation team that wants the hotel record AND up to 100 of its reviews in one run - each review lands as its own row.
{"urls": ["https://www.tripadvisor.com/Hotel_Review-g187147-d188729-Reviews-Le_Bristol_Paris-Paris_Ile_de_France.html"],"maxReviewsPerEntity": 100}
3. Newest reviews first
Monitoring fresh guest sentiment: pull the 100 latest reviews sorted newest-first so today's feedback sits at the top.
{"urls": ["https://www.tripadvisor.com/Hotel_Review-g187147-d188729-Reviews-Le_Bristol_Paris-Paris_Ile_de_France.html"],"maxReviewsPerEntity": 100,"reviewSort": "newest"}
Input reference
{"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, each 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/media/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, flawless service.","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 slug | 🏷 Type | 📦 Payload | 🪪 Parent location ID | ❌ Error |
|---|---|---|---|---|
Hotel_Review-d1218720-The_Plaza | hotel_detail | 17 fields incl. rooms + photos | - | - |
Hotel_Review-d1218720-The_Plaza | review | one review (rating, text, language) | 1218720 | - |
Restaurants-g187147-Paris | restaurants_listing | paginated restaurant cards | - | - |
Attraction_Review-d188151-Eiffel_Tower | attraction_detail | 14 fields incl. awards | - | - |
Hotel_Review-d99999-BrokenLink | - | - | - | 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 |
FAQ
Is it legal to scrape TripAdvisor? The actor reads publicly visible pages only - the same information any visitor sees. You are responsible for using the output in line with TripAdvisor's terms and applicable law (for example GDPR when review text contains personal data). Data Forge does not bypass logins or paywalls.
Which URL shapes are supported?
8 page types across 9 locale domains: hotel detail (URLs beginning Hotel_Review-), restaurant detail (Restaurant_Review-), attraction detail (Attraction_Review-), the 3 listing pages (Hotels-, Restaurants-, Attractions-), reviews pages (the -Reviews-orN- variant) and geo / destination landings (Tourism-). Paste them mixed into one urls array of up to 500 items.
How fresh is the data? Each run fetches live from TripAdvisor, so you get current ratings, prices and review text at run time - nothing is served from a stale cache.
Can I schedule recurring runs?
Yes. Use the Apify Scheduler to run this actor on a cron (for example daily at 06:00, or weekly), and trigger downstream systems with webhooks or the Apify API. Pair it with reviewSort: "newest" to capture just the latest reviews each cycle.
How am I billed?
Pay per result: a per-URL event for each parsed page, plus $0.001 per review row when maxReviewsPerEntity is above 0. A geo lookup that returns no reviews stays cheap; a 500-review deep pull bills 500 rows.
How many URLs can one run take?
1 to 500 URLs per run. Keep stopOnError: false (default) so one bad URL never sinks the batch - failures are recorded inline with an error_code and the run keeps going.
Related actors
Part of the Data Forge 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 reviews at volume from a list of hotels, restaurants or attractions.
Support
I support customers directly - reach out on any channel for help, higher limits, or custom scraping:
