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
7
Total users
3
Monthly active users
4 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 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?
| Category | Fields |
|---|---|
| Contact | Email, phone number (E.164 format), company name, business address |
| Legal | SIRET / VAT number, trade register (RCS, greffe) |
| Property | Hotel name, address, city, GPS coordinates, distance from center |
| Pricing | Price per night, total stay price, currency |
| Description | Full property description text |
| Website | Derived 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:
- Open the Input tab
- Leave mode as Search URL
- Go to Booking.com, search for a city with your dates, then copy the URL
- Paste it in Booking.com search URL
- 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
| Parameter | Required | Description |
|---|---|---|
mode | ✅ | searchUrl or hotelUrls |
searchUrl | Search mode | Any Booking.com search results URL |
hotelUrls | Hotel mode | Array of hotel page URLs (one or many) |
Filters
| Parameter | Default | Description |
|---|---|---|
maxHotels | 50 | Max hotels in search mode. 0 = no limit |
filterProHostsOnly | true | Only keep hotels where an email was found |
deduplicateResults | true | One row per host (same email = same host) |
Performance
| Parameter | Default | Description |
|---|---|---|
extractionQuality | recommended | fast / recommended / thorough — speed vs. reliability |
antiBlocking | medium | low / medium / high — rate limiting aggressiveness |
proxyConfiguration | Residential FR | Residential proxy strongly recommended |
Advanced — Parallel workers
| Parameter | Default | Description |
|---|---|---|
workerCount | 1 | Split work across N parallel Actor runs |
workerIndex | 0 | This worker's index (0-based) |
Use Cases
| Use case | Mode | Key settings |
|---|---|---|
| Build a city lead list | Search URL | filterProHostsOnly: true |
| Enrich an existing list | Hotel URL(s) | paste your hotel URLs |
| Check one property fast | Hotel URL(s) | single URL |
| Market research (all hotels) | Search URL | filterProHostsOnly: false |
| Avoid duplicate contacts | Search URL | deduplicateResults: true |
| Scrape 1000+ hotels fast | Search URL | workerCount: 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
| Hotels | Estimated time | Memory |
|---|---|---|
| 50 | ~3 min | 1 GB |
| 150 | ~8 min | 1 GB |
| 500 | ~25 min | 2 GB |
These figures assume
extractionQuality: recommendedwith 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-scrapernpm installapify 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