# Hotel Lead Generator (`parse-point/hotel-lead-generator`) Actor

🏨 Hotel Lead Generator returns hotel and accommodation leads from Google Maps with coordinates, ratings and reviews. 📧 Site enrichment adds emails and socials. ✈️ For hospitality software sales & travel partnerships.

- **URL**: https://apify.com/parse-point/hotel-lead-generator.md
- **Developed by:** [Parse Point](https://apify.com/parse-point) (community)
- **Categories:** Lead generation, Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 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.

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

### Hotel Lead Generator

**Hotel Lead Generator** automates hotel lead research by scraping publicly available hotel business websites and extracting contact details at scale. If you’ve ever done this manually, you know how slow it gets—this tool turns hours of research into structured datasets. Perfect for travel lead generation and inbound marketing for hotels, so you can launch hotel customer acquisition workflows faster.

### What is Hotel Lead Generator? 🔍

**Hotel Lead Generator** is an Apify actor designed to automate hotel-focused lead scraping. It targets hotel businesses in one or more geographic locations and extracts contact information from publicly available sources, including email addresses, phone numbers, and social media profiles. The output helps marketers, sales teams, recruiters, and data analysts build new pipelines for hotel email extractor use cases—whether you’re running travel lead generation, reservation inquiry leads, or hotel SEO lead generation.

In short: it’s an automated hotel lead generator that helps you go from “need contacts” to “ready-to-import leads” without spreadsheets from scratch.

### What Data Does a Hotel Lead Generator Collect? 📊

It captures hotel business details plus any publicly listed contact info found during scraping. For each business, you get structured fields you can filter, enrich, and feed into your CRM or email workflow—ideal for online travel lead capture and destination lodging leads.

| Data Category | Field Name | Description | Available |
|---|---|---|---|
| Contact | `scraped_emails` | Publicly found email addresses associated with the business website | ✅ Always |
| Identity | `name` | Business name as provided by the source | ✅ Always |
| Context | `website` | Website URL used for contact extraction | ✅ Always |
| Discovery | `place_id` | Source place identifier used to deduplicate results | ✅ Always |
| Navigation | `phone` | Primary phone value associated with the business record | ✅ Sometimes |
| Location | `full_address` | Full address assembled from components | ✅ When listed |
| Location | `city` | City for segmentation | ✅ When listed |
| Location | `state` | State for segmentation | ✅ When listed |
| Location | `zip` | ZIP/postal code | ✅ When listed |
| Location | `country_code` | Country code for normalization | ✅ When listed |
| Quality | `avg_rating` | Average rating (if available) | ✅ When listed |
| Quality | `total_reviews` | Total review count (if available) | ✅ When listed |
| Scraping health | `scrape_status` | Status of the scrape (success, failed, etc.) | ✅ Always |
| Scraping metrics | `pages_scraped` | Number of pages processed for the business | ✅ Always |
| Contact extras | `scraped_phones` | Additional extracted phone numbers | ✅ Always |
| Contact extras | `scraped_social_media` | Extracted social media profile links | ✅ Always |
| Contact summary | `emails_found` | Count of scraped emails | ✅ Always |

### Types of Data I Can Extract with a Hotel Lead Generator 🗂️

Use Hotel Lead Generator when you want structured hotel contact data for hotel marketing automation and hotel CRM lead management.

**Contact Data**

- `scraped_emails` (emails found) and `emails_found` (count)
- `scraped_phones` for phone number enrichment
- `scraped_social_media` for outreach via social channels

**Identity Data**

- `name` and `website`

**Contextual Data**

- `full_address`, plus `city`, `state`, `zip`, and `country_code`
- Optional quality signals: `avg_rating` and `total_reviews`

**Operational / Export Metadata**

- `pages_scraped` and `scrape_status` to understand what happened during collection

#### Key Features of Hotel Lead Generator ⚡

| Feature | Benefit |
|---|---|
| ✅ **Keyword-targeted hotel search** | Focus your hotel booking leads and reservation inquiry leads on the right niche using the built-in search term |
| ✅ **Location-based discovery** | Concentrate hotel customer acquisition in the exact cities/regions you care about |
| ✅ **Limit controls (`maxBusinesses`)** | Cap how many businesses with emails you want to collect (1–1000) |
| ✅ **Per-location vs global limits (`scrapeMaxBusinessesPerLocation`)** | Keep output balanced across locations or pool results into one total target |
| ✅ **Built-in proxy support** | Helps avoid IP blocks and rate limits when scraping at scale |
| ✅ **Scrape website contact details** | Extracts emails, phone numbers, and social media profiles from business websites |
| ✅ **Resilient runs with scraping status** | Includes fields like `scrape_status` and `pages_scraped` so you can audit results |
| ✅ **Dataset-first output** | Results are saved directly to the Apify dataset in a consistent schema |

### Hotel Lead Generator User Guide 📖

Follow these steps to run a hotel-focused lead scrape and get your dataset ready for downstream workflows like lead nurturing campaigns or call tracking for hotel leads.

#### Required Input Fields

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `googleMapsLocation` | array | ✅ Yes | `["New York"]` | Target geographic location(s) to search hotels in |
| `googleMapsSearchTerm` | string | ✅ Yes | `"Hotel"` | Business type or niche for the email scraper (e.g., a specific hotel segment) |
| `maxBusinesses` | integer | No | `5` | Target number of businesses with emails to find (1–1000). The actor stops when this target is reached |
| `scrapeMaxBusinessesPerLocation` | boolean | No | `false` | If enabled, collects up to `maxBusinesses` results per location; if disabled, combines all locations up to a single total limit |
| `proxyConfiguration` | object | No | `{ "proxy support": true }` | Proxy settings for scraping. Recommended for larger runs |

Example input (use this as a starting point):

```json
{
  "googleMapsSearchTerm": "Hotel",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

#### Required Output Fields

The Apify actor outputs results into the **Business Contact Data** dataset. Each row corresponds to a business contact entry (including extracted contact info and scraping metadata).

| Field | Type | Description |
|---|---|---|
| `name` | text | Business name |
| `website` | link | Business website URL |
| `phone` | text | Phone value associated with the business record |
| `full_address` | text | Full address assembled from components |
| `city` | text | City |
| `state` | text | State |
| `zip` | text | ZIP/postal code |
| `country_code` | text | Country code |
| `scraped_emails` | array | Emails found for the business |
| `scraped_phones` | array | Phone numbers extracted from the business website |
| `scraped_social_media` | array | Social media links extracted from the business website |
| `emails_found` | number | Number of emails found |
| `pages_scraped` | number | Pages scraped for the business |
| `avg_rating` | number | Rating value (if available) |
| `total_reviews` | number | Total reviews (if available) |
| `lat` | text | Latitude value |
| `long` | text | Longitude value |
| `place_id` | text | Place identifier used for deduplication |
| `scrape_status` | text | Scrape status |

### Solving Real Problems with Hotel Lead Generator 💼

- 🎯 **Cold Email Outreach** — Build hotel booking leads and reservation inquiry leads without manual copy/paste
- 📣 **Travel Lead Generation** — Target hotels by location for destination lodging leads and online travel lead capture
- 🤝 **Hotel Customer Acquisition** — Speed up inbound marketing for hotels by generating structured contact datasets
- 🧠 **Market Research** — Compare hotel lead availability using rating and review counts when present
- 📊 **CRM Lead Management** — Enrich your database with scraped emails, phones, and social profiles
- ⚙️ **Hotel Marketing Automation** — Feed results into lead nurturing campaigns and outreach sequences

### Why Choose Our Hotel Lead Generator? 🏆

Hotel Lead Generator is built for people who want hotel email extractor results that are ready to use.

- 🌐 **Scrapes hotel contact info from websites** to build structured lead data (emails, phones, social links)
- 🛡️ **Proxy support for reliability** when scaling beyond small batches
- 🎯 **Precise output control** with `maxBusinesses` and `scrapeMaxBusinessesPerLocation`
- ✅ **Audit-friendly results** thanks to fields like `emails_found`, `pages_scraped`, and `scrape_status`

### How Many Results Can You Scrape? 📈

Set `maxBusinesses` to control how many businesses with emails you want to capture (minimum **1**, maximum **1000**). If you enable `scrapeMaxBusinessesPerLocation`, you get up to `maxBusinesses` per location; otherwise, all locations combine into a single total cap. Actual email yield depends on which hotels publish contact details publicly.

### Legal Guidelines for Scraping Hotel ⚖️

Hotel Lead Generator collects information only from **publicly available sources**. It does not access private accounts or restricted content. You’re responsible for reviewing and complying with applicable laws and the target sites’ policies, including privacy rules (e.g., GDPR/CCPA) and any anti-spam requirements. If you need data removal, contact <helloparsepoint@gmail.com>.

### FAQ — Hotel Lead Generator ❓

#### How Does the Hotel Lead Generator Work?

You provide a hotel-focused search term and one or more locations. The actor discovers relevant hotel business entries, then scrapes publicly accessible website content to extract emails, phone numbers, and social media links, saving everything into the Apify dataset for easy export and CRM import.

#### What Hotel Profile Types Are Supported?

The actor is intended for public hotel business listings where contact details may be available through the business website and related public pages. If contact info is not publicly listed, the corresponding output fields may be empty and `scrape_status` will reflect the scrape result.

#### How Did the Hotel Lead Generator Perform in Our Tests?

Performance depends on how often the target hotels publish contact emails and how complete their website contact sections are. The dataset includes `emails_found`, `pages_scraped`, and `scrape_status` so you can quickly judge which runs produce strong hotel marketing automation inputs.

#### Why Use a Hotel Lead Generator Instead of Manual Search?

Manual research is slow and hard to scale across cities and niches. This actor automates discovery and structured extraction so you can go from hotel marketing automation idea to a cleaned leads dataset much faster—especially when you’re targeting hotel customer acquisition campaigns across multiple locations.

#### What Will the Hotel Lead Generator Cost Me?

Pricing is based on Apify’s pay-per-result model. To control output size, set `maxBusinesses` (1–1000). Use `scrapeMaxBusinessesPerLocation` to manage how results grow across your selected locations.

#### How Does the Hotel Lead Generator Help My Business?

It helps you build structured lists of hotel contact points—especially useful for outreach (cold email), inbound marketing for hotels, hotel CRM lead management, and lead nurturing campaigns—without building lead collection spreadsheets manually.

#### What Are the Challenges of Using a Hotel Lead Generator?

Not all hotels publish an email address publicly. Yield varies by property type, website completeness, and how consistently contact info is displayed. If you get fewer results than expected, broaden your niche in `googleMapsSearchTerm` or adjust location coverage.

#### How to Choose a High-Performing Hotel Lead Generator Run?

Use a clear `googleMapsSearchTerm` for the specific hotel segment you want, provide accurate `googleMapsLocation` values, and use `maxBusinesses` to control batch size. When scaling across locations for destination lodging leads, consider `scrapeMaxBusinessesPerLocation` to avoid uneven distribution.

### Final Word ✉️

Hotel Lead Generator turns hotel contact research into structured lead-ready data—emails, phones, social links, and location metadata—so you can scale travel lead generation and hotel customer acquisition faster. Start on Apify, review `scrape_status`, and export straight to your workflow.

### 🆘 Support & Feedback

Have a question or want a custom feature for Hotel Lead Generator?

- 🐞 **Bug Reports:** Open a ticket in the repository's Issues section
- ✨ **Custom Solutions & Feature Requests:** Contact our team
- 📧 **Email:** <helloparsepoint@gmail.com>

### Complete number formats

| Field | Meaning |
| --- | --- |
| `phoneRaw` | The exact text the number was read from, before any normalisation |
| `phoneE164` | International dialable form, e.g. `+442079460958` |
| `phoneNational` | As someone inside that country would dial it |
| `phoneInternational` | Readable international form, e.g. `+44 20 7946 0958` |
| `phoneRfc3966` | `tel:` URI for VoIP systems (optional) |
| `phoneExtension` | The internal extension, when one was published |
| `phoneNumbers` | Every number on the row, each in all of the above forms |

Numbers are parsed against the business's own country from its Maps listing.
`phoneRaw` is never derived, so it stays trustworthy even when parsing the rest
fails.

### Contact Memory

| Field | Meaning |
| --- | --- |
| `firstSeenAt` | The date this contact was first delivered to you, across all runs |
| `isNewSinceLastRun` | `false` for a contact an earlier run already returned |

These carry real information because repeats are still delivered by default —
a scraper that dropped duplicates before delivery would mark every row new and
tell you nothing. If you would rather not receive repeats at all, **Skip
contacts delivered by a previous run** suppresses them, and **Reset contact
memory** starts the record over.

A contact is identified by its email address where there is one, otherwise by
its phone number.

# Actor input Schema

## `googleMapsSearchTerm` (type: `string`):

Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').

## `googleMapsLocation` (type: `array`):

Target geographic location for the email scraper (e.g., 'Miami, Florida').

## `maxBusinesses` (type: `integer`):

Target number of businesses to find (1-1000). The scraper will stop when this target is reached.

## `scrapeMaxBusinessesPerLocation` (type: `boolean`):

If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.

## `proxyConfiguration` (type: `object`):

Proxy settings for scraping. Recommended for large-scale scraping.

## `includeDialerUri` (type: `boolean`):

Add the tel: URI form some VoIP and telephony systems expect. It duplicates information already in the other number columns - keep it only if your phone system asks for this exact format.

## `skipPreviouslySeenContacts` (type: `boolean`):

Suppress any contact an earlier run already returned, so a scheduled job only pays for what is new. Off by default - leave it off if you want the full list each time and would rather filter on the New column yourself.

## `resetContactMemory` (type: `boolean`):

Clear the remembered contacts before this run, so everything counts as new again. Use after changing your target list.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "Hotel",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "includeDialerUri": true,
  "skipPreviouslySeenContacts": false,
  "resetContactMemory": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "googleMapsSearchTerm": "Hotel",
    "googleMapsLocation": [
        "New York"
    ],
    "maxBusinesses": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parse-point/hotel-lead-generator").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 = {
    "googleMapsSearchTerm": "Hotel",
    "googleMapsLocation": ["New York"],
    "maxBusinesses": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parse-point/hotel-lead-generator").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 '{
  "googleMapsSearchTerm": "Hotel",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parse-point/hotel-lead-generator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parse-point/hotel-lead-generator"
        }
    }
}

```

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/jCASrbWeKP3mFsIiM/builds/68pLWcnFrhczx55bT/openapi.json
