# Airbnb Email Scraper (`leads-scraper/airbnb-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/airbnb-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Airbnb Email Scraper — public host and property-manager contacts from Google

The **Airbnb Email Scraper** turns publicly indexed Airbnb pages into a clean, deduplicated
lead list of contact emails, account labels and profile URLs. It is built for hospitality-tech
vendors, property-management companies and OTA supply teams who need real hosts to talk to.

One boundary matters more than any feature, so the Airbnb Email Scraper states it up front. Airbnb hides host contact
details until a booking is made, so this Actor finds emails that hosts and property managers
**publish themselves** on public listing, host-profile and co-host pages — never private
guest-host messaging. Expect modest volume.

The Airbnb Email Scraper never logs in, never opens the Airbnb website and never touches an
Airbnb API. Every row comes from Google's public index: the result title, the snippet and the
site label that Google prints next to it.

In measured live runs, roughly every 10 parsed Airbnb results yielded about 5 identity rows,
5 profile URLs and 9 unique emails. That email volume is good for this category, and it is the
honest number to plan a campaign around — not a guarantee.

#### Who the Airbnb Email Scraper is for

Short-term rental software vendors, channel managers and direct-booking tools run the Airbnb Email
Scraper to build a prospect list of hosts who already advertise a booking address. Cleaning, linen
and amenity suppliers use it to find self-managing hosts in a single city.

OTA supply teams recruiting new properties, destination marketing organisations mapping their
local rental inventory, and travel PR teams pitching host stories are the other regular users.
Hosts publish these addresses on purpose, so frame outreach as a business proposition.

#### What makes this Airbnb host email research different

Most "hotel owner email list" products sell a static database. The Airbnb Email Scraper runs a
live search each time, against keywords and email domains you choose, so the vacation rental
leads it returns reflect what is indexed today.

That also means the Airbnb Email Scraper is a research tool rather than a list you buy once. Re-run
it monthly for a market and you see new short-term rental operators as they publish contact details.

***

### Key features of the Airbnb Email Scraper

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

| Feature | What it does |
|---|---|
| Google `site:` targeting | Searches `airbnb.com`, `airbnb.co.uk` and `airbnb.ca` in one run |
| 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 and every page |
| 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 Airbnb Email Scraper works

The pipeline is short and fully transparent. The Airbnb Email Scraper reads your input, builds
Google queries with the `site:` operator, fetches result pages through the Apify **GOOGLE\_SERP**
proxy with `aiohttp`, and parses each result block structurally.

Emails are then pulled 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 anywhere in the chain.

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

```
site:airbnb.com OR site:airbnb.co.uk OR site:airbnb.ca host "@gmail.com" "Lisbon"
```

#### Query expansion in the Airbnb Email Scraper

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

Each keyword × domain pair is searched as a base query, a quoted query, an `intitle:` query and
one extra query per entry in `queryModifiers`. The Airbnb defaults are `email`, `contact`,
`bookings`, `direct booking` and `property manager`.

Base queries always run first, so a small run with a low `maxEmails` finishes on the strongest
phrasings rather than on the long tail. Because deduplication is global, expansion can only add
Airbnb host email results, never duplicate them.

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

`location` is a real targeting lever, not decoration. The phrase you supply is quoted and appended
to every query, so `"Barcelona"` or `"Lake District"` narrows the whole run to one destination's
short-term rental market.

`countryCode` steers the search proxy to a two-letter country such as `US`, `GB` or `PT`, which
changes which regional Airbnb pages Google surfaces. Pairing a city in `location` with its country
in `countryCode` is the most reliable way to build a city-by-city property manager list.

***

### Input fields of the Airbnb Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["host", "vacation rental"]` | Search terms describing the Airbnb accounts 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", "direct booking", "property manager"]` | 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 Airbnb Email Scraper

```json
{
  "keywords": ["superhost", "vacation rental", "property manager"],
  "location": "Barcelona",
  "customDomains": ["@gmail.com", "@yahoo.com", "@outlook.com"],
  "maxEmails": 200,
  "countryCode": "ES",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "bookings", "direct booking", "property manager"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Adding your own domains widens the net considerably. Many self-managing hosts publish a personal
`@gmail.com` address, while agencies more often expose a role address, so point the Airbnb Email
Scraper at both shapes.

***

### Output fields of the Airbnb Email Scraper

Every dataset item the Airbnb 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 |
| `title` | Raw result title |
| `accountName` | Account label Google prints (handle or display name) |
| `fullName` | Display name parsed from a profile-style title; empty for listing captions |
| `username` | URL-safe handle when Airbnb exposes one; otherwise `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty |
| `url` | Direct Airbnb link when exposed, else the profile URL |
| `description` | Bio or listing snippet, 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 |

#### Example output from the Airbnb Email Scraper

