Booking Pro Host Scraper avatar

Booking Pro Host Scraper

Under maintenance

Pricing

$19.00/month + usage

Go to Apify Store
Booking Pro Host Scraper

Booking Pro Host Scraper

Under maintenance

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

10

Total users

2

Monthly active users

22 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 publish their business information on every property listing. This scraper collects that data at scale and exports a clean, deduplicated dataset ready for B2B outreach.


Table of Contents


Quick Start

  1. Choose Country mode
  2. Select a country (e.g. France, Spain)
  3. Click Run

The scraper searches ~30 major cities and merges results into a single dataset. Results appear in the Dataset tab during the run (progressive output).


What It Extracts

CategoryFields
PropertyName, full address, street, postal code, city
ContactEmail, phone (E.164), company name, website
LegalSIRET / VAT, trade register (RCS)
Business addressCompany street, city, postal code, country

Output: One row per professional host (deduplicated). Export as CSV or JSON from Apify Console.


Modes

Select a country. The scraper expands to ~30 major cities.

{
"mode": "country",
"country": "France"
}

Supported: Albania, Australia, Austria, Belgium, Brazil, Bulgaria, Canada, Croatia, Cyprus, Czech Republic, Denmark, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Japan, Malta, Mexico, Montenegro, Morocco, Netherlands, Norway, Poland, Portugal, Romania, Serbia, Slovakia, Slovenia, South Africa, Spain, Sweden, Switzerland, Thailand, Turkey, United Arab Emirates, United Kingdom, United States.

Expected: ~3,000–6,000 pro hosts per country. France: 50 zones (20 Paris arrondissements + 30 cities).


City name

Target specific cities. Format: City, Country.

{
"mode": "cityName",
"cityNames": ["Marbella, Spain", "Nice, France"]
}

Enable multiSearch for 18 variations → 4–6× more unique hotels (1,400–1,660 per city).


Search URL(s)

Paste one or more Booking.com search URLs. Best for custom filters (dates, property types, amenities) applied directly in the URL.

{
"mode": "searchUrl",
"searchUrls": [
"https://www.booking.com/searchresults.html?ss=Marbella&checkin=2026-06-01&checkout=2026-06-07&nflt=ht_id%3D201"
]
}

~930 uniques per URL (API limit). multiSearch = 18 variations → 1,400–1,660 merged. multiSearch applies to City and Search URL only.


Hotel URL(s)

Enrich specific hotel pages. One URL or hundreds.

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

Input Parameters

Volume & filters

ParameterDefaultApplies toDescription
maxHotels0Country, City, Search URLMax hotels to process. 0 = no limit.
excludeHostEmailsAllList of emails to exclude (useful to avoid duplicates from previous runs).
propertyTypesCountry, CityFilter: Apartments, Villas, Holiday homes, Hotels, etc.
multiSearchfalseCity, Search URL only18 variations → 4–6× more uniques. Not available in Country mode.
filterProHostsOnlytrueAllKeep only hosts with a professional email.
onlyUniqueProHosttrueAllOne row per host (dedupe by email/SIRET/phone).

Technical

ParameterDefaultDescription
proxyConfigurationResidentialRequired. Booking.com blocks datacenter IPs. Set apifyProxyCountry to target market (FR, DE, ES, IT, GB…).
maxConcurrency12Phase 2 parallelism. Increase to 15 with 2048 MB memory for faster runs.

Output

Results stream to the Dataset tab during the run. No need to wait for completion.

{
"hotel_url": "https://www.booking.com/hotel/fr/les-appartements-du-port.html",
"hotel_name": "Les Appartements du Port",
"hotel_address": "12 Quai du Port, 13002 Marseille",
"hotel_address_street": "12 Quai du Port",
"hotel_postal_code": "13002",
"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"
}

Use Cases

GoalModeKey settings
Full country coverageCountrySelect country, optionally propertyTypes
Max emails per cityCitymultiSearch: true, maxHotels: 0
Custom filtersSearch URLPaste URLs with filters in query
Enrich existing listHotel URLsPaste your hotel URLs
Market researchAnyfilterProHostsOnly: false

Tips & Best Practices

Start small. Set maxHotels: 50 on first run. Validate output, then scale.

Residential proxy required. Booking.com blocks datacenter IPs. Use Apify residential proxy.

Faster runs. 2048 MB memory → more concurrency (~10–12 tabs). Default 1024 MB → ~4–5 tabs.

One row per host. onlyUniqueProHost: true (default) avoids duplicate contacts for the same company.

Exclude known leads. Use excludeHostEmails to paste emails from previous runs — only new leads are returned. Case-insensitive.

MultiSearch (City & Search URL only). 18 variations merge to 1,400–1,660 uniques per search. Not available in Country mode.


Performance

HotelsTime (estimate)Memory
100~1–2 min1024 MB
500~4–6 min1024 MB
1000~8–12 min1024 MB
2000+~15–25 min2048 MB recommended

Phase 1 (city search): 8 parallel requests. Phase 2 (hotel pages): 12 concurrent by default. Navigation timeout: 15s. Results stream to Dataset in real time.


FAQ

Why are some emails empty?
Only professional hosts must publish contact data. Private individuals are exempt.

Works outside France?
Yes. Set apifyProxyCountry to your target market (DE, ES, IT, GB, etc.).

Search shows 1,600+ but I get ~930?
API caps at offset 1000. Enable multiSearch (City/Search URL) for 18 variations → 1,400–1,660. Or use Country mode (split by city).

Can I run on a schedule?
Yes. Use Apify Scheduler for recurring runs.

Dataset empty during run?
Results stream progressively. Refresh the Dataset tab to see new rows.


Local Development

npm install
apify run

Input: input.json. Output: output.csv and storage/datasets/default/.

Deploy to Apify:

$apify push

See ./CHANGELOG.md for version history.