TripAdvisor URL: Hotels, Restaurants, Attractions, Reviews avatar

TripAdvisor URL: Hotels, Restaurants, Attractions, Reviews

Pricing

from $4.00 / 1,000 tripadvisor url parsed (location / lightweight)s

Go to Apify Store
TripAdvisor URL: Hotels, Restaurants, Attractions, Reviews

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

Data Forge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

6 days ago

Last modified

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?

CapabilityTripAdvisor URL Parser (Data Forge)Typical single-vertical scrapers
Setup before you parse a URLZero config - paste the URL, page type is auto-detectedPick the right per-vertical scraper first
Page types from one input8 auto-detected (hotel, restaurant, attraction, 3 listings, reviews, geo)1 vertical per actor
Entity plus its reviews in a single runYes, via maxReviewsPerEntity2 separate runs or actors
Review sort control5 orders (most_relevant, newest, oldest, highest, lowest)Fixed order or none
Review language filter14+ language codesUsually English only
Locale domains covered9 (.com, .co.uk, .de, .fr, .es, .it, .ca, .com.au, .co.jp)Mostly .com
Output shapeTyped rows (hotel_detail, review, restaurants_listing, and more)Mixed, per-tool shapes
BillingPay 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 with error_code and 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"
}
FieldTypeRequiredDescription
urlsarray of strings1-500 TripAdvisor URLs from any of the 9 supported locales
stopOnErrorbooleanoptional, default falseIf true, abort the run on the first failing URL. Default skips and records the failure inline
maxReviewsPerEntityinteger 0-5000optional, default 0When 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
reviewLanguagestringoptional, default enTripAdvisor language code (e.g. en, fr, de, es, it, ja, zh) or all. Applied only when maxReviewsPerEntity > 0
reviewSortenumoptional, default most_relevantOne 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_Plazahotel_detail17 fields incl. rooms + photos--
Hotel_Review-d1218720-The_Plazareviewone review (rating, text, language)1218720-
Restaurants-g187147-Parisrestaurants_listingpaginated restaurant cards--
Attraction_Review-d188151-Eiffel_Towerattraction_detail14 fields incl. awards--
Hotel_Review-d99999-BrokenLink---NOT_FOUND

What data contains by type

TypePayload
hotel_detail17 fields: location_id, name, rating, review_count, address, amenities[], rooms[], photos[], lowest_offer + OTA prices
restaurant_detail15 fields: id, name, cuisine, price_range, hours, location, photos[]
attraction_detail14-15 fields: id, name, category, duration, awards[], reviews_count
reviewone review row (rating, title, text, language, traveler_type, published_date, helpful_votes, photos) with parent_type + parent_location_id set
reviewspaginated reviews page (when the URL itself is a -Reviews-orN- page)
hotels_listing / restaurants_listing / attractions_listingfull SERP for the geo with filters applied
locationdestination metadata (name, geoId, region, country, photos)

Error codes

error_codeMeaning
NOT_FOUNDTripAdvisor returned no payload for this URL (deleted listing, broken slug, regional removal)
UPSTREAM_BLOCKEDAnti-bot challenge wasn't bypassed - retry the run later
INVALID_URLURL didn't match any known TripAdvisor pattern
INTERNAL_ERRORSomething 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.

Part of the Data Forge TripAdvisor suite - pick the actor that fits the job:

Support

I support customers directly - reach out on any channel for help, higher limits, or custom scraping:

Telegram WhatsApp Email