```json
[
  {
    "network": "Airbnb",
    "keyword": "vacation rental",
    "query": "site:airbnb.com OR site:airbnb.co.uk OR site:airbnb.ca vacation rental contact \"@gmail.com\" \"Barcelona\"",
    "title": "Marta - Host Profile - Airbnb",
    "accountName": "482910437",
    "fullName": "Marta",
    "username": "482910437",
    "profileUrl": "https://www.airbnb.com/users/show/482910437",
    "url": "https://www.airbnb.com/users/show/482910437",
    "description": "Gothic Quarter apartments. Direct enquiries: marta.rentals@gmail.com",
    "email": "marta.rentals@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T09:14:52Z"
  },
  {
    "network": "Airbnb",
    "keyword": "property manager",
    "query": "site:airbnb.com OR site:airbnb.co.uk OR site:airbnb.ca property manager email \"@gmail.com\" \"Barcelona\"",
    "title": "Seaside Lofts - Barcelona - Airbnb",
    "accountName": "Seaside Lofts",
    "fullName": "Seaside Lofts",
    "username": null,
    "profileUrl": "",
    "url": "https://www.airbnb.com/rooms/91824037",
    "description": "Managed by Seaside Lofts. Group bookings: seasidelofts.bcn@gmail.com",
    "email": "seasidelofts.bcn@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T09:15:07Z"
  }
]
```

The second row is the honest case the Airbnb Email Scraper produces regularly. Google printed a
display name but no URL-safe handle, so
`username` is `null` and `profileUrl` is empty — and `possiblyTruncated` warns that the snippet
ellipsis touched the address, so verify it before sending.

***

### Use cases for the Airbnb Email Scraper

| Use case | How the Airbnb Email Scraper helps |
|---|---|
| Property management software sales | Build a city list of hosts advertising a booking address |
| Channel manager onboarding | Find multi-listing managers who publish a contact address |
| Direct-booking tool outreach | Target hosts already promoting direct enquiries |
| Linen, cleaning and amenity supply | Reach self-managing hosts in one destination |
| OTA supply recruitment | Source properties not yet on your marketplace |
| Destination marketing | Map local short-term rental operators for a DMO campaign |
| Travel PR and media | Contact hosts who publish a press or enquiries address |
| Insurance and finance for hosts | Reach professionalising hosts and small agencies |

#### Worked example: a city-level vacation rental lead list

Set `keywords` to `["host", "vacation rental", "property manager"]`, `location` to `"Porto"` and
`countryCode` to `PT`. Leave expansion on, raise `maxEmails` to 300 and let the Airbnb Email
Scraper work through the base queries first.

#### Worked example: agency-shaped Airbnb lead generation

Keep `keywords` narrow — `["property manager", "co-host"]` — and add role-style domains to
`customDomains`. Agencies publish an operational inbox far more often than an individual host does,
so the Airbnb Email Scraper resolves more usable rows from agency-shaped keywords.

***

### Expected results from the Airbnb Email Scraper

In live measurement, about 10 results parsed by the Airbnb Email Scraper produced roughly 5 rows
with an identity, 5 profile URLs and 9 unique emails. Airbnb's email volume is one of the better
ones in this travel category, while its handle resolution is mid-range.

Yield always depends on your keywords, your email domains and your location. Narrow destination
runs usually convert better than broad global ones, because Airbnb host email addresses cluster
around specific markets.

***

### Limitations of the Airbnb Email Scraper

- **Airbnb hides host contact details until a booking is made.** The Airbnb Email Scraper only
  finds addresses hosts and property managers publish themselves on public listing, host-profile
  and co-host pages. It cannot reach guest-host messaging or any private Airbnb contact record.
- Only accounts whose email is **publicly visible in Google's index** can be found by the Airbnb
  Email Scraper.
- 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. Some rows
  will carry `accountName` and `fullName` with an empty handle. That is a Google limitation, not a bug.
- The Airbnb 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 Airbnb Email Scraper are business contact points that hosts and property
managers chose to publish for enquiries, so treat them as B2B outreach data. Identify yourself, state why you are writing and
honour opt-outs on the first request.

Under GDPR and similar regimes you need a lawful basis, usually legitimate interest, plus a
transparent privacy notice and a working unsubscribe path. Do not use the Airbnb Email Scraper to
build consumer marketing lists or to contact people about anything unrelated to their listing.

***

### FAQ about the Airbnb Email Scraper

**How many results should I expect from the Airbnb Email Scraper?**
In measured live runs, roughly every 10 parsed results produced about 5 identity rows, 5 profile
URLs and 9 unique emails. Volume is never guaranteed and shifts with keywords, domains and location.

**Can the Airbnb Email Scraper access host contact details that Airbnb keeps private?**
No. Airbnb withholds host contact details until a booking is made, and this Actor has no access to
them. It reads only what hosts and property managers have published publicly and Google has indexed.

**Does the Airbnb Email Scraper log into Airbnb or use its API?**
No. The Airbnb Email Scraper does not log in, does not open the Airbnb website and does not use any
Airbnb API. All data comes from publicly indexed Google search results.

**Why is `username` sometimes `null` in the Airbnb Email Scraper output?**
Google frequently prints a display name rather than a URL-safe handle. When no handle appears in
the result, `username` is `null` and `profileUrl` is empty, while `accountName` and `fullName`
still identify the host.

