# Tripadvisor Attractions Email Scraper (`leads-scraper/tripadvisor-attractions-email-scraper`) Actor

Tripadvisor Attractions Email Scraper SD - Tripadvisor Attractions Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Tripadvisor results by keyword, location and email domain - Tripadvisor email extractor.

- **URL**: https://apify.com/leads-scraper/tripadvisor-attractions-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Tripadvisor Attractions Email Scraper — public contacts for tours and attractions

The **Tripadvisor Attractions Email Scraper** collects publicly indexed contact emails from
Tripadvisor attraction and tour pages, together with the account label, name, snippet and the exact
Google query behind each row. It serves experience-tech vendors, ticketing platforms and DMOs.

Tripadvisor is one domain carrying three very different businesses — hotels, restaurants and
attractions. The Tripadvisor Attractions Email Scraper narrows to attractions only, which is what
makes it usable for tours and activities prospecting rather than a mixed bag.

In live runs, roughly every 10 parsed results returned about 6 rows with an identity, 6 profile URLs
and 6 unique emails. That is a solid, evenly balanced yield, and the strongest of the three
Tripadvisor page types measured here.

The Tripadvisor Attractions Email Scraper never logs in, never opens the Tripadvisor website and
never touches a Tripadvisor API. Every field comes from Google's public index: result titles,
snippets and the site label Google prints beside them.

#### How the attractions filter actually works

The Tripadvisor Hotels, Restaurants and Attractions Actors all sit on `tripadvisor.com` and
`tripadvisor.co.uk`. To keep them apart, each one appends an extra `inurl:` operator to **every**
query it builds.

