Tripadvisor Email Leads Scraper (Hotels, Restaurants, Tours) avatar

Tripadvisor Email Leads Scraper (Hotels, Restaurants, Tours)

Pricing

from $0.99 / 1,000 place scrapeds

Go to Apify Store
Tripadvisor Email Leads Scraper (Hotels, Restaurants, Tours)

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

LurkAPI

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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 sushi in Search keywords and Paris in 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: sushi
Location: 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

FieldTypeDescription
statusStringSuccess, Error, or No results
errorString/nullPlain-English reason, on non-success rows only
locationIdStringTripadvisor's own id for the place
nameStringBusiness name
entityTypeStringhotel, bnb, restaurant, attraction, tour, or vacationRental
categoryStringTripadvisor's top-level category
ratingNumber1 to 5
reviewCountIntegerTotal reviews on Tripadvisor
cityStringCity
emailString/nullBusiness email
phoneString/nullPhone, E.164 where the country is known
websiteString/nullBusiness website
webUrlStringTripadvisor page for the place
inputUrlStringThe input this row came from
scrapedAtStringISO timestamp

Contacts

FieldTypeDescription
email, phone, websiteString/nullPrimary contact details
emails, phonesArray/nullEverything found, including the business website
emailValidationStatusString/nullValid, Invalid, Risky, or Unknown
emailProviderString/nullGoogle Workspace, Microsoft 365, and others
facebook, instagram, linkedin, twitter, youtube, tiktok, pinterestString/nullSocial profiles
ownerWebsiteString/nullOwner-declared site where Tripadvisor publishes one
writeReviewUrl, menuWebUrl, orderOnlineUrlString/nullTripadvisor action links
booking, bookingUrlString/nullBooking partner and deep link

Location

FieldTypeDescription
addressStringFull address as Tripadvisor prints it
street, city, state, postalCode, countryString/nullAddress parts
latitude, longitudeNumber/nullCoordinates
timezoneString/nullIANA timezone
neighborhoodsArray/nullNeighbourhoods the place sits in
nearestMetroStationsArray/nullNearby transit
parentDisplayNameString/nullParent destination

Quality and ranking

FieldTypeDescription
rating, reviewCountNumber, IntegerScore and volume
ratingHistogram1 โ€ฆ ratingHistogram5Integer/nullReviews per star (add-on)
rankingPosition, rankingDenominatorInteger/null1 of 22,542, not a bare "#1"
rankingCategory, rankingStringString/nullWhat the ranking is measured against
rawRankingNumber/nullTripadvisor's underlying ranking score
priceLevel, priceRangeString/null$ to $$$$, and the printed range
isClosed, isLongClosedBoolean/nullClosure flags
mainImage, photoCountString/null, Integer/nullLead photo and gallery size
tagsArray/nullTripadvisor tags
hotelClass, numberOfRoomsNumber/null, Integer/nullStar class and room count

Place details

FieldTypeDescription
subcategory, subtypeString/nullFiner classification
descriptionString/nullTripadvisor's description
amenities, featuresArray/nullHotel amenities, restaurant features
cuisines, mealTypes, dishes, dietaryRestrictions, establishmentTypesArray/nullRestaurant attributes
hoursArray/nullOpening hours
offers, offerGroup, roomTipsArray/nullDeals and traveller tips
checkInDate, checkOutDateString/nullDates the hotel pricing was quoted for
awardsArray/nullTravellers' Choice and similar
ancestorLocationsArray/nullDestination hierarchy above the place
hotelClassAttributionString/nullWho assigned the star class
productCode, duration, priceFromString/null, String/null, Number/nullTour-specific fields

Enrichments

FieldTypeDescription
leadScoreInteger/null0 to 100, free
googleAdsActive, metaAdsActiveBoolean/nullLive advertiser detection
linkedinFollowers, linkedinIndustryInteger/null, String/nullLinkedIn company data
registryFound, registryName, registryNumberBoolean/null, String/nullOfficial registry record
legalEntityNameString/nullResolved legal entity
reviewTagsArray/nullRecurring review topics
aiReviewSummaryString/nullTripadvisor's own AI summary
reviewsArray/nullFull 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

ItemPrice
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-onCharges whenPrice per 1,000
Find contacts on the business websiteAt least one email, phone, or social profile is found$5.00
Validate emailAn email is validated and its provider classified$0.50
Rating histogramPer-star review counts are returned$0.50
Review tagsRecurring review topics are returned$0.50
Tripadvisor AI review summaryTripadvisor publishes a summary for the place$0.50
ReviewsPer review delivered$1.00
Detect Google Ads activityA live Google Ads advertiser is matched$0.50
Detect Meta Ads activityA live Meta advertiser is matched$0.50
LinkedIn company enrichmentA LinkedIn company page is enriched$1.00
Company registry enrichmentAn official registry record is matched$2.00
Legal entity resolutionA 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 rankingPosition column, not by row order. Places land in the file in whatever order they finish. rankingPosition is the place Tripadvisor gave each one, and rankingDenominator is 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

โš–๏ธ 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