**Which email domains should I use?**
Start with the defaults `@gmail.com` and `@yahoo.com`, then add `@outlook.com`, `@hotmail.com` or
a country domain. Each domain you add multiplies the queries the Airbnb Email Scraper runs.

**Do I need a proxy to run the Airbnb Email Scraper?**
Yes. The Airbnb Email Scraper 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 adding them to a sending list.

**Can I restrict the Airbnb Email Scraper to one city or country?**
Yes. `location` appends a quoted phrase to every query and `countryCode` sets the search proxy's
two-letter country, which together give you destination-led short-term rental prospecting.

**How do I get more Airbnb host email results?**
Keep `expandQueries` on, add more keywords and email domains, raise `maxEmails`, and run several
narrow destination runs instead of one broad global run.

**Is there a free-plan limit on the Airbnb 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 Airbnb Email Scraper run?**
Yes. Progress is stored in the key-value store keyed by a hash of your input, and is saved on
Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

**Is the Airbnb Email Scraper affiliated with Airbnb?**
No. It is an independent tool that reads public Google search results and is not endorsed by or
connected to Airbnb.

***

### Related Actors

Every Actor below runs the same engine against a different Travel, Hospitality & Food platform.
If you are building an accommodation list, pair this with the
[Booking.com Email Scraper](https://apify.com/leads-scraper/booking-com-email-scraper) and the
[Tripadvisor Hotels Email Scraper](https://apify.com/leads-scraper/tripadvisor-hotels-email-scraper).

For budget stock add the [Hostelbookers Email Scraper](https://apify.com/leads-scraper/hostelbookers-email-scraper);
for Southeast Asia and the Middle East, the [Traveloka Email Scraper](https://apify.com/leads-scraper/traveloka-email-scraper)
and [Wego Email Scraper](https://apify.com/leads-scraper/wego-email-scraper) cover regional demand.

The [Viator Email Scraper](https://apify.com/leads-scraper/viator-email-scraper) reaches the experience
operators your guests book.

| Actor | What it collects |
|---|---|
| [Airbnb Email and Phone Number Scraper](https://apify.com/leads-scraper/airbnb-email-and-phone-number-scraper) | Emails and phone numbers from Airbnb |
| [Airbnb Phone Number Scraper](https://apify.com/leads-scraper/airbnb-phone-number-scraper) | Public phone numbers 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 |
| [Tripadvisor Attractions Email Scraper](https://apify.com/leads-scraper/tripadvisor-attractions-email-scraper) | Public contact emails from Tripadvisor |
| [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 |
| [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 |
| [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 |
| [Delivery.com Email and Phone Number Scraper](https://apify.com/neuro-scraper/delivery-com-email-and-phone-number-scraper) | Emails and phone numbers from Delivery.com |
| [DoorDash Email and Phone Number Scraper](https://apify.com/leads-scraper/doordash-email-and-phone-number-scraper) | Emails and phone numbers from DoorDash |
| [EatStreet Email and Phone Number Scraper](https://apify.com/neuro-scraper/eatstreet-email-and-phone-number-scraper) | Emails and phone numbers from EatStreet |
| [G Adventures Email and Phone Number Scraper](https://apify.com/neuro-scraper/g-adventures-email-and-phone-number-scraper) | Emails and phone numbers from G Adventures |
| [Grubhub Email and Phone Number Scraper](https://apify.com/neuro-scraper/grubhub-email-and-phone-number-scraper) | Emails and phone numbers from Grubhub |

### Support

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

# Actor input Schema

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

Search terms describing the Airbnb 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 Airbnb.

## `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": [
    "host",
    "vacation rental"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com",
    "@hotmail.com",
    "@icloud.com",
    "@aol.com",
    "@protonmail.com",
    "@live.com",
    "@gmx.com",
    "@mail.com",
    "@yandex.com",
    "@zoho.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "bookings",
    "direct booking",
    "property manager"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Airbnb 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": [
        "host",
        "vacation rental"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
        "@outlook.com",
        "@hotmail.com",
        "@icloud.com",
        "@aol.com",
        "@protonmail.com",
        "@live.com",
        "@gmx.com",
        "@mail.com",
        "@yandex.com",
        "@zoho.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "bookings",
        "direct booking",
        "property manager"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/airbnb-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": [
        "host",
        "vacation rental",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
        "@outlook.com",
        "@hotmail.com",
        "@icloud.com",
        "@aol.com",
        "@protonmail.com",
        "@live.com",
        "@gmx.com",
        "@mail.com",
        "@yandex.com",
        "@zoho.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "bookings",
        "direct booking",
        "property manager",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/airbnb-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": [
    "host",
    "vacation rental"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com",
    "@hotmail.com",
    "@icloud.com",
    "@aol.com",
    "@protonmail.com",
    "@live.com",
    "@gmx.com",
    "@mail.com",
    "@yandex.com",
    "@zoho.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "bookings",
    "direct booking",
    "property manager"
  ]
}' |
apify call leads-scraper/airbnb-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/airbnb-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/cPwDrM6d6qTTKLj9s/builds/67ChaK1n9tzlNKEah/openapi.json
