TripAdvisor Scraper — Restaurants, Hotels & Reviews
Pricing
from $1.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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)
| Field | Type | Description |
|---|---|---|
locationId | string | TripAdvisor POI id (the digits after -d in a URL). |
name | string | Venue name. |
type | string | RESTAURANT, HOTEL or ATTRACTION. |
rating | number | Average TripAdvisor bubble rating (e.g. 4.8). |
numReviews | number | Total number of reviews. |
priceLevel | number | Price band as a number (count of $, 1–4). |
priceRange | string | Raw price string (e.g. $$ - $$$). |
cuisine | array | Cuisine tags (restaurants), e.g. ["Italian","Sicilian"]. |
amenities | array | Amenity list (hotels), e.g. ["Free WiFi","Pool"]. |
rankingPosition | number | Position within its city category (e.g. 1). |
rankingString | string | Full ranking text, e.g. #1 of 13,663 Restaurants in New York City. |
category | string | Detected category (from the ranking line). |
address / addressStreet | string | Street address. |
city | string | City / locality. |
region | string | State / region. |
country | string | Country. |
postalCode | string | Postal / ZIP code. |
latitude | number | GPS latitude. |
longitude | number | GPS longitude. |
phone | string | Phone number. |
website | string | Official website (when listed). |
email | string | Contact email (details mode, when present). |
photoUrl | string | Primary photo URL. |
photoCount | number | Number of photos (details mode). |
acceptsReservations | bool | Whether reservations are accepted (restaurants). |
travelerChoice | bool | Travelers' Choice award flag. |
awards | array | Award labels (details mode). |
hours | array | Opening hours (day, opens, closes). |
menuUrl | string | External menu link (restaurants). |
url | string | Canonical TripAdvisor URL. |
scrapedAt | string | ISO timestamp of the scrape. |
Review fields (reviews mode)
| Field | Type | Description |
|---|---|---|
reviewId | string | TripAdvisor review id (e.g. r1068526713). |
locationName | string | The venue the review belongs to. |
rating | number | Reviewer's star rating (1–5). |
title | string | Review title. |
text | string | Full review body. |
publishedDate | string | When the review was written. |
stayDate | string | Date of stay / experience. |
tripType | string | Business / Couples / Family / Friends / Solo. |
username | string | Reviewer's profile handle. |
userContributions | number | Reviewer's total contributions. |
helpfulVotes | number | Helpful votes on the review. |
ownerResponse | string | Business owner's reply (when present). |
url | string | Direct link to the review. |
Location fields (search mode)
| Field | Type | Description |
|---|---|---|
name | string | Full location name (e.g. Paris, Ile-de-France, France). |
geoId | string | TripAdvisor geo id used by the list modes. |
type | string | GEO, LOCATION, etc. |
parentName | string | Parent region / country. |
latitude / longitude | number | Location coordinates. |
restaurantsUrl / hotelsUrl / attractionsUrl | string | Ready-made list URLs for that location. |
url | string | Primary 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)
- Set Mode to
restaurants,hotelsorattractions. - Put a city or place in Location or search query — e.g.
Barcelona. The actor resolves it to a geoId automatically. - Set Max results (e.g.
500). - 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
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | select | restaurants | restaurants, hotels, attractions, search, reviews or details. |
query | string | New York City | Location name or free-text search (also accepts a numeric geoId). |
locationId | string | — | Geo id (g60763) for lists, or POI id (d93589) for reviews/details. |
url | string | — | A full TripAdvisor list or detail URL. Highest priority. |
locationIds | array | [] | Batch of POI ids / detail URLs for details mode. |
maxResults | integer | 200 | Upper bound on rows; drives pagination. |
language | select | en-US | Content locale (affects language and localized names/prices). |
proxyConfiguration | object | RESIDENTIAL | Apify 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
searchon your place name to grab the exactgeoId, 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
maxResultsto how many you actually need — 100 reviews ≈ 10 requests. - Batch details are parallelized. Paste many
d…ids or detail URLs inlocationIdsto 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,helpfulVotesetc. 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
languageto 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 ApifyClientclient = 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.
Is it legal?
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.
Related scrapers
- 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.