TripAdvisor Scraper — Restaurants, Hotels & Reviews avatar

TripAdvisor Scraper — Restaurants, Hotels & Reviews

Pricing

from $1.50 / 1,000 results

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

TripAdvisor Scraper — Restaurants, Hotels & Reviews

Unofficial TripAdvisor API — no key, no login. Scrape restaurants, hotels, attractions and reviews by city, geoId or URL. Export ratings, prices, cuisine, address, coordinates, amenities and review text to JSON, CSV or Excel.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

TripAdvisor Scraper — Restaurants, Hotels, Attractions & Reviews API

Scrape TripAdvisor at scale without an API key, without logging in, and without maintaining a headless browser. Pull thousands of restaurants, hotels and attractions for any city, extract full ratings, prices, cuisine, amenities, addresses, phone numbers and GPS coordinates, and download user reviews in bulk — then export everything to JSON, CSV, Excel or Google Sheets.

This is the fast, structured TripAdvisor API alternative you reach for when the official Content API is too limited, too slow to get approved, or simply does not expose the fields you need.

What does TripAdvisor Scraper do?

TripAdvisor Scraper turns any TripAdvisor location into clean, tabular data. Give it a city name (e.g. New York City), a geoId (e.g. g60763) or a TripAdvisor URL, pick a mode, and it paginates through the listings for you. Under the hood it reads TripAdvisor's own embedded structured data (schema.org JSON-LD blocks such as ItemList, Restaurant and LodgingBusiness) plus the public location autocomplete endpoint, so the output is accurate and matches what you see on the site.

Requests are sent with a realistic Chrome fingerprint over Apify residential proxies, rotating a fresh IP on every retry, which keeps the scraper flowing past TripAdvisor's Cloudflare protection. There is no API key, no login and no cookie to manage — you paste a place and press start. Because it walks real pagination (30 places or 10 reviews per page), a single run can save hundreds to tens of thousands of rows.

Who is it for?

  • Market researchers & analysts benchmarking hospitality, dining and tourism across cities or countries.
  • Data & ML teams building recommendation engines, price models, sentiment datasets or POI databases.
  • Hotel, restaurant & travel brands monitoring their own and competitors' ratings, reviews and rankings.
  • Lead-generation & sales teams collecting business names, phone numbers, websites and addresses of venues in a target area.
  • Travel-tech, agencies & content creators who need up-to-date destination data (top restaurants, must-see attractions, best hotels) to power apps, guides and dashboards.

Use cases

  • Restaurant intelligence — export every restaurant in a city with cuisine type, price band, rating, review count and coordinates to map the local dining scene.
  • Hotel competitor tracking — pull all hotels in a destination with star-equivalent price levels, amenities and review volume, and re-run on a schedule to watch changes.
  • Review mining & sentiment — download thousands of reviews for a specific hotel or attraction (title, full text, star rating, trip type, date, helpful votes, owner responses) for NLP and reputation analysis.
  • Attractions & itinerary building — grab the top things to do for any city, ranked, with ratings and categories, to seed a travel app or content site.
  • Local business lead lists — turn "coffee shops in Rome" or "hotels in Bali" into a spreadsheet of names, phones, websites and addresses for outreach.

Why use TripAdvisor Scraper?

  • Keyless & login-free — no TripAdvisor developer account, no OAuth, no cookies. Just a location and go.
  • 35+ rich fields — ratings and review counts as real numbers, prices, cuisine, dietary/amenity lists, GPS coordinates, phone, website, opening hours, ranking position and more.
  • Bulk pagination — thousands of POIs per city and thousands of reviews per venue in one run, bounded by a simple maxResults.
  • Six modes in one actor — restaurants, hotels, attractions, location search, reviews and batch details, all sharing one clean input.
  • Flexible targeting — accept a plain city name (auto-resolved via TripAdvisor autocomplete), a geoId, or any TripAdvisor URL you already have.
  • Export anywhere — results land in an Apify dataset you can download as JSON, CSV, Excel or feed straight into Google Sheets, Zapier, Make, or your own code via API.

What data can you extract?

Each mode emits flat rows tagged with a _mode field so you can mix runs in one dataset and pivot on it. Points of interest (restaurants / hotels / attractions / details) share the POI fields below; reviews and locations have their own shapes.

