TripAdvisor Scraper – Hotels, Restaurants & Reviews avatar

TripAdvisor Scraper – Hotels, Restaurants & Reviews

Pricing

from $3.00 / 1,000 listing scrapeds

Go to Apify Store
TripAdvisor Scraper – Hotels, Restaurants & Reviews

TripAdvisor Scraper – Hotels, Restaurants & Reviews

Extract hotels, restaurants, and attractions from TripAdvisor — including ratings, contact info, amenities, and reviews — from search queries or direct URLs.

Pricing

from $3.00 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

🗺️ TripAdvisor Scraper – Hotels, Restaurants & Reviews

What does this TripAdvisor Scraper do?

This actor extracts structured data from TripAdvisor — hotels, restaurants, attractions, and vacation rentals — including full listing details and user reviews, all in a single run. No need to chain two separate actors. Pass a search query like "hotels in Miami" or paste direct TripAdvisor URLs and get back clean, structured JSON ready for your pipeline, CRM, or AI agent.

Why use this TripAdvisor Scraper?

  • All-in-one — listings + reviews in a single actor run (competitors require two)
  • 40% cheaper than the market leader's free tier at $0.003/listing and $0.001/review
  • B2B-ready output — includes phone, website, price range, ranking, coordinates, and amenities
  • MCP-optimized — semantic field names and consistent output shape make it work seamlessly with Claude and other AI agents
  • No login required — scrapes publicly available data without credentials

What data does this TripAdvisor Scraper extract?

Listing data (record_type: "listing")

