# 🌏 Agoda B2B Email Scraper (`scraper-engine/agoda-b2b-emails-scraper`) Actor

🌏 Agoda B2B Email Scraper (agoda-b2b-emails-scraper) extracts business email contacts from Agoda for targeted lead generation. 🚀 Boost B2B sales, outreach & market research with fast, accurate scraping. 🔍 GDPR-friendly workflow options.

- **URL**: https://apify.com/scraper-engine/agoda-b2b-emails-scraper.md
- **Developed by:** [Scraper Engine](https://apify.com/scraper-engine) (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 $4.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/platform/actors/running/actors-in-store#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

## 🌏 Agoda B2B Email Scraper

**Automatically discover verified business emails tied to the Agoda hospitality ecosystem** using automated public web discovery — no Agoda login required, no API keys needed.

> 📊 **Tier Rating:** TIER 3 — Ecosystem discovery (pivoted)

> ℹ️ **How discovery works here:** Agoda's own listing pages are a heavily
> client-rendered app and do not deliver contact data to a public web
> request, so this actor discovers verified business emails from Agoda's
> own publicly announced operating partners instead — real hotel and
> hospitality management companies (independently confirmed to run
> multi-property portfolios distributed through Agoda) with their own,
> separately-indexed corporate websites that carry genuine public contact
> info. The `platform` input stays set to `Agoda.com` for continuity; the
> actual source websites searched are these partner companies' own domains,
> not agoda.com itself.

***

### 🚀 Why Choose This Actor?

- ⚡ **Fast & Efficient** — Uses browser impersonation (not a full headless browser) for maximum speed with minimal resource usage
- 🎯 **B2B Focused** — 29 pre-built search patterns specifically engineered to find corporate emails (not Gmail/Yahoo noise)
- 🔒 **Reliable Connection Handling** — Automatic retry logic keeps collection running smoothly
- 📊 **Live Results** — Each email is saved to your dataset in real time as it's discovered
- 🌍 **Location Targeting** — Filter results by city, region, or country for hyper-local prospecting
- 🔑 **Multi-Keyword** — Process dozens of industries/niches in a single run

***

### ✨ Key Features

- 🏢 **B2B Mode** — Corporate email discovery (contact@, info@, team@, domain-specific)
- 👤 **Personal Mode** — Broader discovery including all email types
- 🎨 **29 Pattern Templates** — From booking emails to sponsorship inquiries
- 🔄 **Smart Deduplication** — Each email address appears only once in your results
- 📍 **Geographic Filtering** — Target specific cities or regions
- 🌐 **Platform: Agoda Ecosystem** — Optimized queries against Agoda's publicly announced operating-partner companies, since agoda.com's own pages carry no server-delivered contact data
- ⚡ **Jitter Delays** — Human-like request timing to avoid detection
- 📈 **Real-Time Progress** — Live status updates and per-result logging

***

### 📥 Input Configuration

```json
{
  "keywords": ["hotel management", "revenue management", "franchise"],
  "platform": "Agoda.com",
  "location": "",
  "mode": "b2b",
  "maxEmails": 50,
  "maxEmailsPerPattern": 15,
  "patterns": ["email_for_bookings", "bio_email_basic", "contact_at_domain"],
  "proxyConfiguration": { "useApifyProxy": false }
}
```

| Field | Type | Description |
|-------|------|-------------|
| `keywords` | `array` | 🔑 Industries/niches to search (required) |
| `platform` | `string` | 🌐 Platform domain (default: `Agoda.com`) |
| `location` | `string` | 📍 City/region filter (optional, leave empty for global) |
| `mode` | `string` | 🎯 `b2b` (corporate emails) or `personal` (all types) |
| `maxEmails` | `integer` | 📊 Total email cap (1–50000, default: 10) |
| `maxEmailsPerPattern` | `integer` | 🔢 Per-pattern cap in B2B mode (default: 15) |
| `selectedPatterns` | `array` | 🎨 Specific patterns (empty = all 29 patterns) |
| `proxyConfiguration` | `object` | 🔒 Proxy settings (default: recommended configuration) |

***

### 📤 Output Format

Each discovered email is saved as a row in the Apify dataset:

```json
{
  "email": "reservations@example-hospitality-group.com",
  "leadType": "b2b",
  "pattern": "email_for_bookings",
  "keyword": "hotel management",
  "location": "",
  "network": "Agoda.com",
  "title": "Hotel Management & Partnerships | Example Hospitality Group",
  "description": "Multi-property hospitality management company distributed through Agoda and other channels...",
  "url": "https://www.example-hospitality-group.com/...",
  "scraped_at": "2026-05-25T15:00:00Z"
}
```

| Field | Description |
|-------|-------------|
| `email` | ✅ The discovered business email address |
| `leadType` | 🏷️ `b2b` or `personal` |
| `pattern` | 🎨 B2B search pattern that found this email |
| `keyword` | 🔑 Keyword used in the search |
| `location` | 📍 Location filter applied |
| `network` | 🌐 Platform label (Agoda.com) |
| `title` | 📋 Result title containing the email |
| `description` | 📝 Snippet text describing the result |
| `url` | 🔗 Source page URL (an Agoda operating-partner company's own site) |
| `scraped_at` | ⏰ UTC timestamp when the email was found |

***

### 🎨 Available B2B Patterns

| Pattern | What It Finds |
|---------|--------------|
| `email_for_bookings` | 📅 Booking & reservation emails |
| `bio_email_basic` | 📧 Bio email mentions with emoji |
| `job_applications` | 💼 Hiring & careers emails |
| `email_direct_mention` | 📬 Direct "email us at" posts |
| `contact_at_domain` | 🏢 `info@`, `contact@`, `hello@`, etc. |
| `business_development` | 🤝 B2B & partnership emails |
| `careers_hiring` | 👥 Recruitment contacts |
| `hr_recruitment` | 🏭 HR department emails |
| `customer_service` | 🎧 Support & help desk emails |
| `sponsor_me` | 💰 Sponsorship opportunity emails |
| `professional_services` | 🔧 Agency & consulting contacts |
| `bio_email_emoji_extended` | 💌 📩 📮 Emoji email mentions |
| `dm_or_email` | 💬 DM or email CTA posts |
| + 16 more | ... |

***

### 🚀 How to Use (Apify Console)

1. 🔐 Log in at [console.apify.com](https://console.apify.com) → **Actors**
2. 🔍 Find **Agoda B2B Email Scraper** and click it
3. ⚙️ Configure your inputs:
   - Add your target keywords (e.g., `marketing`, `restaurants`)
   - Set your location (e.g., `London`, `New York`)
   - Choose mode: `B2B` for corporate emails
   - Set max emails (e.g., `100`)
4. ▶️ Click **Start**
5. 📊 Watch real-time logs as emails are discovered
6. 📋 Open the **Output** tab to see your results table
7. 📁 Export to **JSON / CSV / Excel**

***

### 🔒 Reliability

The actor automatically retries transient connection issues so a single hiccup does not interrupt your run — failed requests are retried before being skipped, and collection continues with the next query.

***

### 🎯 Best Use Cases

- 🏠 **Host/Property Outreach** — Find contact emails of property owners
- 📍 **Local Market Prospecting** — Target hosts in specific cities or regions
- 🤝 **Partnership Discovery** — Find B2B contact emails for property management
- 📧 **Email List Building** — Build verified contact lists for hospitality outreach
- 🔍 **Market Research** — Understand active hosts and properties in your market

***

### ⚠️ Legal & Ethical Notice

- This actor only collects data from **publicly available**, indexed web sources
- Only emails that appear in **public content on Agoda's own publicly announced operating-partner companies' websites** are collected — not from agoda.com's authenticated or private areas.
- Users are responsible for compliance with **GDPR, CAN-SPAM, CCPA**, and applicable laws
- Do not use collected emails for spam or unsolicited bulk messaging
- Review Agoda's Terms of Service and each operating partner's own Terms of Service before use

***

### ❓ Frequently Asked Questions

**Q: Does this need a Agoda account?**
A: No — it searches publicly indexed content, including Agoda's own publicly announced operating-partner companies' websites.

**Q: Will it find private account emails?**
A: No — only publicly indexed content is searched.

**Q: How many emails can I collect per run?**
A: Up to 50,000 per run. Run multiple times for larger lists.

**Q: What makes B2B mode different?**
A: B2B mode filters out Gmail, Yahoo, Outlook, and other personal email domains, returning only corporate/domain-specific emails.

**Q: Do I need Apify proxies?**
A: Proxies are recommended and enabled by default for the most reliable results.

***

### 📞 Support & Feedback

- 🐛 Report issues in the **Issues** tab
- 💡 Feature requests welcome
- ⭐ If this actor saves you time, please leave a review!

# Actor input Schema

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

🔎 Search terms for Agoda via Google (e.g. boutique hotel Bali, beach resort Phuket). ✨ Add one or many keywords.

## `mode` (type: `string`):

👤 personal = Gmail/Outlook discovery | 🏢 b2b = corporate email patterns

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

👤 Personal mode: filter results to these domains (e.g. @gmail.com, @outlook.com). ⏭️ Ignored in B2B mode.

## `patterns` (type: `array`):

🏢 B2B only: 📂 empty list runs all patterns; or name specific keys from b2b\_patterns.py (e.g. email\_for\_bookings, bio\_email\_basic).

## `platform` (type: `string`):

📱 Target platform for email discovery (locked to Agoda).

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

🗺️ Geographic filter added to search queries (e.g. London, New York). 🌍 Leave empty for global results.

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

🎯 Maximum number of emails to collect across all keywords and patterns.

## `maxEmailsPerPattern` (type: `integer`):

📈 Cap emails collected per B2B search pattern (🏢 B2B mode only).

## `useProxy` (type: `boolean`):

✅ Enable proxy for Google Search requests. ⭐ Recommended: on for best results.

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

🔧 Optional proxy override when 🛡️ Use Apify Proxy is enabled. 🎯 Leave as default for best performance.

## Actor input object example

```json
{
  "keywords": [
    "hotel management",
    "revenue management",
    "franchise"
  ],
  "mode": "b2b",
  "customDomains": [
    "@outlook.com",
    "@gmail.com"
  ],
  "patterns": [
    "email_for_bookings",
    "bio_email_basic",
    "contact_at_domain",
    "business_development"
  ],
  "platform": "Agoda.com",
  "location": "",
  "maxEmails": 10,
  "maxEmailsPerPattern": 15,
  "useProxy": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "GOOGLE_SERP"
    ]
  }
}
```

# 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": [
        "hotel management",
        "revenue management",
        "franchise"
    ],
    "customDomains": [
        "@outlook.com",
        "@gmail.com"
    ],
    "patterns": [
        "email_for_bookings",
        "bio_email_basic",
        "contact_at_domain",
        "business_development"
    ],
    "location": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper-engine/agoda-b2b-emails-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": [
        "hotel management",
        "revenue management",
        "franchise",
    ],
    "customDomains": [
        "@outlook.com",
        "@gmail.com",
    ],
    "patterns": [
        "email_for_bookings",
        "bio_email_basic",
        "contact_at_domain",
        "business_development",
    ],
    "location": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scraper-engine/agoda-b2b-emails-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "hotel management",
    "revenue management",
    "franchise"
  ],
  "customDomains": [
    "@outlook.com",
    "@gmail.com"
  ],
  "patterns": [
    "email_for_bookings",
    "bio_email_basic",
    "contact_at_domain",
    "business_development"
  ],
  "location": ""
}' |
apify call scraper-engine/agoda-b2b-emails-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scraper-engine/agoda-b2b-emails-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/VIqaOXIksTcxENzOL/builds/Ktv64qKOFwUwEg9LT/openapi.json
