Tripadvisor Email Leads Scraper (Hotels, Restaurants, Tours)
Pricing
from $0.99 / 1,000 place scrapeds
Tripadvisor Email Leads Scraper (Hotels, Restaurants, Tours)
Tripadvisor email scraper for B2B lead generation. Extract business emails, phones, websites, ratings and rankings from hotels, restaurants, attractions and tours. Search by keyword, category, city, URL or ID.
Pricing
from $0.99 / 1,000 place scrapeds
Rating
0.0
(0)
Developer
LurkAPI
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Turn any Tripadvisor search into a call list with email addresses. Names, phones, addresses, ratings and rankings from Tripadvisor, plus the emails and social profiles published on each venue's own website.
A hospitality lead database for agencies pitching hotels and restaurants, travel-tech teams tracking a market, and anyone tired of copying contact details off Tripadvisor by hand.
๐ฏ What it does
Tripadvisor shows you one venue at a time. This gives you the whole list as a spreadsheet, with contact details attached.
- Search by keyword. Put
sushiin Search keywords andParisin Location. You get sushi restaurants in Paris, not every restaurant in the city. - Or list a whole destination. Pick a place category instead and it pages through the full listing: 22,541 restaurants in Paris, 1,036 hotels in New York. Cuisine, price, MICHELIN and star filters are applied by Tripadvisor during discovery, so places you exclude are never fetched or charged.
- What each row contains. Name, rating, review count, ranking with its denominator (
#3 of 22,541, not a bare#1), price level, address, coordinates, phone, website, and the business email when Tripadvisor publishes one. - Emails Tripadvisor does not publish. Turn on Find contacts on the business website ($) and each venue's own site is opened for public email addresses, extra phone numbers and social profiles. Off by default, and charged only when it finds something.
- Optional enrichments. Live Google and Meta ad activity, LinkedIn company data, official registry records, the legal entity behind the trading name, and a free 0โ100 lead score.
- Reviews. Full text in the original language and translated, with rating, dates and helpful votes. Charged per review, and you set the cap.
- Mixed inputs. Keywords, categories, listing URLs, detail URLs and location IDs in one run. Duplicates are collapsed, so a venue is never collected or charged twice.
๐ How to use it
Step 1: Say what you want
Put sushi in Search keywords and Paris in Location. That is the whole setup.
Search keywords: sushiLocation: Paris
Want the whole city instead? Leave keywords empty and pick Place categories. Already have Tripadvisor links? Paste them into Tripadvisor URLs. Listing pages keep their cuisine and price filters, detail pages take one venue at a time. Bare place or destination IDs go in Location IDs.
Mix any of them in one run.
Step 2: Narrow it down
Filters cut the list before anything is fetched: cuisine (146 of them), dietary restrictions, establishment type, meal type, features, MICHELIN Guide level, "Great for" style, price level, and hotel star class.
Then switch on what you want beyond the listing. Find contacts on the business website ($) is the one most people want first.
Step 3: Run it
Rows appear as each input finishes, so you can watch the list fill. Download from the Storage tab as Excel, CSV or JSON, or pull it through the Apify API.
Ready-made views split the data for you: ๐ Overview, ๐ Contacts, ๐ Location, โญ Quality & ranking, ๐ท๏ธ Place details, ๐ Enrichments, ๐ฌ Reviews.
Every row starts with status. Success means real data. Error or No results means that one input did not work out, and the error column says why in plain English. Those rows are never charged.
Example output
One restaurant row from a listing URL, add-ons off:
{"status": "Success","error": null,"locationId": "12714552","name": "Pizzeria Arrivederci","entityType": "restaurant","category": "Restaurant","webUrl": "https://www.tripadvisor.com/Restaurant_Review-g187147-d12714552-Reviews-Pizzeria_Arrivederci-Paris_Ile_de_France.html","email": "arriedercinfo@gmail.com","phone": "+33177324557","website": "https://arrivedercipizzeria.com/","address": "47 rue Gay Lussac, 75005 Paris France","city": "Paris","postalCode": "75005","country": "France","latitude": 48.84172,"longitude": 2.343511,"rating": 4.9,"reviewCount": 6621,"rankingPosition": 1,"rankingDenominator": 22542,"rankingCategory": "restaurant","priceLevel": "$$ - $$$","cuisines": ["Italian", "Pizza", "Mediterranean", "Neapolitan"],"mainImage": "https://media-cdn.tripadvisor.com/media/photo-s/1c/55/7e/b3/la-poesia-a-tavola.jpg","scrapedAt": "2026-08-13T12:41:34.788Z"}
Phone numbers are normalised to E.164 wherever the place's country makes that unambiguous, so +33177324557 is comparable across every market in one export.
๐ Output fields
Ninety-six fields per place. Every one has its own toggle, and a field you switch off is absent from the row rather than present and empty. The seven named views in the Output tab group them the same way as the tables below.
Overview
| Field | Type | Description |
|---|---|---|
status | String | Success, Error, or No results |
error | String/null | Plain-English reason, on non-success rows only |
locationId | String | Tripadvisor's own id for the place |
name | String | Business name |
entityType | String | hotel, bnb, restaurant, attraction, tour, or vacationRental |
category | String | Tripadvisor's top-level category |
rating | Number | 1 to 5 |
reviewCount | Integer | Total reviews on Tripadvisor |
city | String | City |
email | String/null | Business email |
phone | String/null | Phone, E.164 where the country is known |
website | String/null | Business website |
webUrl | String | Tripadvisor page for the place |
inputUrl | String | The input this row came from |
scrapedAt | String | ISO timestamp |
Contacts
| Field | Type | Description |
|---|---|---|
email, phone, website | String/null | Primary contact details |
emails, phones | Array/null | Everything found, including the business website |
emailValidationStatus | String/null | Valid, Invalid, Risky, or Unknown |
emailProvider | String/null | Google Workspace, Microsoft 365, and others |
facebook, instagram, linkedin, twitter, youtube, tiktok, pinterest | String/null | Social profiles |
ownerWebsite | String/null | Owner-declared site where Tripadvisor publishes one |
writeReviewUrl, menuWebUrl, orderOnlineUrl | String/null | Tripadvisor action links |
booking, bookingUrl | String/null | Booking partner and deep link |
Location
| Field | Type | Description |
|---|---|---|
address | String | Full address as Tripadvisor prints it |
street, city, state, postalCode, country | String/null | Address parts |
latitude, longitude | Number/null | Coordinates |
timezone | String/null | IANA timezone |
neighborhoods | Array/null | Neighbourhoods the place sits in |
nearestMetroStations | Array/null | Nearby transit |
parentDisplayName | String/null | Parent destination |
Quality and ranking
| Field | Type | Description |
|---|---|---|
rating, reviewCount | Number, Integer | Score and volume |
ratingHistogram1 โฆ ratingHistogram5 | Integer/null | Reviews per star (add-on) |
rankingPosition, rankingDenominator | Integer/null | 1 of 22,542, not a bare "#1" |
rankingCategory, rankingString | String/null | What the ranking is measured against |
rawRanking | Number/null | Tripadvisor's underlying ranking score |
priceLevel, priceRange | String/null | $ to $$$$, and the printed range |
isClosed, isLongClosed | Boolean/null | Closure flags |
mainImage, photoCount | String/null, Integer/null | Lead photo and gallery size |
tags | Array/null | Tripadvisor tags |
hotelClass, numberOfRooms | Number/null, Integer/null | Star class and room count |
Place details
| Field | Type | Description |
|---|---|---|
subcategory, subtype | String/null | Finer classification |
description | String/null | Tripadvisor's description |
amenities, features | Array/null | Hotel amenities, restaurant features |
cuisines, mealTypes, dishes, dietaryRestrictions, establishmentTypes | Array/null | Restaurant attributes |
hours | Array/null | Opening hours |
offers, offerGroup, roomTips | Array/null | Deals and traveller tips |
checkInDate, checkOutDate | String/null | Dates the hotel pricing was quoted for |
awards | Array/null | Travellers' Choice and similar |
ancestorLocations | Array/null | Destination hierarchy above the place |
hotelClassAttribution | String/null | Who assigned the star class |
productCode, duration, priceFrom | String/null, String/null, Number/null | Tour-specific fields |
Enrichments
| Field | Type | Description |
|---|---|---|
leadScore | Integer/null | 0 to 100, free |
googleAdsActive, metaAdsActive | Boolean/null | Live advertiser detection |
linkedinFollowers, linkedinIndustry | Integer/null, String/null | LinkedIn company data |
registryFound, registryName, registryNumber | Boolean/null, String/null | Official registry record |
legalEntityName | String/null | Resolved legal entity |
reviewTags | Array/null | Recurring review topics |
aiReviewSummary | String/null | Tripadvisor's own AI summary |
reviews | Array/null | Full reviews, original and translated text |
๐ Add-ons
Tripadvisor gives you a name, a rating, and sometimes an email. These go further. Everything here is off until you turn it on, and paid add-ons charge only when they return data.
Reach a person
- Find contacts on the business website ($) opens each venue's own site and collects the public email addresses, extra phone numbers and social profiles. This is where most emails come from, because Tripadvisor publishes one for some venues but not most.
- Validate email ($) checks the address can receive mail and names the provider behind it. A free provider usually means an owner-run business; a corporate mail system usually means a front desk between you and the decision.
Know who you are dealing with
- LinkedIn company enrichment ($) adds follower count, industry and the company page. It runs only when the venue's website links to one, so it never attaches the wrong company.
- Company registry enrichment ($) matches an official government record when the name and location or published registration numbers agree.
- Legal entity resolution ($) finds the registered company behind the trading name, taken from the venue's own legal pages.
Judge the opportunity
- Detect Google Ads activity ($) checks whether the venue's domain has run ads in the past seven days. A venue already buying traffic has a marketing budget.
- Detect Meta Ads activity ($) does the same through the Meta Ad Library, matched by Facebook page or domain, searching the venue's own country.
- Lead score rates each venue 0 to 100 from data already collected. Free, and it costs no extra requests.
What the reviews say
- Reviews ($) brings the full text in the original language and translated, with rating, dates and helpful votes, each on its own row. This is your opening line: a hotel sitting on complaints about slow check-in will read an email about slow check-in.
- Rating histogram ($) splits the reviews across one to five stars. A 4.2 built on 3,000 reviews reads very differently from a 4.2 built on nine.
- Review tags ($) returns the topics reviewers keep coming back to.
- Tripadvisor AI review summary ($) copies Tripadvisor's own summary of recent reviews, where it publishes one.
๐ค Use it from AI clients (MCP)
Call this Actor from Claude Code, Claude Desktop, Codex, Cursor, or any client that speaks the Model Context Protocol. Then just ask: "Find 50 four-star hotels in Lisbon with emails and phone numbers."
Every example needs an APIFY_TOKEN from console.apify.com/settings/integrations.
Claude Code
claude mcp add apify -- npx -y @apify/actors-mcp-server \--actors lurkapi/tripadvisor-email-leads-scraper-api
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{"mcpServers": {"apify": {"command": "npx","args": ["-y", "@apify/actors-mcp-server","--actors", "lurkapi/tripadvisor-email-leads-scraper-api"]}}}
Then add your token to that server's env block as APIFY_TOKEN.
Codex CLI
Edit ~/.codex/config.toml:
[mcp_servers.apify]command = "npx"args = ["-y", "@apify/actors-mcp-server","--actors", "lurkapi/tripadvisor-email-leads-scraper-api"]
Add your token to the same block as an APIFY_TOKEN environment variable.
Cursor
Edit ~/.cursor/mcp.json using the same shape as the Claude Desktop example.
๐ฐ Pricing
Pay-per-result. You only pay for places actually delivered to your dataset. Filtered places, explanatory status rows, and failed lookups cost nothing. Optional add-ons charge only when they return a result; misses are free.
Base
| Item | Price |
|---|---|
| Actor start | $0.001 per run |
| Place scraped | $0.99 per 1,000 |
Add-ons (pay only when the add-on returns a result)
| Add-on | Charges when | Price per 1,000 |
|---|---|---|
| Find contacts on the business website | At least one email, phone, or social profile is found | $5.00 |
| Validate email | An email is validated and its provider classified | $0.50 |
| Rating histogram | Per-star review counts are returned | $0.50 |
| Review tags | Recurring review topics are returned | $0.50 |
| Tripadvisor AI review summary | Tripadvisor publishes a summary for the place | $0.50 |
| Reviews | Per review delivered | $1.00 |
| Detect Google Ads activity | A live Google Ads advertiser is matched | $0.50 |
| Detect Meta Ads activity | A live Meta advertiser is matched | $0.50 |
| LinkedIn company enrichment | A LinkedIn company page is enriched | $1.00 |
| Company registry enrichment | An official registry record is matched | $2.00 |
| Legal entity resolution | A legal entity is decisively resolved | $2.00 |
| Lead score (0 to 100) | Free. No extra fetches, no extra charges. | Free |
๐ก Good to know
- Sort by the
rankingPositioncolumn, not by row order. Places land in the file in whatever order they finish.rankingPositionis the place Tripadvisor gave each one, andrankingDenominatoris how many it was ranked against:#3 of 22,541. Sort on it and you have Tripadvisor's order back. - One keyword gets you about twenty places. A category gets you the city. Tripadvisor's own search caps a keyword at twenty per place type, which is fast and relevant but shallow. To sweep a destination, pick a place category instead and it pages the whole listing.
- Attractions and tours are different things. Attractions are places you visit. Tours are bookable products. Ask for attractions and you will not get a pile of tour listings.
- Vacation rentals and some tours need a link. Rentals are not in the category picker, and a tour buried deep in its destination cannot be reached by keyword. Paste the URL or the ID and both come back like anything else.
- The same place twice costs you once. Reach a venue through a keyword, a listing, a detail URL and a bare ID in one run, and it is fetched, delivered and charged a single time.
- Data is stored in your Apify dataset. Retention depends on your Apify plan.
โ FAQ
Why is the email field empty for some places?
Tripadvisor only publishes a business email for some listings. Turn on website contact scanning to recover emails from the business's own site; that finds addresses Tripadvisor never shows. Some venues genuinely publish no email anywhere, and those come back null rather than guessed.
Can I filter by price level, hotel star rating, or cuisine?
Yes, and by more besides. Restaurants can be filtered by cuisine (all 146 Tripadvisor lists), dietary restrictions, establishment type, meal type, features such as outdoor seating or wheelchair access, MICHELIN Guide level, "Great for" style, and price level. Hotels can be filtered by star class. Every one of these is applied by Tripadvisor before results are fetched, so you are never billed for places that get filtered out.
Can I search for a keyword like "sushi" or "rooftop bar"?
Yes, that is the default input. Put the words in Search keywords and the city in Location. Each keyword goes to Tripadvisor's own search index and is asked separately for restaurants, hotels, attractions and tours, so sushi in Paris returns sushi restaurants rather than everything in Paris. Their search caps a keyword at twenty places per place type and offers no paging, so use several keywords to widen a search, or the category picker when you want every place in a destination.
Why did I get fewer places than the destination says it has?
Tripadvisor stops serving public listings after a few thousand places per destination, and your per-input cap applies on top of that. Check the run log: it states whether each input was exhausted, capped, or failed, so you can tell a real limit from a problem.
Can I get full review text for each place?
This Actor returns review intelligence: per-star counts, recurring topics, Tripadvisor's own AI summary, and a configurable sample of recent reviews. For complete review history with review-level filters and sorting, use a dedicated reviews Actor.
What happens to rows that fail?
They come back as explanatory rows with status set to Error or No results and a plain-English error message, using exactly the same columns as successful rows. They are never charged.
How long are the results stored?
They are stored in your Apify dataset. How long they are kept depends on your Apify plan.
๐ Other tools you might like
- Google Maps Business Leads Scraper (Email, Phone...): same job for businesses on Google Maps, with website contact scanning and lead scoring.
- Google Maps Business Without Websites Leads Scraper: find businesses that have no website yet, the easiest web-design and marketing pitch there is.
- Yelp Business Leads Scraper API (Email, Phoneโฆ): the same call list built from Yelp, with emails from each companyโs own website.
- Trustpilot Reviews & Company Data Scraper API: pull the full review stream and company profile from any Trustpilot page.
- Google Maps Reviews Scraper: the complete review stream for any place on Google Maps.
โ๏ธ Disclaimer
This tool is intended for personal, research, and educational use. You are responsible for complying with Tripadvisor's Terms of Service and applicable laws in your jurisdiction, including anti-spam regulations (CAN-SPAM, GDPR, etc.) when using extracted email addresses. The developer is not liable for misuse. Data availability depends on Tripadvisor at run time.
Keywords: tripadvisor scraper, tripadvisor email scraper, hotel leads, restaurant leads, hospitality lead generation, travel data, tripadvisor api, venue contact data