# Hostelbookers Email Scraper (`leads-scraper/hostelbookers-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/hostelbookers-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **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?

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

### Hostelbookers Email Scraper — public hostel contact emails from Google

The **Hostelbookers Email Scraper** collects publicly indexed hostel and guesthouse contact emails
from Hostelbookers and Hostelworld pages, with the account label, snippet and query that produced
each one. It is built for hostel-tech vendors, backpacker-travel suppliers and OTA supply teams.

Two facts shape every run, so the Hostelbookers Email Scraper puts them first. Hostelbookers has
been merged into Hostelworld, so this Actor searches both domains and most results come from
Hostelworld — and listing pages rarely expose a property handle.

That second point is measurable. In live runs, roughly every 10 parsed results returned about
0 rows with an identity, 0 profile URLs and 9 unique emails. This is an email-first Actor: the
address is the deliverable, not the handle.

The Hostelbookers Email Scraper never logs in, never opens Hostelworld or Hostelbookers, and never
touches an API. Every field comes from Google's public index: titles, snippets and the site label
Google prints beside them.

Because the underlying platform is Hostelworld, the `network` field in your dataset reads
`Hostelworld`. That is deliberate and accurate, not a mismatch.

#### Who the Hostelbookers Email Scraper is for

Hostel property-management systems, channel managers and direct-booking tools use it to find
independent hostels that publish a reservations address. Bunk, bedding, linen and amenity suppliers
use it to reach budget accommodation in one city or region.

OTA supply teams recruiting hostels, destination marketing organisations mapping budget beds, and
travel PR teams pitching youth-travel stories are the other regular users. Hostels publish
reservation and group-booking addresses on purpose, so frame outreach as a trade approach.

#### Why a live search beats a static hostel email list

A purchased "hotel owner email list" is frozen the day it ships. The Hostelbookers Email Scraper
runs a fresh Google search against the keywords and email domains you choose, so the hostel leads
it returns reflect what is publicly indexed today.

Re-run it each quarter for a region and newly listed properties appear as they publish contact
details. That makes the Hostelbookers Email Scraper a hospitality prospecting instrument rather
than a one-off purchase.

***

### Key features of the Hostelbookers Email Scraper

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

| Feature | What it does |
|---|---|
| Dual-domain `site:` targeting | Searches `hostelbookers.com` and `hostelworld.com` in the same 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, 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 Hostelbookers Email Scraper works

The pipeline is short and fully inspectable. The Hostelbookers Email Scraper reads your input,
builds Google queries with the `site:` operator across both hostel domains, fetches result pages
through the Apify **GOOGLE\_SERP** proxy with `aiohttp`, and parses each result 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:hostelbookers.com OR site:hostelworld.com hostel "@gmail.com" "Lisbon"
```

Because the merger sends most traffic to Hostelworld, the second domain supplies the bulk of the
rows. Keeping both in the query still catches legacy Hostelbookers pages that remain in the index.

#### Query expansion inside the Hostelbookers Email Scraper

Google caps a single query at roughly 300 results, so pagination depth alone can never fill a large
list. Coverage in the Hostelbookers 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`, `reservations`,
`group bookings` and `owner`.

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 hostel 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
`"Krakow"` or `"Southeast Asia"` narrows the whole Hostelbookers Email Scraper run to one budget
accommodation market.

`countryCode` points the search proxy at a two-letter country such as `US`, `GB`, `PT` or `TH`,
which changes which regional pages Google surfaces. Pairing a backpacker hub in `location` with its
country in `countryCode` is the most reliable way to build a route-by-route hostel list.

***

### Input fields of the Hostelbookers Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["hostel", "guesthouse"]` | Search terms describing the 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", "reservations", "group bookings", "owner"]` | 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 Hostelbookers Email Scraper

