Booking Pro Host Scraper
Pricing
$19.00/month + usage
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
Actor stats
0
Bookmarked
10
Total users
2
Monthly active users
22 days ago
Last modified
Categories
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
- What It Extracts
- Modes
- Input Parameters
- Output
- Use Cases
- Tips & Best Practices
- Performance
- FAQ
- Local Development
Quick Start
- Choose Country mode
- Select a country (e.g. France, Spain)
- 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
| Category | Fields |
|---|---|
| Property | Name, full address, street, postal code, city |
| Contact | Email, phone (E.164), company name, website |
| Legal | SIRET / VAT, trade register (RCS) |
| Business address | Company street, city, postal code, country |
Output: One row per professional host (deduplicated). Export as CSV or JSON from Apify Console.
Modes
Country (recommended)
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
| Parameter | Default | Applies to | Description |
|---|---|---|---|
maxHotels | 0 | Country, City, Search URL | Max hotels to process. 0 = no limit. |
excludeHostEmails | — | All | List of emails to exclude (useful to avoid duplicates from previous runs). |
propertyTypes | — | Country, City | Filter: Apartments, Villas, Holiday homes, Hotels, etc. |
multiSearch | false | City, Search URL only | 18 variations → 4–6× more uniques. Not available in Country mode. |
filterProHostsOnly | true | All | Keep only hosts with a professional email. |
onlyUniqueProHost | true | All | One row per host (dedupe by email/SIRET/phone). |
Technical
| Parameter | Default | Description |
|---|---|---|
proxyConfiguration | Residential | Required. Booking.com blocks datacenter IPs. Set apifyProxyCountry to target market (FR, DE, ES, IT, GB…). |
maxConcurrency | 12 | Phase 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
| Goal | Mode | Key settings |
|---|---|---|
| Full country coverage | Country | Select country, optionally propertyTypes |
| Max emails per city | City | multiSearch: true, maxHotels: 0 |
| Custom filters | Search URL | Paste URLs with filters in query |
| Enrich existing list | Hotel URLs | Paste your hotel URLs |
| Market research | Any | filterProHostsOnly: 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
| Hotels | Time (estimate) | Memory |
|---|---|---|
| 100 | ~1–2 min | 1024 MB |
| 500 | ~4–6 min | 1024 MB |
| 1000 | ~8–12 min | 1024 MB |
| 2000+ | ~15–25 min | 2048 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 installapify run
Input: input.json. Output: output.csv and storage/datasets/default/.
Deploy to Apify:
$apify push
See ./CHANGELOG.md for version history.