FieldTypeDescription
namestringHotel / restaurant / attraction name
categorystringHotel, Restaurant, Attraction, Vacation Rental
addressstringFull street address
citystringCity
countrystringCountry
phonestringContact phone number
websitestringExternal website URL (decoded from TA redirect)
ratingnumberTripAdvisor rating (1.0–5.0)
review_countintegerTotal number of reviews
price_rangestring$, $$, $$$, or $$$$
price_levelinteger1–4 numeric price level
rankingstringFull ranking text, e.g. "#3 of 233 Hotels in Miami Beach"
ranking_positionintegerNumeric ranking within location
ranking_totalintegerTotal properties in category + location
descriptionstringProperty description
amenitiesarrayList of amenities (Pool, WiFi, Spa, etc.)
cuisinesarrayCuisine types (restaurants only)
awardsarrayTripAdvisor awards (Travelers' Choice, etc.)
latitudenumberGPS latitude
longitudenumberGPS longitude
photos_countintegerNumber of photos on the listing
tripadvisor_idstringTripAdvisor location ID
tripadvisor_urlstringDirect link to the TripAdvisor listing
scraped_atstringISO 8601 timestamp
source_urlstringPage URL scraped

Review data (record_type: "review")

FieldTypeDescription
listing_namestringName of the reviewed property
listing_urlstringTripAdvisor URL of the property
ratingintegerStar rating (1–5)
titlestringReview headline
textstringFull review body (including expanded "read more")
date_of_staystringWhen reviewer visited, e.g. "March 2024"
travel_typestringCouples, Families, Solo, Business, Friends
reviewer_namestringTripAdvisor username
reviewer_locationstringReviewer's home location
helpful_votesintegerHow many found this review helpful
owner_responsestringManagement's response to the review
scraped_atstringISO 8601 timestamp
source_urlstringPage URL scraped

How to use this TripAdvisor Scraper

Option 1: Search by query

{
"searchQueries": ["hotels in Miami Beach", "restaurants in Paris 1st arrondissement"],
"scrapeMode": "listings_and_reviews",
"maxResults": 20,
"maxReviewsPerListing": 15
}

Option 2: Scrape specific URLs

{
"startUrls": [
{ "url": "https://www.tripadvisor.com/Hotel_Review-g294471-d234567-Reviews-The_Setai-Miami_Beach.html" },
{ "url": "https://www.tripadvisor.com/Restaurant_Review-g60763-d1234567-Reviews-Eleven_Madison_Park-New_York_City.html" }
],
"scrapeMode": "listings_and_reviews",
"maxReviewsPerListing": 50
}

Option 3: Reviews only

{
"startUrls": [{ "url": "https://www.tripadvisor.com/Hotel_Review-g294471-d234567-Reviews-MyHotel.html" }],
"scrapeMode": "reviews_only",
"maxReviewsPerListing": 200
}

Via API (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('khadinakbar/tripadvisor-scraper').call({ // replace with your username after first push
searchQueries: ['hotels in Barcelona'],
scrapeMode: 'listings_and_reviews',
maxResults: 10,
maxReviewsPerListing: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const listings = items.filter(i => i.record_type === 'listing');
const reviews = items.filter(i => i.record_type === 'review');
console.log(`${listings.length} listings, ${reviews.length} reviews`);

Via API (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/tripadvisor-scraper").call(run_input={ # replace with your username after first push
"searchQueries": ["restaurants in Rome"],
"scrapeMode": "listings_and_reviews",
"maxResults": 15,
"maxReviewsPerListing": 10,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
listings = [i for i in items if i["record_type"] == "listing"]
reviews = [i for i in items if i["record_type"] == "review"]

Pricing

This actor uses pay-per-event pricing with two event types:

EventPriceDescription
Listing scraped$0.003Each hotel / restaurant / attraction page scraped
Review scraped$0.001Each individual user review extracted

Cost examples

TaskListingsReviewsTotal cost
Quick test550~$0.065
City hotel survey300~$0.09
Competitive review audit10200~$0.23
Monthly monitoring1001,000~$1.30

Compared to the market leader (up to $0.005/listing + $0.005/review), this actor saves you 40–80% on the same data.

Input configuration

ParameterTypeDefaultDescription
searchQueriesstring[]Search terms, e.g. "hotels in Tokyo"
startUrlsURL[]Direct TripAdvisor listing URLs
scrapeModestringlistings_and_reviewslistings_only, reviews_only, or listings_and_reviews
maxResultsinteger10Max listing pages to scrape
maxReviewsPerListinginteger20Reviews per listing (0 = skip reviews)
proxyConfigurationobjectApify residentialProxy settings — residential recommended for TripAdvisor

Proxy requirements

TripAdvisor uses anti-bot measures. Residential proxies are strongly recommended and are pre-configured by default. Using datacenter proxies may result in CAPTCHAs or blocks. The Apify residential proxy pool is included in your plan.

FAQ

Can I scrape all TripAdvisor categories?
Yes — hotels, restaurants, attractions, and vacation rentals are all supported. The actor auto-detects the listing type from the URL.

Why do some fields come back as null?
TripAdvisor doesn't display every field for every listing type. Restaurants don't have hotel amenities; not all hotels list a website. Missing values are always null, never empty strings, so your code can filter cleanly.

How many results can I scrape per run?
The actor supports up to 1,000 listings and up to 500 reviews per listing. For very large runs, schedule multiple runs with different search queries.

Will it break if TripAdvisor updates their design?
The actor uses multiple CSS selector fallbacks per field plus __NEXT_DATA__ JSON extraction, making it more resilient than single-selector scrapers. If TripAdvisor makes breaking changes, the actor will be updated promptly.

Is this actor MCP-compatible?
Yes. The output uses semantic field names and a consistent structure across all records, making it ideal for use with Claude via the Apify MCP server.

Can I run it on a schedule?
Yes — use Apify Schedules to monitor competitor pricing, track review sentiment over time, or maintain a fresh hotel database.

Use cases

Hospitality competitive intelligence — Track competitor ratings, review counts, and amenities across your market. Identify weaknesses in competitor listings to target in your marketing.

Market research — Benchmark accommodation prices and quality in new markets before expansion decisions.

Reputation management — Monitor your property's reviews in real time. Feed reviews into a sentiment analysis pipeline for early issue detection.

Travel content creation — Populate travel guides, blog posts, or recommendation engines with structured property data.

Lead generation — Extract business contact information (phone, website) for hospitality-sector B2B outreach.

AI agent pipelines — Use with Claude via Apify MCP to answer questions like "find me the top 10 hotels in Lisbon under $$$ with a pool."

Works great with

  • khadinakbar/shopify-all-in-one-scraper — Scrape hotel gift shops or destination retail alongside your property research.
  • khadinakbar/google-trends-scraper — Combine with travel search trend data for demand forecasting.

This actor extracts publicly available data from TripAdvisor. Users are responsible for compliance with applicable laws, TripAdvisor's Terms of Service, and relevant data protection regulations (GDPR, CCPA). Use responsibly and only for lawful purposes.

Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.