/apify-booking-host-leads
Find and enrich B2B leads from Booking.com - hotels, apartments, and vacation rentals - and pull each host's or property manager's real contact details (email, phone, company name, registration number). Use when the user says things like "get emails from Booking.com",
$ npx -y skills add apify/awesome-skills --skill apify-booking-host-leads --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/apify-booking-host-leads
Context preview
The summary Claude sees to decide when to auto-load this skill.
Find and enrich B2B leads from Booking.com - hotels, apartments, and vacation rentals - and pull each host's or property manager's real contact details (email, phone, company name, registration number). Use when the user says things like "get emails from Booking.com",
SKILL.md
apify-booking-host-leads.SKILL.mdname: apify-booking-host-leads
description: Find and enrich B2B leads from Booking.com - hotels, apartments, and vacation rentals - and pull each host's or property manager's real contact details (email, phone, company name, registration number). Use when the user says things like "get emails from Booking.com", "Booking.com lead generation", "find tour operator / property manager / host contacts", "scrape accommodation owner emails", or "build a list of Booking hosts". The host's email is usually already inside the Booking scraper's traderInfo field (EU/AU trader-transparency disclosure) - this skill leads with that and uses a Google Maps email scraper only as a fallback, instead of relying on Google Maps first (which mostly returns the wrong business).
author: Daniela Ryplová
author_url: https://github.com/danielarypl
metadata:
keywords: "booking, booking.com, lead-generation, leads, email-finder, hosts, property-managers, tour-operators, hospitality, traderinfo, contact-enrichment, b2b"
Booking.com host & operator lead finder
Turn a Booking.com destination search into a clean table of accommodation hosts / property managers with their real contact details.
The key insight
When you scrape Booking.com, the host's contact email is **sometimes already in the data** under `traderInfo` (a trader-transparency disclosure). But this is **region-dependent**: strong in the EU (Zurich apartments: 80%) and Australia (Melbourne apartments: 82% in a 50-property test), and increasingly present in Asia (Beijing apartments: 65% as of June 2026, typically a QQ, 163, or Gmail address plus a Chinese company name). It is historically sparser in the US and UK. A naive chained Google Maps email scraper found emails for only ~10% and often matched the wrong business.
**So use a waterfall**: try the cheapest source first, fall through to more expensive ones only for leads still missing a contact. Never start with a Google Maps email extractor.
| Tier | Source | Gets | Fires when | |------|--------|------|-----------| | 1 | Booking `traderInfo` | email, phone, company | always (free, already scraped) | | 2 | Google Maps Email Extractor (by name) | email, phone, socials, **website** | lead still has no email | | 3 | Google Search (by name) | a candidate **website** | lead still has no website | | 4 | Website contact scraper (on the website) | email / phone / socials | lead has a website but still no email |
Prerequisites
- Apify account ([sign up](https://apify.com))
- Authentication via one of:
- `apify login` (OAuth, if using the Apify CLI)
- `APIFY_TOKEN` environment variable
- Token from [Apify Console → Settings → Integrations](https://console.apify.com/settings/integrations)
Workflow
1. **Collect inputs.** Ask the user for: destination (city/area), property type (Apartments / Guest houses / Holiday homes / Villas surface the most independent operators; `none` = all), max properties, and output format (CSV / JSON / Google Sheet). 2. **Tier 1 - Scrape Booking.com.** Run `voyager/booking-scraper`. Build a lead row per property from `traderInfo` and `hostInfo` (see Mapping below). Mark rows where `traderInfo.email` is present as `contactSource: booking-trader`. 3. **Tier 2 - Google Maps (only rows still missing an email).** Run `lukaskrivka/google-maps-with-contact-details` with `searchStringsArray = ["<name>, <destination>", ...]`. Fill email/phone/socials and capture any **website** it returns. Mark filled rows `google-maps`. 4. **Tier 3 - Google Search (only rows still missing a website).** Run `apify/google-search-scraper` with one query per lead (`"<name> <city> official website"`). Take the first non-OTA/non-social `organicResults[].url` as the candidate website. 5. **Tier 4 - scrape the website (only rows with a website but no email).** Default: `vdrmota/contact-info-scraper` (deterministic, ~14s/site). Optional: `apify/ai-web-scraper` with a prompt for email/phone/contact-form URL - but in live testing it was slow and failed on multiple sites, so prefer the contact scraper. Mark filled rows `website-contact` (or `website-ai`). Cap the count to control cost. 6. **Deliver.** Output one row per property. Report total rows, % with an email, and the `contactSource` breakdown. Rows still empty keep `BookingURL` (contact via Booking messaging).
Mapping (Booking item → lead row)
| Output column | Source field | |---------------|--------------| | `name`, `type`, `address`, `city`, `country`, `rating`, `ratingLabel`, `stars`, `reviews`, `BookingURL` | top-level Booking fields (`address.full`, `address.city`, `address.country`, `rating`, `ratingLabel`, `reviews`, `url`) | | `email`, `phone` | `traderInfo.email` / `traderInfo.phone` → fallback Google Maps `emails[0]` / `phones[0]` | | `companyName`, `registrationNumber`, `traderAddress` | `traderInfo.companyName` / `.registrationNumber` / `.address` | | `hostName`, `managedProperties` | `hostInfo.name` / `hostInfo.managedProperties` (operator-size signal) | | `website`, `socials` | Google Maps fallback only; drop OTA domains (booking.com, agoda, expedia, etc.) | | `contactSource` | `booking-trader` \| `google-maps` \| `none` |
Put `email` and `phone` immediately after `address` in the output.
Always return `BookingURL` (link to the property), `rating`, `ratingLabel` (e.g. "Superb", "Exceptional"), and `reviews` (review count) for every lead. These give each row its own quality signal, so leads can be ranked and prioritized without re-opening Booking.
Actor routing
| Waterfall tier | Actor ID | Maintainer | Best for | |----------------|----------|------------|----------| | 1 - Booking + trader contacts | `voyager/booking-scraper` | community | **Primary.** `traderInfo` holds host email/phone/company | | 2 - email/social/website by name | `lukaskrivka/google-maps-with-contact-details` | community | Emails Booking doesn't disclose; also returns a website | | 3 - discover a website | `apify/google-search-scraper` | apif
Read more
name: apify-booking-host-leads description: Find and enrich B2B leads from Booking.com - hotels, apartments, and vacation rentals - and pull each host's or property manager's real contact details (email, phone, company name, registration number). Use when the user says things like "get emails from Booking.com", "Booking.com lead generation", "find tour operator / property manager / host contacts", "scrape accommodation owner emails", or "build a list of Booking hosts". The host's email is usually already inside the Booking scraper's traderInfo field (EU/AU trader-transparency disclosure) - this skill leads with that and uses a Google Maps email scraper only as a fallback, instead of relying on Google Maps first (which mostly returns the wrong business). author: Daniela Ryplová author_url: https://github.com/danielarypl metadata: keywords: "booking, booking.com, lead-generation, leads, email-finder, hosts, property-managers, tour-operators, hospitality, traderinfo, contact-enrichment, b2b"
Booking.com host & operator lead finder
Turn a Booking.com destination search into a clean table of accommodation hosts / property managers with their real contact details.
The key insight
When you scrape Booking.com, the host's contact email is **sometimes already in the data** under `traderInfo` (a trader-transparency disclosure). But this is **region-dependent**: strong in the EU (Zurich apartments: 80%) and Australia (Melbourne apartments: 82% in a 50-property test), and increasingly present in Asia (Beijing apartments: 65% as of June 2026, typically a QQ, 163, or Gmail address plus a Chinese company name). It is historically sparser in the US and UK. A naive chained Google Maps email scraper found emails for only ~10% and often matched the wrong business.
**So use a waterfall**: try the cheapest source first, fall through to more expensive ones only for leads still missing a contact. Never start with a Google Maps email extractor.
| Tier | Source | Gets | Fires when | |------|--------|------|-----------| | 1 | Booking `traderInfo` | email, phone, company | always (free, already scraped) | | 2 | Google Maps Email Extractor (by name) | email, phone, socials, **website** | lead still has no email | | 3 | Google Search (by name) | a candidate **website** | lead still has no website | | 4 | Website contact scraper (on the website) | email / phone / socials | lead has a website but still no email |
Prerequisites
- Apify account ([sign up](https://apify.com))
- Authentication via one of:
- `apify login` (OAuth, if using the Apify CLI)
- `APIFY_TOKEN` environment variable
- Token from [Apify Console → Settings → Integrations](https://console.apify.com/settings/integrations)
Workflow
1. **Collect inputs.** Ask the user for: destination (city/area), property type (Apartments / Guest houses / Holiday homes / Villas surface the most independent operators; `none` = all), max properties, and output format (CSV / JSON / Google Sheet). 2. **Tier 1 - Scrape Booking.com.** Run `voyager/booking-scraper`. Build a lead row per property from `traderInfo` and `hostInfo` (see Mapping below). Mark rows where `traderInfo.email` is present as `contactSource: booking-trader`. 3. **Tier 2 - Google Maps (only rows still missing an email).** Run `lukaskrivka/google-maps-with-contact-details` with `searchStringsArray = ["<name>, <destination>", ...]`. Fill email/phone/socials and capture any **website** it returns. Mark filled rows `google-maps`. 4. **Tier 3 - Google Search (only rows still missing a website).** Run `apify/google-search-scraper` with one query per lead (`"<name> <city> official website"`). Take the first non-OTA/non-social `organicResults[].url` as the candidate website. 5. **Tier 4 - scrape the website (only rows with a website but no email).** Default: `vdrmota/contact-info-scraper` (deterministic, ~14s/site). Optional: `apify/ai-web-scraper` with a prompt for email/phone/contact-form URL - but in live testing it was slow and failed on multiple sites, so prefer the contact scraper. Mark filled rows `website-contact` (or `website-ai`). Cap the count to control cost. 6. **Deliver.** Output one row per property. Report total rows, % with an email, and the `contactSource` breakdown. Rows still empty keep `BookingURL` (contact via Booking messaging).
Mapping (Booking item → lead row)
| Output column | Source field | |---------------|--------------| | `name`, `type`, `address`, `city`, `country`, `rating`, `ratingLabel`, `stars`, `reviews`, `BookingURL` | top-level Booking fields (`address.full`, `address.city`, `address.country`, `rating`, `ratingLabel`, `reviews`, `url`) | | `email`, `phone` | `traderInfo.email` / `traderInfo.phone` → fallback Google Maps `emails[0]` / `phones[0]` | | `companyName`, `registrationNumber`, `traderAddress` | `traderInfo.companyName` / `.registrationNumber` / `.address` | | `hostName`, `managedProperties` | `hostInfo.name` / `hostInfo.managedProperties` (operator-size signal) | | `website`, `socials` | Google Maps fallback only; drop OTA domains (booking.com, agoda, expedia, etc.) | | `contactSource` | `booking-trader` \| `google-maps` \| `none` |
Put `email` and `phone` immediately after `address` in the output.
Always return `BookingURL` (link to the property), `rating`, `ratingLabel` (e.g. "Superb", "Exceptional"), and `reviews` (review count) for every lead. These give each row its own quality signal, so leads can be ranked and prioritized without re-opening Booking.
Actor routing
| Waterfall tier | Actor ID | Maintainer | Best for | |----------------|----------|------------|----------| | 1 - Booking + trader contacts | `voyager/booking-scraper` | community | **Primary.** `traderInfo` holds host email/phone/company | | 2 - email/social/website by name | `lukaskrivka/google-maps-with-contact-details` | community | Emails Booking doesn't disclose; also returns a website | | 3 - discover a website | `apify/google-search-scraper` | apif
Community collection of Apify agent skills for AI coding assistants
Other skills on awesome-skills.
- /apify-ads-intelligence
Research, spy on, and analyze ads across Meta (Facebook & Instagram), Google (Ads Transparency Center + paid search results), TikTok (Ads Library + Creative Center), LinkedIn Ad Library, and X (Twitter — promoted tweets, best-effort) using Apify Actors. Use when user asks about
Open skill - /apify-ai-search-visibility-tracker
Track whether a brand and its competitors get cited or mentioned across Google AI Overviews, Google AI Mode, ChatGPT Search, Perplexity, Microsoft Copilot, and Google Gemini for a defined set of prompts, on a recurring schedule. Use when user asks to track AI visibility, monitor
Open skill - /apify-easy-competitive-intelligence
This skill should be used when the user asks to "analyze a competitor", "compare pricing", "competitive landscape", "market research", "what do customers think", "review intelligence", "hiring signals", "content strategy", "SEO battle", "build a battlecard", "competitive
Open skill - /apify-ecommerce
Scrape e-commerce data for pricing, reviews, bestsellers, and seller discovery across 30+ platforms including Amazon, Walmart, eBay, Shopify, WooCommerce, and more. Use when user asks about product prices, competitor analysis, store scraping, tech stack detection, food delivery,
Open skill - /apify-financial-news
Discover and extract financial news for tracked portfolio companies across 33 verified Tier 1 sources (Bloomberg, Reuters, FT, WSJ, IntelliNews, ČTK, PAP, BTA, TASR, ING Think, ECB, EC Press Corner, ...) plus broad Google News fallback. Use when the user asks to find news about
Open skill - /apify-financial-osint
Social-listening signals for tracked portfolio companies via Apify Actors — Reddit sentiment (fatihtahta), Twitter/X real-time mentions (kaitoeasyapi pay-per-result), Trustpilot service quality (getwally.net). Use when the user asks for sentiment, social media mentions, customer
Open skill