Point-of-interest fields (restaurants, hotels, attractions, details)

FieldTypeDescription
locationIdstringTripAdvisor POI id (the digits after -d in a URL).
namestringVenue name.
typestringRESTAURANT, HOTEL or ATTRACTION.
ratingnumberAverage TripAdvisor bubble rating (e.g. 4.8).
numReviewsnumberTotal number of reviews.
priceLevelnumberPrice band as a number (count of $, 1–4).
priceRangestringRaw price string (e.g. $$ - $$$).
cuisinearrayCuisine tags (restaurants), e.g. ["Italian","Sicilian"].
amenitiesarrayAmenity list (hotels), e.g. ["Free WiFi","Pool"].
rankingPositionnumberPosition within its city category (e.g. 1).
rankingStringstringFull ranking text, e.g. #1 of 13,663 Restaurants in New York City.
categorystringDetected category (from the ranking line).
address / addressStreetstringStreet address.
citystringCity / locality.
regionstringState / region.
countrystringCountry.
postalCodestringPostal / ZIP code.
latitudenumberGPS latitude.
longitudenumberGPS longitude.
phonestringPhone number.
websitestringOfficial website (when listed).
emailstringContact email (details mode, when present).
photoUrlstringPrimary photo URL.
photoCountnumberNumber of photos (details mode).
acceptsReservationsboolWhether reservations are accepted (restaurants).
travelerChoiceboolTravelers' Choice award flag.
awardsarrayAward labels (details mode).
hoursarrayOpening hours (day, opens, closes).
menuUrlstringExternal menu link (restaurants).
urlstringCanonical TripAdvisor URL.
scrapedAtstringISO timestamp of the scrape.

Review fields (reviews mode)

FieldTypeDescription
reviewIdstringTripAdvisor review id (e.g. r1068526713).
locationNamestringThe venue the review belongs to.
ratingnumberReviewer's star rating (1–5).
titlestringReview title.
textstringFull review body.
publishedDatestringWhen the review was written.
stayDatestringDate of stay / experience.
tripTypestringBusiness / Couples / Family / Friends / Solo.
usernamestringReviewer's profile handle.
userContributionsnumberReviewer's total contributions.
helpfulVotesnumberHelpful votes on the review.
ownerResponsestringBusiness owner's reply (when present).
urlstringDirect link to the review.

Location fields (search mode)

FieldTypeDescription
namestringFull location name (e.g. Paris, Ile-de-France, France).
geoIdstringTripAdvisor geo id used by the list modes.
typestringGEO, LOCATION, etc.
parentNamestringParent region / country.
latitude / longitudenumberLocation coordinates.
restaurantsUrl / hotelsUrl / attractionsUrlstringReady-made list URLs for that location.
urlstringPrimary TripAdvisor URL.

Real output example (restaurants)

{
"_mode": "restaurants",
"geoId": "60763",
"locationId": "12425739",
"name": "Piccola Cucina Estiatorio",
"type": "RESTAURANT",
"rating": 4.8,
"numReviews": 1260,
"priceLevel": 5,
"priceRange": "$$ - $$$",
"cuisine": ["Italian", "Sicilian"],
"address": "75 Thompson St, New York City, NY 10012-4345",
"city": "New York City",
"country": "United States",
"postalCode": "10012-4345",
"latitude": 40.724686,
"longitude": -74.00318,
"phone": "+1 646-781-9183",
"photoUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/2f/c1/dc/f9/let-s-eat-insieme.jpg",
"acceptsReservations": true,
"rankingPosition": 1,
"url": "https://www.tripadvisor.com/Restaurant_Review-g60763-d12425739-Reviews-Piccola_Cucina_Estiatorio-New_York_City_New_York.html",
"scrapedAt": "2026-07-23T08:07:35.784Z"
}

How to use

Option A — by location name (easiest)

  1. Set Mode to restaurants, hotels or attractions.
  2. Put a city or place in Location or search query — e.g. Barcelona. The actor resolves it to a geoId automatically.
  3. Set Max results (e.g. 500).
  4. Run. Results stream into the dataset as they are scraped.
{
"mode": "restaurants",
"query": "New York City",
"maxResults": 600
}

Option B — by URL or ID

