Booking Pro Host Scraper avatar

Booking Pro Host Scraper

Pricing

$19.00/month + usage

Go to Apify Store
Booking Pro Host Scraper

Booking Pro Host Scraper

Extract professional host contact information (emails, phone numbers, company names, addresses) from Booking.com hotels. Perfect for B2B lead generation, property management companies, and real estate professionals. Supports bulk extraction from search results URLs or individual hotel URLs.

Pricing

$19.00/month + usage

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

3

Monthly active users

4 days ago

Last modified

Share

Find property managers and rental agencies on Booking.com — with emails, phone numbers, company names, and SIRET numbers.

Booking.com legally requires professional hosts to declare their business information on every property page. This scraper collects that data at scale from any search URL or list of hotel pages, and exports everything as a clean dataset ready for outreach.

Built for: B2B lead generation · Property management prospecting · CRM enrichment · Sales outreach


What does it extract?

CategoryFields
ContactEmail, phone number (E.164 format), company name, business address
LegalSIRET / VAT number, trade register (RCS, greffe)
PropertyHotel name, address, city, GPS coordinates, distance from center
PricingPrice per night, total stay price, currency
DescriptionFull property description text
WebsiteDerived from email domain (excludes Gmail, Hotmail, etc.)

Output: one row per hotel, exportable as CSV or JSON from Apify Console.


Quick Start

You have 3 minutes? Here's the fastest path:

  1. Open the Input tab
  2. Leave mode as Search URL
  3. Go to Booking.com, search for a city with your dates, then copy the URL
  4. Paste it in Booking.com search URL
  5. Hit Run

In a few minutes you'll have a list of professional hosts with emails and phones. Results stream live in the run log.


Two Modes

🔍 Search URL

Discover all professional hosts from any Booking.com search page. Best for building lead lists from scratch.

  • Extracts all hotel URLs from the search results (via Booking's internal GraphQL API — fast)
  • Visits each hotel page with a real browser to read the legal contact section
  • Exports one row per hotel with all contact and property details
{
"mode": "searchUrl",
"searchUrl": "https://www.booking.com/searchresults.fr.html?ss=Ajaccio&checkin=2026-03-01&checkout=2026-03-02&group_adults=2",
"maxHotels": 100
}

Tip: apply filters on Booking.com first (apartments only, min. rating, etc.) before copying the URL — the scraper respects all filters.


🏨 Hotel URL(s)

Paste one URL or hundreds. Same field, same mode — works for single lookups and bulk enrichment.

{
"mode": "hotelUrls",
"hotelUrls": [
"https://www.booking.com/hotel/fr/le-bon-hotel.html",
"https://www.booking.com/hotel/fr/appartement-lyon.html"
]
}

Single URL:

{
"mode": "hotelUrls",
"hotelUrls": ["https://www.booking.com/hotel/fr/le-bon-hotel.html"]
}

Output Sample

Here's a typical row from a professional host:

{
"hotel_name": "Les Appartements du Port",
"hotel_city": "Marseille",
"hotel_email": "contact@appartements-du-port.fr",
"hotel_phone": "+33612345678",
"hotel_company_name": "RIVIERA IMMO SAS",
"hotel_website": "https://appartements-du-port.fr",
"hotel_registration_number": "81234567800012",
"hotel_trade_register": "RCS Marseille",
"hotel_contact_address": "12 Quai du Port",
"hotel_contact_city": "Marseille",
"hotel_contact_postal_code": "13002",
"hotel_contact_country": "fr",
"hotel_price_per_night": 89,
"hotel_price": 623,
"hotel_price_currency": "EUR",
"hotel_latitude": 43.2965,
"hotel_longitude": 5.3698
}

Input Parameters

Starting point

ParameterRequiredDescription
modesearchUrl or hotelUrls
searchUrlSearch modeAny Booking.com search results URL
hotelUrlsHotel modeArray of hotel page URLs (one or many)

Filters

ParameterDefaultDescription
maxHotels50Max hotels in search mode. 0 = no limit
filterProHostsOnlytrueOnly keep hotels where an email was found
deduplicateResultstrueOne row per host (same email = same host)

Performance

ParameterDefaultDescription
extractionQualityrecommendedfast / recommended / thorough — speed vs. reliability
antiBlockingmediumlow / medium / high — rate limiting aggressiveness
proxyConfigurationResidential FRResidential proxy strongly recommended

Advanced — Parallel workers

ParameterDefaultDescription
workerCount1Split work across N parallel Actor runs
workerIndex0This worker's index (0-based)

Use Cases

Use caseModeKey settings
Build a city lead listSearch URLfilterProHostsOnly: true
Enrich an existing listHotel URL(s)paste your hotel URLs
Check one property fastHotel URL(s)single URL
Market research (all hotels)Search URLfilterProHostsOnly: false
Avoid duplicate contactsSearch URLdeduplicateResults: true
Scrape 1000+ hotels fastSearch URLworkerCount: 3, launch 3 runs

Tips & Best Practices

Start small. Set maxHotels: 20 on your first run. Check the output, then scale up.

Apply Booking.com filters before copying the URL. Category (apartment, hotel…), rating, price range — all are respected by the scraper.

One row per host. Enable deduplicateResults for outreach — avoids contacting the same company multiple times when they manage several properties.

Getting blocked? Switch antiBlocking to High and reduce extractionQuality to Thorough.

Large datasets (500+ hotels)? Use workerCount: 3 and launch 3 Actor runs with workerIndex: 0, 1, 2. Each processes every 3rd hotel.


Performance & Cost

HotelsEstimated timeMemory
50~3 min1 GB
150~8 min1 GB
500~25 min2 GB

These figures assume extractionQuality: recommended with a residential proxy.


How Results Are Logged

During a run, real-time progress streams in the console:

Phase 2: 50/139 hotels | 12 emails | 89 remaining | ETA ~2 min

At the end, a breakdown explains the coverage:

Breakdown: 25 with email | 8 with legal info but no email | 106 with no contact data
  • With email — professional hosts with a contact email ✅
  • Legal info but no email — company registered but email field left blank
  • No contact data — private individual hosts (not required to declare business info)

FAQ

Why are some emails empty? Booking.com only requires professional hosts to fill in their legal section. Private individuals are exempt. The scraper extracts everything that's publicly declared — it can't invent data that isn't there.

What's the difference between hotel_price and hotel_price_per_night? hotel_price is the total for the queried stay (e.g. 7 nights × price). hotel_price_per_night is the average per night. Both come from the search URL dates.

Does it work outside France? Yes. Paste any Booking.com search URL from any country — the scraper follows the URL's language and country settings. For best results with residential proxies, change apifyProxyCountry to match (e.g. DE for Germany, ES for Spain).

Do I need a proxy? Yes. Booking.com blocks datacenter IPs. The default uses Apify Residential Proxies (France). Change apifyProxyCountry to target a different market.

Will it bypass Booking.com's bot detection? The scraper uses a real browser (Puppeteer) with standard user agents and request patterns. Residential proxies significantly reduce the risk of blocking, but no guarantees — Booking.com's detection can change.

Can I run it on a schedule? Yes. Use Apify's built-in scheduler to run weekly or monthly and keep your lead list fresh.


Running Locally

cd booking-pro-host-scraper
npm install
apify run

Input is read from input.json. Results are written to output.csv and storage/datasets/default/.


Deploying to Apify

$apify push

The Actor name is defined in .actor/actor.json. First deploy: make sure you're logged in with apify login.


Having issues? Contact corentin@outreacher.fr

Last updated: February 2026