```json
{
  "keywords": ["hostel", "guesthouse", "backpackers"],
  "location": "Krakow",
  "customDomains": ["@gmail.com", "@yahoo.com", "@hotmail.com"],
  "maxEmails": 200,
  "countryCode": "PL",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "reservations", "group bookings", "owner"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Independent hostels lean heavily on free-mail reservations addresses, which is why the defaults work
well. Adding `@hotmail.com` or a country domain usually lifts the count on the Hostelbookers Email
Scraper noticeably.

***

### Output fields of the Hostelbookers Email Scraper

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

| Field | Meaning |
|---|---|
| `network` | Platform name — `Hostelworld` for this Actor |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints (usually the property name) |
| `fullName` | Display name parsed from a profile-style title; empty for listing and city pages |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` |
| `profileUrl` | Canonical property URL when a handle is known; otherwise empty |
| `url` | Direct platform 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.hostelworld.com/hosteldetails.php/{username}`. On this platform that happens rarely.

#### Example output from the Hostelbookers Email Scraper

```json
[
  {
    "network": "Hostelworld",
    "keyword": "hostel",
    "query": "site:hostelbookers.com OR site:hostelworld.com hostel reservations \"@gmail.com\" \"Krakow\"",
    "title": "Old Town Backpackers, Krakow - Hostelworld",
    "accountName": "Old Town Backpackers",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.hostelworld.com/pwa/hosteldetails.php/old-town-backpackers/krakow",
    "description": "Central hostel with 42 beds. Reservations: oldtownbackpackers@gmail.com",
    "email": "oldtownbackpackers@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T11:12:04Z"
  },
  {
    "network": "Hostelworld",
    "keyword": "guesthouse",
    "query": "site:hostelbookers.com OR site:hostelworld.com guesthouse group bookings \"@yahoo.com\" \"Krakow\"",
    "title": "Guesthouses in Krakow - Hostelworld",
    "accountName": "Guesthouses in Krakow",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.hostelworld.com/hostels/Krakow",
    "description": "Group bookings for Wisla Guesthouse: wislaguesthouse@yahoo.com",
    "email": "wislaguesthouse@yahoo.com",
    "emailDomain": "@yahoo.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T11:12:33Z"
  }
]
```

Both rows show the honest pattern for this platform: a usable email, a readable `accountName`, but
`username: null` and an empty `profileUrl`. The Hostelbookers Email Scraper reports what Google
exposed rather than guessing a handle.

***

### Use cases for the Hostelbookers Email Scraper

| Use case | How the Hostelbookers Email Scraper helps |
|---|---|
| Hostel PMS and channel manager sales | Find independent hostels publishing a reservations address |
| Direct-booking tool outreach | Reach properties already promoting direct enquiries |
| Bunk, bedding and amenity supply | Build a regional list of budget accommodation buyers |
| OTA supply recruitment | Source hostels and guesthouses not yet on your marketplace |
| Group and youth travel sales | Target properties advertising a group-bookings inbox |
| Destination marketing | Map budget bed stock for a DMO or tourism board campaign |
| Travel PR and media | Contact hostels that publish a press or enquiries address |
| Backpacker route research | Sample how properties along a route present contact information |

#### Worked example: a backpacker-route hostel list

Run the Hostelbookers Email Scraper once per hub — `"Krakow"`, `"Budapest"`, `"Prague"` — with
`keywords` set to `["hostel", "guesthouse", "backpackers"]` and the matching `countryCode`. Narrow
runs consistently beat one broad global run.

#### Worked example: group-bookings prospecting

Trim `queryModifiers` to `["group bookings", "reservations", "email"]` and keep `keywords` to
`["hostel"]`. The Hostelbookers Email Scraper then concentrates on pages where properties advertise
an inbox for group enquiries.

***

### Expected results from the Hostelbookers Email Scraper

In live measurement, about 10 results parsed by the Hostelbookers Email Scraper produced roughly
0 identity rows, 0 profile URLs and 9 unique emails. Email yield is strong; handle resolution on
this platform is effectively nil.

Plan your workflow around `email` plus `accountName` as the identifying pair, and treat
`profileUrl` as absent. Yield still varies with keywords, email domains and location, and no volume
is guaranteed.

***

### Limitations of the Hostelbookers Email Scraper

- **Hostelbookers has been merged into Hostelworld**, so the Hostelbookers Email Scraper searches
  both domains, most results come from Hostelworld, and listing pages rarely expose a property
  handle.
- Only properties whose email is **publicly visible in Google's index** can be found by the
  Hostelbookers 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, which is
  uncommon here. That is a Google limitation, not a bug.
- The Hostelbookers 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 Hostelbookers Email Scraper are business contact points that properties
published for reservations and group enquiries, 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 hostel contact data for
unrelated consumer marketing.

***

### FAQ about the Hostelbookers Email Scraper

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

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

#### Why does `network` say `Hostelworld`?

Hostelbookers was merged into Hostelworld, and the Actor's platform configuration reflects the
surviving brand. Both domains are searched, but most indexed pages now live on Hostelworld.

#### Why is `username` always `null` in my dataset?

Hostel listing pages rarely expose a URL-safe handle in Google's result, so the Hostelbookers Email
Scraper leaves `username` as `null` and `profileUrl` empty rather than inventing one.

#### Does the Hostelbookers Email Scraper log in or use an API?

No. It does not log in, does not open Hostelworld or Hostelbookers, and does not use any platform
API. All data comes from publicly indexed Google search results.

#### 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 Hostelbookers Email Scraper runs.

#### Can I limit the Hostelbookers 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 hostel prospecting.

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

Yes. The Hostelbookers 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 sending.

#### How do I get more hostel emails?

Keep `expandQueries` on, add keywords such as `backpackers`, `dorm` or `bed and breakfast`, add more
email domains, raise `maxEmails`, and run several narrow city runs.

#### Is there a free-plan limit on the Hostelbookers 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 Hostelbookers 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 Hostelbookers Email Scraper affiliated with Hostelworld or Hostelbookers?

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

***

### Related Actors

Every Actor below runs the same engine against a different Travel, Hospitality & Food platform.
For full accommodation coverage, pair this with the [Booking.com Email
Scraper](https://apify.com/leads-scraper/booking-com-email-scraper) and the [Airbnb Email
Scraper](https://apify.com/leads-scraper/airbnb-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 inventory.

The [Contiki Email Scraper](https://apify.com/neuro-scraper/contiki-email-scraper) reaches the
youth-travel operators who fill hostel beds.

| Actor | What it collects |
|---|---|
| [Hostelworld Email and Phone Number Scraper](https://apify.com/neuro-scraper/hostelbookers-email-and-phone-number-scraper) | Emails and phone numbers from Hostelworld |
| [Hostelworld Phone Number Scraper](https://apify.com/neuro-scraper/hostelbookers-phone-number-scraper) | Public phone numbers from Hostelworld |
| [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 |
| [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 |
| [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 |
| [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 |

### Leave a review

If the Hostelbookers 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 Hostelbookers Email Scraper? Email
**neurodata.apify@gmail.com** and we will get back to you.

# Actor input Schema

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

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

## `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": [
    "hostel",
    "guesthouse"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "reservations",
    "group bookings",
    "owner"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Hostelbookers 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": [
        "hostel",
        "guesthouse"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "reservations",
        "group bookings",
        "owner"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/hostelbookers-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": [
        "hostel",
        "guesthouse",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "reservations",
        "group bookings",
        "owner",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/hostelbookers-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": [
    "hostel",
    "guesthouse"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "reservations",
    "group bookings",
    "owner"
  ]
}' |
apify call leads-scraper/hostelbookers-email-scraper --silent --output-dataset

```

## MCP server setup

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