Already have a TripAdvisor page open? Paste its URL and skip resolution.

  • List a location — paste a list URL into TripAdvisor URL:
{
"mode": "hotels",
"url": "https://www.tripadvisor.com/Hotels-g187791-Rome_Lazio-Hotels.html",
"maxResults": 300
}
  • Reviews for one venue — paste a detail URL (or a d… id):
{
"mode": "reviews",
"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93589-Reviews-The_Michelangelo_New_York-New_York_City_New_York.html",
"maxResults": 1000
}
  • Batch details — fetch full info for many venues at once:
{
"mode": "details",
"locationIds": [
"https://www.tripadvisor.com/Restaurant_Review-g60763-d12425739-Reviews-Piccola_Cucina_Estiatorio-New_York_City_New_York.html",
"d93589"
]
}

Input parameters

ParameterTypeDefaultDescription
modeselectrestaurantsrestaurants, hotels, attractions, search, reviews or details.
querystringNew York CityLocation name or free-text search (also accepts a numeric geoId).
locationIdstringGeo id (g60763) for lists, or POI id (d93589) for reviews/details.
urlstringA full TripAdvisor list or detail URL. Highest priority.
locationIdsarray[]Batch of POI ids / detail URLs for details mode.
maxResultsinteger200Upper bound on rows; drives pagination.
languageselecten-USContent locale (affects language and localized names/prices).
proxyConfigurationobjectRESIDENTIALApify proxy config. Residential is default and recommended.

Full input example:

{
"mode": "attractions",
"query": "London",
"maxResults": 500,
"language": "en-US",
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Output example (reviews)

{
"_mode": "reviews",
"locationId": "93589",
"locationName": "The Michelangelo New York",
"reviewId": "r1068526713",
"rating": 5,
"title": "Great suite & staff",
"text": "We stayed in a Grand Suite for our wedding trip to NYC last week. The staff were all very friendly, welcoming and accommodating...",
"publishedDate": "July 15, 2026",
"tripType": "Couples",
"username": "explorer_48512",
"userContributions": 12,
"helpfulVotes": 3,
"url": "https://www.tripadvisor.com/ShowUserReviews-g60763-d93589-r1068526713-The_Michelangelo_New_York-New_York_City_New_York.html",
"scrapedAt": "2026-07-23T08:20:10.101Z"
}

Tips for best results

  • Use a big city for high volume. New York, London, Paris, Rome, Bangkok and Tokyo each have thousands of restaurants and attractions — perfect for a 500–5,000 row export.
  • Resolve first if unsure. Run search on your place name to grab the exact geoId, then feed it to the list modes for precise targeting (helpful when a name is ambiguous, e.g. "Paris, Texas" vs "Paris, France").
  • Keep RESIDENTIAL proxy on. TripAdvisor is behind Cloudflare; datacenter IPs are usually blocked. The default residential config is what keeps runs green.
  • Reviews scale by page. Each review page adds ~10 reviews. Set maxResults to how many you actually need — 100 reviews ≈ 10 requests.
  • Batch details are parallelized. Paste many d… ids or detail URLs in locationIds to enrich a whole list in one run.
  • Paste URLs to skip guessing. If you already browsed to the right list or detail page, the URL is the most reliable target.
  • Numbers are numbers. rating, numReviews, latitude, longitude, helpfulVotes etc. arrive typed, so you can sort and aggregate immediately in Sheets or pandas.
  • Schedule it. Ratings, review counts and rankings move — use Apify Schedules to re-run daily/weekly and diff the results.
  • Localize. Set language to pull reviews and names in a specific locale.
  • Mind the time budget. Very large single runs stop paginating after a few minutes and save what they have; split enormous jobs across multiple runs or raise the run timeout.

Integrations

Send TripAdvisor data wherever you work. From the Apify platform you can:

  • Push results to Google Sheets, Airtable or a database.
  • Trigger Slack, email or webhook notifications when a run finishes.
  • Wire it into Zapier or Make for no-code automations.
  • Schedule recurring runs and keep a fresh dataset.
  • Chain it into larger pipelines with the Apify API and integrations.

API usage

Run the actor programmatically with the Apify API or clients.

cURL

curl -X POST "https://api.apify.com/v2/acts/logiover~tripadvisor-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"restaurants","query":"New York City","maxResults":600}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/tripadvisor-scraper').call({
mode: 'reviews',
url: 'https://www.tripadvisor.com/Hotel_Review-g60763-d93589-Reviews-The_Michelangelo_New_York-New_York_City_New_York.html',
maxResults: 1000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/tripadvisor-scraper").call(run_input={
"mode": "hotels",
"query": "Rome",
"maxResults": 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item.get("rating"), item.get("numReviews"))