The Tripadvisor Attractions Email Scraper adds `inurl:Attraction_Review`, restricting results
to Tripadvisor's attraction and tour review URLs. The [Tripadvisor Hotels Email
Scraper](https://apify.com/leads-scraper/tripadvisor-hotels-email-scraper) uses
`inurl:Hotel_Review` and the \[Tripadvisor Restaurants Email Scraper]\(https://apify.com/leads-
scraper/tripadvisor-restaurants-email-scraper) uses `inurl:Restaurant_Review`.

The filter is honest but blunt. It buys precision — attraction pages, not hotel pages — at the cost
of some reach, because any operator contact published on a different Tripadvisor URL type falls
outside the Tripadvisor Attractions Email Scraper's queries.

#### Who the Tripadvisor Attractions Email Scraper is for

Booking and ticketing platforms, reservation systems and channel managers run the Tripadvisor
Attractions Email Scraper to find operators that publish a bookings or partnerships address.
Resellers and OTA supply teams use it to recruit experience inventory.

Destination marketing organisations mapping local attractions, tourism boards, travel PR teams and
suppliers to the visitor-economy sector round out the audience. Operators publish booking and
partnership addresses on purpose, so approach them as trade contacts.

***

### Key features of the Tripadvisor Attractions Email Scraper

Everything below is code that ships in the Tripadvisor Attractions Email Scraper today, not a
roadmap.

| Feature | What it does |
|---|---|
| Dual-domain `site:` targeting | Searches `tripadvisor.com` and `tripadvisor.co.uk` in one run |
| Page-type narrowing | Adds `inurl:Attraction_Review` to every query so only attraction and tour pages are searched |
| Query expansion | Base, quoted, `intitle:` and one variant per query modifier; base queries run first |
| Global deduplication | Each email is emitted once across every query, page and domain |
| Email normalisation | Case-insensitive; handles `name [at] domain [dot] com`, `(at)`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` does not match inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Drops a hit that is only the tail of another email in the same block |
| Structural parsing | Locates the `<h3>` title then the smallest surrounding block, instead of relying on Google CSS class names |
| Whole-page fallback | If Google's markup changes, the run degrades to "emails without account details", not "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Retries | Up to 3 attempts per page, exponential backoff, fresh proxy session per request |
| Requeue | Blocked or failed queries are re-queued once at the end of the run |
| Concurrency | `asyncio` worker pool with a shared stop signal on `maxEmails` |
| Resumable state | Progress is stored in the key-value store, keyed by a hash of the input, and saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

***

### How the Tripadvisor Attractions Email Scraper works

The Tripadvisor Attractions Email Scraper reads your input, builds Google queries with the `site:`
operator plus `inurl:Attraction_Review`, fetches result pages through the Apify **GOOGLE\_SERP**
proxy with `aiohttp`, and parses each block structurally.

Emails are extracted from the block text with a domain-filtered regular expression, normalised,
deduplicated globally and pushed to the Apify dataset immediately. There is no browser, no
JavaScript rendering, no authentication and no cookies.

A base query looks like this, with your keyword and one of your email domains:

```
site:tripadvisor.com OR site:tripadvisor.co.uk tour operator inurl:Attraction_Review "@gmail.com" "Reykjavik"
```

#### Query expansion inside the Tripadvisor Attractions Email Scraper

Google caps a single query at roughly 300 results, so pagination depth alone can never fill a large
list. Coverage in the Tripadvisor Attractions Email Scraper comes from query diversity, which is why
`expandQueries` defaults to `true`.

Each keyword × domain pair runs as a base query, a quoted query, an `intitle:` query, and one extra
query per entry in `queryModifiers`. The defaults here are `email`, `contact`, `bookings`,
`group tours` and `partnerships`, and `inurl:Attraction_Review` is carried into every variant.

Base queries always run first, so a short run with a low `maxEmails` finishes on the strongest
phrasings. Because deduplication is global, expansion can only add operator leads, never repeat them.

#### Destination-led prospecting with location and countryCode

`location` is a genuine lever. The phrase you supply is quoted and appended to every query, so
`"Reykjavik"`, `"Cusco"` or `"Queenstown"` narrows the whole Tripadvisor Attractions Email Scraper
run to one visitor economy.

`countryCode` points the search proxy at a two-letter country such as `US`, `GB`, `IS` or `NZ`,
which changes whether `tripadvisor.com` or `tripadvisor.co.uk` results dominate. Pairing a city in
`location` with its country in `countryCode` is the most reliable way to build a destination list.

***

### Input fields of the Tripadvisor Attractions Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["tour operator", "attraction"]` | Search terms describing the attraction pages you want |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com", "@yahoo.com"]` | Only emails on these domains are kept; the `@` is optional |
| `maxEmails` | integer 1–10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, DE…) |
| `expandQueries` | boolean | `true` | Search each keyword × domain pair in several phrasings |
| `queryModifiers` | array | `["email", "contact", "bookings", "group tours", "partnerships"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1–50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1–20 | `5` | Parallel queries |

#### Example input for the Tripadvisor Attractions Email Scraper

```json
{
  "keywords": ["tour operator", "attraction", "day tour"],
  "location": "Reykjavik",
  "customDomains": ["@gmail.com", "@yahoo.com", "@hotmail.com"],
  "maxEmails": 200,
  "countryCode": "IS",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "bookings", "group tours", "partnerships"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Small independent operators publish free-mail booking addresses far more often than large attraction
groups, which is why the defaults suit the Tripadvisor Attractions Email Scraper well.

***

### Output fields of the Tripadvisor Attractions Email Scraper

Every dataset item the Tripadvisor Attractions Email Scraper pushes carries all fourteen fields
below — no optional keys, no schema drift between runs.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used, including `inurl:Attraction_Review` |
| `title` | Raw result title |
| `accountName` | Account label Google prints (handle or operator name) |
| `fullName` | Display name parsed from a profile-style title; empty for review-page captions |
| `username` | URL-safe handle when Tripadvisor exposes one; otherwise `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty |
| `url` | Direct Tripadvisor link when exposed, else the profile URL |
| `description` | Snippet text, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain (e.g. `@gmail.com`) |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

When a handle is available, `profileUrl` takes the shape `https://www.tripadvisor.com/{username}`.
Review URLs themselves are not treated as handles, so those rows land in `url` instead.

#### Example output from the Tripadvisor Attractions Email Scraper

```json
[
  {
    "network": "Tripadvisor",
    "keyword": "tour operator",
    "query": "site:tripadvisor.com OR site:tripadvisor.co.uk tour operator inurl:Attraction_Review bookings \"@gmail.com\" \"Reykjavik\"",
    "title": "NorthLightTours - Tripadvisor",
    "accountName": "NorthLightTours",
    "fullName": "North Light Tours",
    "username": "NorthLightTours",
    "profileUrl": "https://www.tripadvisor.com/NorthLightTours",
    "url": "https://www.tripadvisor.com/NorthLightTours",
    "description": "Small-group aurora and glacier tours. Bookings: northlighttours.is@gmail.com",
    "email": "northlighttours.is@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T16:08:52Z"
  },
  {
    "network": "Tripadvisor",
    "keyword": "attraction",
    "query": "site:tripadvisor.com OR site:tripadvisor.co.uk attraction inurl:Attraction_Review group tours \"@yahoo.com\" \"Reykjavik\"",
    "title": "Harbour Whale Museum (Reykjavik) - Tripadvisor",
    "accountName": "Harbour Whale Museum",
    "fullName": "Harbour Whale Museum",
    "username": null,
    "profileUrl": "",
    "url": "https://www.tripadvisor.co.uk/Attraction_Review-g189970-d2311854-Reviews-Harbour_Whale_Museum-Reykjavik.html",
    "description": "School and group tours: harbourwhalemuseum@yahoo.com",
    "email": "harbourwhalemuseum@yahoo.com",
    "emailDomain": "@yahoo.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T16:09:21Z"
  }
]
```

The second row shows the honest fallback: an `Attraction_Review` URL is a page, not a handle, so
`username` is `null` and `profileUrl` is empty while `url` still points at the operator.
`possiblyTruncated` warns that Google's ellipsis touched the address.

***

### Use cases for the Tripadvisor Attractions Email Scraper

| Use case | How the Tripadvisor Attractions Email Scraper helps |
|---|---|
| Ticketing and booking software sales | Find operators publishing a bookings address |
| Channel manager onboarding | Reach tour and activity suppliers directly |
| Reseller and OTA supply recruitment | Source experience inventory for a marketplace |
| Group, school and MICE sales | Target attractions advertising a group-tours inbox |
| Destination marketing | Map the visitor-economy operators in a city for a DMO |
| Tourism board partnerships | Contact operators publishing a partnerships address |
| Travel PR and media | Reach attractions with a press or enquiries inbox |
| Supplier prospecting | Approach operators needing equipment, insurance or logistics |

#### Worked example: a destination experience list

Set `keywords` to `["tour operator", "attraction", "day tour"]`, `location` to `"Cusco"` and
`countryCode` to `PE`. Leave expansion on and raise `maxEmails` to 300 so the Tripadvisor
Attractions Email Scraper clears the base queries first.

#### Worked example: covering a destination end to end

Run the Tripadvisor Attractions Email Scraper first, then the [Tripadvisor Hotels Email
Scraper](https://apify.com/leads-scraper/tripadvisor-hotels-email-scraper) and the \[Tripadvisor
Restaurants Email Scraper]\(https://apify.com/leads-scraper/tripadvisor-restaurants-email-
scraper) on the same `location`.

Three `inurl:` filters, one destination, no overlap.

***

### Expected results from the Tripadvisor Attractions Email Scraper

In live measurement, about 10 results parsed by the Tripadvisor Attractions Email Scraper produced
roughly 6 identity rows, 6 profile URLs and 6 unique emails. Identity, profile URLs and emails move
together here, which makes rows easy to qualify.

The `inurl:Attraction_Review` filter is part of that trade-off — it removes hotel and restaurant
noise but also narrows the search space. Yield varies with keywords, email domains and location, and
no volume is guaranteed.

***

### Limitations of the Tripadvisor Attractions Email Scraper

- Only operators whose email is **publicly visible in Google's index** can be found by the
  Tripadvisor Attractions Email Scraper.
- The `inurl:Attraction_Review` narrowing keeps results on attraction pages, so an operator contact
  published on another Tripadvisor URL type will not appear.
- Google caps a single query at roughly 300 results, which is exactly why query expansion exists.
- `possiblyTruncated: true` means Google's snippet ellipsis may have cut the address — verify it.
- `username` and `profileUrl` are populated only when Google's result exposes a handle. Review URLs
  are not handles, so some rows carry `accountName` with an empty handle. That is a Google
  limitation, not a bug.
- The Tripadvisor Attractions Email Scraper requires the Apify **GOOGLE\_SERP** proxy and cannot run
  without Apify proxy credentials.
- Free Apify plans are capped at 100 emails per run; paid plans are uncapped.
- Results vary with keywords, domains and location, and no volume is guaranteed.

#### Responsible use and GDPR

Addresses returned by the Tripadvisor Attractions Email Scraper are business contact points that
operators published for bookings and partnerships, so treat them as B2B outreach data. Identify
yourself, explain why you are writing and honour opt-outs immediately.

Under GDPR and comparable regimes you need a lawful basis — usually legitimate interest — plus a
transparent privacy notice and a working unsubscribe path. Do not repurpose operator contact data
for unrelated consumer marketing.

***

### FAQ about the Tripadvisor Attractions Email Scraper

#### How many results should I expect from the Tripadvisor Attractions Email Scraper?

In measured live runs, roughly every 10 parsed results gave about 6 identity rows, 6 profile URLs
and 6 unique emails. Volume is never guaranteed and moves with keywords, domains and location.

#### How does the Tripadvisor Attractions Email Scraper avoid hotels and restaurants?

It appends `inurl:Attraction_Review` to every query, restricting results to Tripadvisor's attraction
and tour review URLs. The hotel and restaurant siblings use `inurl:Hotel_Review` and
`inurl:Restaurant_Review` respectively.

#### Should I run the Tripadvisor siblings together?

Yes, if you want a whole destination. The three Actors share a domain but not a page type, so
running all three on the same `location` covers attractions, hotels and restaurants without overlap.

#### Does the Tripadvisor Attractions Email Scraper log in or use the Tripadvisor API?

No. It does not log in, does not open the Tripadvisor website and does not use any Tripadvisor API.
All data comes from publicly indexed Google search results.

#### Why is `username` sometimes `null`?

An `Attraction_Review` URL is a page rather than an account handle. When Google's result exposes no
URL-safe handle, the Tripadvisor Attractions Email Scraper leaves `username` as `null` and
`profileUrl` empty while keeping `accountName`, `fullName` and `url`.

#### Which keywords work best in the Tripadvisor Attractions Email Scraper?

Start with the defaults `tour operator` and `attraction`, then add `day tour`, `guided tour`,
`museum`, `boat trip` or `walking tour` for the destination you are working.

#### Which email domains should I use?

Start with `@gmail.com` and `@yahoo.com`, then add `@hotmail.com`, `@outlook.com` or a country
domain. Every extra domain multiplies the queries the Tripadvisor Attractions Email Scraper runs.

#### Can I limit the Tripadvisor Attractions Email Scraper to one city or country?

Yes. `location` appends a quoted phrase to every query and `countryCode` sets the proxy's two-letter
country, which together give destination-led experience prospecting.

#### Do I need a proxy to run the Tripadvisor Attractions Email Scraper?

Yes. It runs through the Apify GOOGLE\_SERP proxy and cannot operate without Apify proxy credentials.

#### What does `possiblyTruncated` mean?

It flags a row where Google's snippet ellipsis touched the email, so the address may be incomplete.
Verify those rows before sending.

#### Is there a free-plan limit on the Tripadvisor Attractions Email Scraper?

Free Apify plans stop at 100 emails per run. Paid plans are uncapped, subject to Google's own
per-query ceiling.

#### Can I resume an interrupted Tripadvisor Attractions Email Scraper run?

Yes. Progress is stored in the key-value store keyed by a hash of your input and saved on Apify's
`PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

#### Is the Tripadvisor Attractions Email Scraper affiliated with Tripadvisor?

No. It is an independent tool that reads public Google search results and is not endorsed by or
connected to Tripadvisor.

***

### Related Actors

Every Actor below runs the same engine against a different Travel, Hospitality & Food platform.
Its closest siblings are the two other Tripadvisor Actors, which share the domain with a
different `inurl:` filter.

For more experience supply add the \[Viator Email Scraper]\(https://apify.com/leads-
scraper/viator-email-scraper) and the \[GetYourGuide Email Scraper]\(https://apify.com/leads-
scraper/getyourguide-email-scraper); for Asia-Pacific and multi-day operators, use the Klook
and TourRadar Actors listed in the table.

| Actor | What it collects |
|---|---|
| [Tripadvisor Hotels Email Scraper](https://apify.com/leads-scraper/tripadvisor-hotels-email-scraper) | Public contact emails from Tripadvisor |
| [Tripadvisor Restaurants Email Scraper](https://apify.com/leads-scraper/tripadvisor-restaurants-email-scraper) | Public contact emails from Tripadvisor |
| [Tripadvisor Email and Phone Number Scraper](https://apify.com/leads-scraper/tripadvisor-attractions-email-and-phone-number-scraper) | Emails and phone numbers from Tripadvisor |
| [Tripadvisor Email and Phone Number Scraper](https://apify.com/leads-scraper/tripadvisor-hotels-email-and-phone-number-scraper) | Emails and phone numbers from Tripadvisor |
| [Tripadvisor Email and Phone Number Scraper](https://apify.com/leads-scraper/tripadvisor-restaurants-email-and-phone-number-scraper) | Emails and phone numbers from Tripadvisor |
| [Tripadvisor Phone Number Scraper](https://apify.com/leads-scraper/tripadvisor-attractions-phone-number-scraper) | Public phone numbers from Tripadvisor |
| [Tripadvisor Phone Number Scraper](https://apify.com/leads-scraper/tripadvisor-hotels-phone-number-scraper) | Public phone numbers from Tripadvisor |
| [Tripadvisor Phone Number Scraper](https://apify.com/leads-scraper/tripadvisor-restaurants-phone-number-scraper) | Public phone numbers from Tripadvisor |
| [Airbnb Email Scraper](https://apify.com/leads-scraper/airbnb-email-scraper) | Public contact emails from Airbnb |
| [Booking.com Email Scraper](https://apify.com/leads-scraper/booking-com-email-scraper) | Public contact emails from Booking.com |
| [Caviar Email Scraper](https://apify.com/neuro-scraper/caviar-email-scraper) | Public contact emails from Caviar |
| [ChowNow Email Scraper](https://apify.com/neuro-scraper/chownow-email-scraper) | Public contact emails from ChowNow |
| [Contiki Email Scraper](https://apify.com/neuro-scraper/contiki-email-scraper) | Public contact emails from Contiki |
| [Craigslist Email Scraper](https://apify.com/leads-scraper/craigslist-email-scraper) | Public contact emails from Craigslist |
| [Delivery.com Email Scraper](https://apify.com/neuro-scraper/delivery-com-email-scraper) | Public contact emails from Delivery.com |
| [DoorDash Email Scraper](https://apify.com/leads-scraper/doordash-email-scraper) | Public contact emails from DoorDash |
| [EatStreet Email Scraper](https://apify.com/neuro-scraper/eatstreet-email-scraper) | Public contact emails from EatStreet |
| [G Adventures Email Scraper](https://apify.com/neuro-scraper/g-adventures-email-scraper) | Public contact emails from G Adventures |
| [GetYourGuide Email Scraper](https://apify.com/leads-scraper/getyourguide-email-scraper) | Public contact emails from GetYourGuide |
| [Grubhub Email Scraper](https://apify.com/leads-scraper/grubhub-email-scraper) | Public contact emails from Grubhub |
| [Hostelbookers Email Scraper](https://apify.com/leads-scraper/hostelbookers-email-scraper) | Public contact emails from Hostelworld |
| [HotelsCombined Email Scraper](https://apify.com/neuro-scraper/hotelscombined-email-scraper) | Public contact emails from HotelsCombined |
| [Intrepid Travel Email Scraper](https://apify.com/neuro-scraper/intrepid-travel-email-scraper) | Public contact emails from Intrepid Travel |
| [Just Eat Email Scraper](https://apify.com/leads-scraper/just-eat-email-scraper) | Public contact emails from Just Eat |
| [Klook Email Scraper](https://apify.com/neuro-scraper/klook-email-scraper) | Public contact emails from Klook |
| [OpenTable Email Scraper](https://apify.com/neuro-scraper/opentable-email-scraper) | Public contact emails from OpenTable |
| [Resy Email Scraper](https://apify.com/leads-scraper/resy-email-scraper) | Public contact emails from Resy |
| [TheFork Email Scraper](https://apify.com/leads-scraper/thefork-email-scraper) | Public contact emails from TheFork |
| [Toast Restaurant Email Scraper](https://apify.com/leads-scraper/toast-restaurant-email-scraper) | Public contact emails from Toast |
| [TourRadar Email Scraper](https://apify.com/leads-scraper/tourradar-email-scraper) | Public contact emails from TourRadar |
| [Traveloka Email Scraper](https://apify.com/leads-scraper/traveloka-email-scraper) | Public contact emails from Traveloka |
| [Uber Eats Email Scraper](https://apify.com/leads-scraper/uber-eats-email-scraper) | Public contact emails from Uber Eats |
| [Viator Email Scraper](https://apify.com/leads-scraper/viator-email-scraper) | Public contact emails from Viator |
| [Wanderlog Email Scraper](https://apify.com/leads-scraper/wanderlog-email-scraper) | Public contact emails from Wanderlog |
| [Wego Email Scraper](https://apify.com/leads-scraper/wego-email-scraper) | Public contact emails from Wego |
| [Zomato Email Scraper](https://apify.com/leads-scraper/zomato-email-scraper) | Public contact emails from Zomato |
| [Airbnb Email and Phone Number Scraper](https://apify.com/leads-scraper/airbnb-email-and-phone-number-scraper) | Emails and phone numbers from Airbnb |
| [Booking.com Email and Phone Number Scraper](https://apify.com/leads-scraper/booking-com-email-and-phone-number-scraper) | Emails and phone numbers from Booking.com |
| [Caviar Email and Phone Number Scraper](https://apify.com/neuro-scraper/caviar-email-and-phone-number-scraper) | Emails and phone numbers from Caviar |
| [ChowNow Email and Phone Number Scraper](https://apify.com/neuro-scraper/chownow-email-and-phone-number-scraper) | Emails and phone numbers from ChowNow |
| [Contiki Email and Phone Number Scraper](https://apify.com/neuro-scraper/contiki-email-and-phone-number-scraper) | Emails and phone numbers from Contiki |
| [Craigslist Email and Phone Number Scraper](https://apify.com/leads-scraper/craigslist-email-and-phone-number-scraper) | Emails and phone numbers from Craigslist |

### Leave a review

If the Tripadvisor Attractions Email Scraper saved you time, please leave a star rating and a
short review on the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, a bug, or a custom build of the Tripadvisor Attractions Email Scraper? Email
**neurodata.apify@gmail.com** and we will get back to you.

# Actor input Schema

## `keywords` (type: `array`):

Search terms describing the Tripadvisor accounts you want (niche, job title, industry).

## `location` (type: `string`):

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for Tripadvisor.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

## `maxConcurrency` (type: `integer`):

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "tour operator",
    "attraction"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "bookings",
    "group tours",
    "partnerships"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Records produced by Tripadvisor Attractions Email Scraper, stored in the run's default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "tour operator",
        "attraction"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "bookings",
        "group tours",
        "partnerships"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/tripadvisor-attractions-email-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": [
        "tour operator",
        "attraction",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "bookings",
        "group tours",
        "partnerships",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/tripadvisor-attractions-email-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "tour operator",
    "attraction"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "bookings",
    "group tours",
    "partnerships"
  ]
}' |
apify call leads-scraper/tripadvisor-attractions-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/tripadvisor-attractions-email-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EfMHsmlx0UVPZISVP/builds/9oGMtPILwBkaIgjdE/openapi.json