Use with AI agents (MCP)

This actor works great as a tool for LLM agents via the Apify MCP server. Expose it to your assistant and ask in plain language — for example: "Get the 50 best-rated restaurants in Lisbon with their price range and coordinates, then the 200 most recent reviews for the top hotel." The agent fills the input, runs the actor and reads the structured dataset back, so it can reason over real TripAdvisor data instead of guessing.

FAQ

Do I need a TripAdvisor API key or account?

No. TripAdvisor Scraper is completely keyless and login-free. You never supply credentials, cookies or an API token — just a location, id or URL.

Which locations and countries are supported?

Any location TripAdvisor covers worldwide. Enter a city or place name in almost any market and the actor resolves it to the right geoId, or paste a TripAdvisor URL from any country.

How many results can I get in one run?

Large cities have thousands of restaurants and attractions, and popular hotels have thousands of reviews. A single run can comfortably return hundreds to tens of thousands of rows — you cap it with maxResults.

How do I get reviews for a specific hotel or restaurant?

Use reviews mode and paste the venue's detail URL (or its d… id). The actor paginates through the review pages and returns title, full text, star rating, trip type, dates, helpful votes and owner responses.

What is a geoId and where do I find it?

A geoId is TripAdvisor's location identifier — the number after -g in a URL (e.g. g60763 for New York City). You usually don't need it: type the city name and the actor resolves it. To get it explicitly, run search.

Why do some fields come back empty?

TripAdvisor doesn't publish every field for every venue (a small café may have no website, a hotel may hide its phone). Empty means "not listed", not an error. The list modes populate the core fields (name, rating, reviews, price, address, coordinates); details mode adds ranking, awards and photo counts.

Can I export to CSV, Excel or Google Sheets?

Yes. Every run writes to an Apify dataset you can download as JSON, CSV, XLSX or HTML, or push directly to Google Sheets and other integrations.

Is the data real-time?

Each run scrapes TripAdvisor live at that moment, so it reflects current ratings, prices and reviews. Schedule the actor to keep a dataset continuously up to date.

Does it work behind Cloudflare?

Yes. Requests use a realistic browser fingerprint over Apify residential proxies with a fresh IP per retry, which is what reliably gets past TripAdvisor's bot protection. Keep the residential proxy setting enabled.

Why did I get fewer rows than maxResults?

Either the location genuinely has fewer listings than you asked for, or a very large run hit the internal time budget and saved what it had. Split big jobs into multiple runs, or increase the run's memory and timeout.

How is the scraping done technically?

The actor reads TripAdvisor's own embedded structured data (schema.org JSON-LD such as ItemList, Restaurant and LodgingBusiness) and the public location autocomplete endpoint, then paginates the listing/review pages. No headless browser is needed, which keeps runs fast and cheap.

Can I use it with automation and AI tools?

Absolutely — call it from the API, schedule it, connect it to Zapier/Make/Sheets, or plug it into an AI agent through the Apify MCP server.

This scraper collects publicly available information that TripAdvisor serves to any visitor — the same listings, ratings and reviews you can see in a browser. Public-data scraping is broadly lawful, but you are responsible for how you use it. Review TripAdvisor's Terms of Service, respect copyright in review text and photos, and handle any personal data (such as reviewer names) in line with applicable privacy laws like GDPR and CCPA. Do not use the data to spam, harass or re-identify individuals. For commercial redistribution of large datasets, consider TripAdvisor's official Content API and take independent legal advice. This tool is provided for legitimate research, analytics and business-intelligence purposes.

  • Google Maps / Places scrapers — cross-reference venues with Google ratings, reviews and popular times.
  • Booking & hotel-price scrapers — combine TripAdvisor ratings with live room rates.
  • Yelp scraper — a second review source for restaurants and local businesses.
  • IMDb Scraper — another keyless, JSON-first data API by the same author for the film and TV world.