Booking Reviews Scraper
Pricing
$10.00/month + usage
Booking Reviews Scraper
Extract hotel reviews from Booking.com with reviewer info, scores, and feedback. Supports pagination, sorting (recent/highest/lowest), and bulk processing. Extracts 15 fields per review: reviewer details, dates, scores, travel context, and positive/negative points. Perfect for sentiment analysis.
Pricing
$10.00/month + usage
Rating
0.0
(0)
Developer

Corentin Robert
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Last updated: January 23, 2026
๐ฏ Why use this scraper?
Professional tool for Booking.com review analysis - Easily extract all reviews and hotel information for your analysis.
๐ Two flexible usage modes:
-
Specific hotel URLs: Analyze one or multiple specific properties
- Provide a single hotel URL
- Or multiple hotel URLs at once
- Perfect for analyzing specific hotels or comparing targeted properties
-
Centralized URL (Search URL): Analyze all hotels from a search
- Provide a Booking.com search URL (city, destination, filters)
- The scraper automatically extracts all hotels from the search
- Then retrieves reviews from each hotel
- Ideal for analyzing a complete market or entire destination
โ What you get
Structured data ready for analysis:
- Complete reviews: All comments with scores, positive/negative points
- Reviewer information: Who posted, from where, review history
- Hotel data: Name, address, GPS coordinates, price, ratings, policies
- Contact data (optional): Email, phone, SIRET for B2B prospecting
- CSV export: Format ready for Excel, Google Sheets, or analysis tools
Perfect for professionals who want to do review analysis: hoteliers, market researchers, travel agencies, real estate investors.
๐ Data extraction details
8 core fields per review (or 16 fields with hotel enrichment, or 25 fields with contact enrichment) including:
- Reviewer information: Name, location (country), number of reviews posted
- Rating data: Score (numeric 0-10)
- Feedback content: Positive points, negative points (separated and cleaned)
- Hotel reference: Original hotel URL for tracking
- Hotel enrichment (searchUrl mode): Hotel name, address, GPS coordinates, distance from center, pricing - automatically extracted from search results
- Contact enrichment (optional): Company name, email, phone, registration number, business address - extracted from hotel main page
๐ Key Features
๐ Smart Input Modes
Three ways to provide hotels:
- โ Search Results URL (NEW!): Provide any Booking.com search URL - automatically extracts all hotels and scrapes their reviews
- โ Single Hotel URL: Quick analysis of one property
- โ Multiple Hotel URLs: Compare reviews across specific hotels
๐ Complete Review Data Extraction
Extract every detail from Booking.com reviews:
- โ Reviewer profiles: Know who's reviewing (name, location, review history)
- โ Detailed ratings: Numeric scores (0-10)
- โ Structured feedback: Separated positive and negative points
๐ Flexible Sorting Options
Sort reviews exactly how you need them:
- Most Recent First (
completed_desc) - See latest feedback first - Oldest First (
completed_asc) - Historical analysis - Highest Score First (
score_desc) - Best reviews first - Lowest Score First (
score_asc) - Identify improvement areas - Featured Reviews Only (
featuredreviews) - Official selections
๐ Pagination Support
Scrape multiple pages of reviews:
- Each page contains ~25 reviews
- Specify how many pages to scrape (1-100)
- Automatic URL generation with pagination parameters
โก Bulk Processing
Process multiple hotels simultaneously:
- Search Results Mode: Automatically extract all hotels from a Booking.com search URL
- Single hotel: Quick analysis of one property
- Multiple hotels: Compare reviews across properties
- Parallel processing for maximum speed
๐ผ Use Cases and Client Benefits
๐จ For Hoteliers and Property Managers
The Problem: You need to analyze guest feedback to improve your property, but manually reading through hundreds of reviews is time-consuming and you might miss important patterns.
The Solution: Extract all reviews with structured data to identify common complaints, track improvement over time, and benchmark against competitors.
Client Benefits:
- ๐ Data-driven decisions: Identify the most common issues across all reviews
- ๐ Trend analysis: Track how ratings change over time
- ๐ฏ Priority fixes: See which negative points appear most frequently
- ๐ฐ Competitive analysis: Compare your reviews with competitor hotels
- โก Time savings: Analyze 1000 reviews in minutes, not days
ROI: Make informed improvement decisions based on actual guest feedback. One improvement based on review data can increase bookings and revenue significantly.
๐ For Market Researchers and Analysts
The Problem: You need comprehensive review data for market analysis, but manual collection is slow, expensive, and error-prone.
The Solution: Extract structured review data from multiple hotels for comparative analysis.
Client Benefits:
- ๐ Complete datasets: All reviews with 15 structured fields each
- ๐ Sentiment analysis: Analyze positive vs. negative feedback patterns
- ๐ Market trends: Study rating trends, common complaints, guest preferences
- ๐พ Structured data: Ready for analysis in CSV, JSON, or Excel
- ๐ฏ Competitive intelligence: Compare multiple hotels side-by-side
ROI: Complete market research in hours instead of weeks. Deliver insights that command premium consulting fees.
๐ข For Travel Agencies and OTAs
The Problem: You need to understand guest satisfaction across properties to make better recommendations, but you don't have structured review data.
The Solution: Extract and analyze reviews from multiple hotels to build a comprehensive database.
Client Benefits:
- ๐ฏ Better recommendations: Make data-driven property suggestions
- ๐ Quality assurance: Identify properties with consistent issues
- ๐ฐ Value optimization: Find properties with best value (high scores, low prices)
- ๐ Trend monitoring: Track property quality over time
- โก Automated updates: Refresh review data regularly
ROI: Provide better recommendations that increase customer satisfaction and repeat bookings.
๐ For Real Estate and Property Investment
The Problem: You need to evaluate hotel properties for investment, but you don't have comprehensive review data to assess guest satisfaction.
The Solution: Extract all reviews to analyze property performance and identify improvement opportunities.
Client Benefits:
- ๐ฐ Investment analysis: Assess property quality through guest feedback
- ๐ Due diligence: Identify recurring issues before acquisition
- ๐ฏ Improvement opportunities: Find areas to increase property value
- ๐ Performance tracking: Monitor property ratings over time
- ๐ก Renovation priorities: Focus improvements on most common complaints
ROI: Make better investment decisions with complete guest feedback data. Avoid properties with systemic issues.
๐ Concrete Results: Before vs. After
Before (without the scraper)
- โฑ๏ธ 2-3 hours to manually read and extract data from 50 reviews
- ๐ Visit each review page individually
- โ Risk of missing important reviews or information
- ๐ Repetitive copy-paste work
- ๐ธ High opportunity cost (time you could spend on analysis)
- ๐ Stress from incomplete or unstructured data
- ๐ No easy way to compare reviews across hotels
After (with the scraper)
- โก 5-10 minutes to get complete structured data for 100+ reviews
- โ 15 data fields automatically extracted per review
- ๐ Ready export in CSV format - no formatting needed
- ๐ฏ Instant filtering and analysis in structured data
- ๐ฐ Higher revenue: Make data-driven decisions faster
- ๐ Professional confidence: Deliver comprehensive, accurate analysis
- ๐ Easy comparison: Compare reviews across multiple hotels instantly
Time saved: 95% reduction in data collection time
Quality improvement: 100% data coverage vs. selective manual extraction
Analysis capability: Structured data ready for advanced analytics
๐ฐ Costs and Optimization
โ ๏ธ Cost Estimation (Based on Real Runs)
With residential proxies (recommended to avoid blocks):
- ~$0.0087 per review page scraped
- 100 reviews (4 pages) = ~$0.035
- 1,000 reviews (40 pages) = ~$0.35
- 10,000 reviews (400 pages) = ~$3.50
With datacenter proxies (cheaper, but may be blocked):
- ~$0.0015 per review page scraped
- 100 reviews (4 pages) = ~$0.006
- 1,000 reviews (40 pages) = ~$0.06
- 10,000 reviews (400 pages) = ~$0.60
๐ก Cost Optimization Tips
- Start small: Test with
maxPages: 1to validate everything works (~$0.009) - Target specific hotels: Only scrape hotels you need to analyze
- Use sorting: Sort by score to get most relevant reviews first
- Batch processing: Process multiple hotels in smaller batches
- Datacenter proxies: If the site doesn't block, use datacenter proxies to reduce costs by 6x
Recommended Starting Configuration
For testing:
{"hotelUrl": "https://www.booking.com/hotel/fr/fesch.fr.html","maxPagesForReviews": 1,"order": "completed_desc","useApifyProxy": true,"apifyProxyGroup": "RESIDENTIAL"}
Cost: ~$0.009 to test
For single hotel analysis:
{"hotelUrl": "https://www.booking.com/hotel/fr/fesch.fr.html","maxPagesForReviews": 10,"order": "score_asc","useApifyProxy": true,"apifyProxyGroup": "RESIDENTIAL"}
Cost: ~$0.087 for ~250 reviews
For multiple hotels comparison:
{"hotelUrls": ["https://www.booking.com/hotel/fr/fesch.fr.html","https://www.booking.com/hotel/fr/another-hotel.fr.html"],"maxPagesForReviews": 5,"order": "completed_desc","useApifyProxy": true,"apifyProxyGroup": "RESIDENTIAL"}
Cost: ~$0.087 for 2 hotels ร 5 pages = ~250 reviews per hotel
For search results (extract all hotels automatically):
{"searchUrl": "https://www.booking.com/searchresults.fr.html?ss=Ajaccio&checkin=2026-01-23&checkout=2026-01-24","maxPagesForReviews": 2,"maxHotels": 0,"order": "completed_desc","useApifyProxy": true,"apifyProxyGroup": "RESIDENTIAL"}
Cost: Depends on number of hotels found in search (typically ~$0.0087 per hotel page with residential proxies)
For testing with limited hotels:
{"searchUrl": "https://www.booking.com/searchresults.fr.html?ss=Ajaccio&checkin=2026-01-23&checkout=2026-01-24","maxPagesForReviews": 1,"maxHotels": 10,"order": "completed_desc","useApifyProxy": false}
This will extract only 10 hotels (even if search finds 48) and scrape 1 page of reviews per hotel. Perfect for quick testing!
๐ Complete Data Fields Extracted
8 core fields per review (or 16 fields with hotel enrichment, or 25 fields with contact enrichment):
Review Data (8 core fields)
| Category | Field Name | Description | Example |
|---|---|---|---|
| Hotel Reference | hotel_url | Original hotel URL | https://www.booking.com/hotel/fr/fesch.fr.html |
| Reviewer Information | reviewer_name | Name of the reviewer | Maevane |
reviewer_comments_count | Number of reviews posted by this reviewer | 14 | |
reviewer_location | Reviewer's country (normalized to Title Case) | France | |
| Rating Data | score | Numeric rating (0-10) | 8 |
| Feedback Content | positive_points | Positive feedback points (separated by semicolons) | Emplacement parfait. Rรฉservation tardive possible. |
negative_points | Negative feedback points (separated by semicolons) | Bruyant, tempรฉrature ambiante mรฉdiocre | |
| Keyword Filtering | matched_keywords | Comma-separated keywords found (only when keywordFilter is enabled) | mobilier, furniture |
Hotel Enrichment Data (7 fields) โญ Available with searchUrl mode
Automatically extracted from Booking.com search results:
| Category | Field Name | Description | Example |
|---|---|---|---|
| Hotel Identity | hotel_name | Hotel name (normalized to Title Case) | Hรดtel Fesch & Spa |
hotel_address | Hotel street address | 7, Rue Cardinal Fesch Bp 202 | |
hotel_city | Hotel city (normalized to Title Case) | Ajaccio | |
hotel_latitude | GPS latitude | 41.9199919933826 | |
hotel_longitude | GPS longitude | 8.7377156317234 | |
| Hotel Location | hotel_distance_center_km | Distance from city center in km (numeric only) | 1.1 |
| Hotel Pricing | hotel_price | Price for search dates | 86.91 |
hotel_price_currency | Price currency | EUR |
Contact Enrichment Data (9 fields) โญ Available when enrichWithProHostContactDetails is enabled
Extracted from hotel main page for B2B prospecting:
| Category | Field Name | Description | Example |
|---|---|---|---|
| Business Contact | hotel_company_name | Legal company name | HOTEL FESCH |
hotel_email | Business email address | reservation@hotel-fesch.com | |
hotel_phone | Phone number | +330495516262 | |
hotel_registration_number | Business registration number (SIRET in France) | 49502292300017 | |
hotel_trade_register | Trade register name | RCS Montpellier | |
| Business Address | hotel_contact_address | Full business address (normalized to Title Case) | 7 Rue Cardinal Fesch |
hotel_contact_city | City (normalized to Title Case) | Ajaccio | |
hotel_contact_postal_code | Postal code | 20000 | |
hotel_contact_country | Country code | fr |
๐ Sorting Options Explained
Most Recent First (completed_desc) - Default
Best for: Staying up-to-date with latest guest feedback
- See the most recent reviews first
- Track recent trends and changes
- Monitor current guest satisfaction
Oldest First (completed_asc)
Best for: Historical analysis and trend tracking
- Analyze feedback evolution over time
- Compare old vs. new reviews
- Track improvement or decline patterns
Highest Score First (score_desc)
Best for: Showcasing positive feedback
- Highlight best reviews
- Identify what guests love most
- Build marketing materials from positive reviews
Lowest Score First (score_asc)
Best for: Identifying improvement areas
- Focus on critical feedback
- Prioritize issues to fix
- Understand what guests dislike most
Featured Reviews Only (featuredreviews)
Best for: Official selections
- Get only Booking.com featured reviews
- Usually the most detailed and helpful reviews
- Curated by Booking.com
๐ก How to Use the Data
Sentiment Analysis
Analyze positive vs. negative points to understand overall guest satisfaction and identify common themes.
Trend Analysis
Track scores and feedback over time to see if property improvements are reflected in reviews.
Competitive Benchmarking
Compare review scores and feedback across multiple hotels to identify competitive advantages or weaknesses.
Issue Prioritization
Count frequency of negative points to prioritize which issues to address first.
Guest Segmentation
Analyze by traveler type (couple, solo, family) to understand different guest needs and preferences.
Export to Analytics Tools
Import CSV data into Excel, Google Sheets, or business intelligence tools for advanced analysis.
Create Reports
Generate professional reports for stakeholders with key metrics and insights from review data.
๐ What You Receive
- โ Automatic hotel discovery from search results (NEW! - just provide a search URL)
- โ Complete review database with all available reviews
- โ 8 core fields per review automatically extracted
- โ +7 hotel enrichment fields when using searchUrl mode (hotel name, address, GPS, distance, pricing)
- โ +9 contact fields when enrichWithProHostContactDetails is enabled (company, email, phone, address, registration)
- โ Export in CSV format - ready for analysis
- โ Progressive CSV writing - data appears in real-time as reviews are extracted
- โ Up-to-date data extracted directly from Booking.com
- โ Ready to use - no additional processing needed
- โ Structured and clean - perfect for analysis or import
๐ Input Configuration
The scraper supports three input modes:
Mode 1: Search Results URL (NEW! โญ)
Automatically extract hotels from a Booking.com search and scrape all their reviews:
{"searchUrl": "https://www.booking.com/searchresults.fr.html?ss=Ajaccio&checkin=2026-01-23&checkout=2026-01-24&group_adults=2&no_rooms=1","maxPagesForReviews": 2,"maxHotels": 0,"order": "completed_desc"}
How it works:
- Provide any Booking.com search results URL (from a city, destination, or filtered search)
- The scraper automatically extracts all hotels from the search results using Booking.com's GraphQL API via Puppeteer (with automatic HTML fallback if API fails)
- Optionally limit the number of hotels with
maxHotels(set to 0 for unlimited) - Then scrapes reviews from each hotel found (controlled by
maxPagesForReviews- number of review pages per hotel) - Perfect for analyzing all hotels in a destination or comparing hotels from a search
Technical details:
- Uses Puppeteer to make GraphQL requests from a real browser context (more reliable than direct fetch)
- Automatically falls back to HTML extraction if GraphQL API returns errors
- Handles HTML entity decoding (
&โ&) automatically
Important distinctions:
maxPagesForReviews: Controls how many review pages to scrape per hotel (each page = ~25 reviews)maxHotels: Limits how many hotels to extract from search results (0 = unlimited, extract all)
Example use cases:
- Scrape reviews from all hotels in a city (e.g., "All hotels in Ajaccio")
- Analyze hotels matching specific filters (price range, amenities, etc.)
- Compare reviews across multiple hotels from a single search
Mode 2: Single Hotel URL
Single hotel:
{"hotelUrl": "https://www.booking.com/hotel/fr/fesch.fr.html","maxPagesForReviews": 2,"order": "completed_desc"}
Mode 3: Multiple Hotel URLs (Bulk)
Multiple hotels (bulk):
{"hotelUrls": ["https://www.booking.com/hotel/fr/fesch.fr.html","https://www.booking.com/hotel/fr/another-hotel.fr.html"],"maxPagesForReviews": 5,"order": "score_asc"}
Advanced Configuration
{"hotelUrls": ["https://www.booking.com/hotel/fr/fesch.fr.html"],"maxPagesForReviews": 10,"order": "score_asc","maxConcurrency": 3,"useApifyProxy": true,"apifyProxyGroup": "RESIDENTIAL"}
Parameter Reference
| Parameter | Type | Default | Description |
|---|---|---|---|
searchUrl | string | - | NEW! Booking.com search results URL. Automatically extracts all hotels from search and scrapes their reviews. Example: https://www.booking.com/searchresults.fr.html?ss=Ajaccio&checkin=2026-01-23&checkout=2026-01-24 |
hotelUrl | string | - | Single hotel URL (alternative to hotelUrls or searchUrl) |
hotelUrls | array | - | List of hotel URLs to scrape (alternative to searchUrl or hotelUrl) |
maxPagesForReviews | number | 1 | Review pages per hotel: Number of review pages to scrape per hotel (1-100). Each page contains ~25 reviews. This controls how many review pages are scraped for each hotel. Default: 1 (for daily testing). Use 5-10 for production. |
maxHotels | number | 0 | Hotels limit (Search URL only): Maximum number of hotels to extract from search results. Set to 0 for unlimited (extract all). Useful for testing with a smaller sample. Example: Set to 10 to test with only 10 hotels even if search finds 48. |
order | string | completed_desc | Sorting order (see sorting options above) |
maxConcurrency | number | 5 | Number of pages to scrape in parallel (1-10). Higher = faster but more server load |
useApifyProxy | boolean | false | Enable Apify Proxy to avoid blocking. Recommended: true for large-scale scraping |
apifyProxyGroup | string | RESIDENTIAL | Proxy type: RESIDENTIAL (recommended, avoids blocks) or DATACENTER (cheaper) |
keywordFilter | array | [] | NEW! Optional keyword whitelist. Only keep reviews containing at least one keyword. Keywords are searched ONLY in the negative_points field (case-insensitive). Leave empty to keep all reviews. Example: ["mobilier", "furniture", "chaise", "table", "lit", "bed"] to filter reviews about furniture issues. |
enrichWithProHostContactDetails | boolean | false | NEW! Enable to extract professional host business contact information (company name, email, phone, address, registration number) from each hotel's main page. This data is useful for B2B prospecting. Note: This requires visiting each hotel page, which may slow down scraping. |
๐ Keyword Filtering Feature (NEW!)
Filter reviews by keywords to focus on specific topics:
{"searchUrl": "https://www.booking.com/searchresults.fr.html?ss=Ajaccio","maxPagesForReviews": 5,"keywordFilter": ["mobilier", "furniture", "chaise", "table", "lit", "bed", "matelas", "mattress"]}
How it works:
- Only reviews containing at least one keyword from the list are kept
- Keywords are searched ONLY in the
negative_pointsfield (negative feedback) - Search is case-insensitive (works with any capitalization)
- A new column
matched_keywordsshows which keywords were found in each review - Reviews without any matching keywords in
negative_pointsare filtered out (not saved)
Use cases:
- ๐ช Furniture issues: Filter reviews mentioning furniture problems (
["mobilier", "furniture", "chaise", "table", "lit"]) - ๐๏ธ Bed quality: Focus on bed/mattress feedback (
["lit", "bed", "matelas", "mattress", "sommeil"]) - ๐ฟ Bathroom problems: Track bathroom-related issues (
["salle de bain", "bathroom", "douche", "shower"]) - ๐ฝ๏ธ Restaurant feedback: Get reviews about hotel restaurants (
["restaurant", "dรฎner", "dinner", "petit dรฉjeuner"]) - ๐ Pool/amenities: Filter reviews about specific amenities (
["piscine", "pool", "spa", "parking"])
Example output:
- Without filter: 1000 reviews extracted
- With
keywordFilter: ["mobilier", "furniture"]: Only 45 reviews mentioning furniture are kept - Each kept review has
matched_keywords: "mobilier, furniture"showing which keywords matched
๐ Hotel Contact Enrichment Feature (NEW!)
Extract business contact information for B2B prospecting:
{"searchUrl": "https://www.booking.com/searchresults.fr.html?ss=Ajaccio","maxPagesForReviews": 5,"enrichWithProHostContactDetails": true}
What you get:
hotel_company_name: Legal company name (e.g., "HOTEL FESCH")hotel_email: Business email address (e.g., "reservation@hotel-fesch.com")hotel_phone: Phone number (e.g., "+330495516262")hotel_registration_number: Business registration number (SIRET in France, e.g., "49502292300017")hotel_trade_register: Trade register name (e.g., "tribunal de commerce")hotel_contact_address: Full business address (e.g., "7 rue cardinal fesch")hotel_contact_city: City (e.g., "ajaccio")hotel_contact_postal_code: Postal code (e.g., "20000")hotel_contact_country: Country code (e.g., "fr")
How it works:
- The scraper visits each hotel's main page (not the reviews page) once per hotel
- Extracts contact information from the Apollo GraphQL data embedded in the page
- Stores this data in
hotelDataMapand adds it to all reviews from that hotel - Perfect for B2B prospecting and lead generation
Performance note:
- This feature adds one additional page visit per hotel (before scraping reviews)
- For 10 hotels, this adds ~10-15 seconds to the total scraping time
- Recommended for B2B use cases where contact information is valuable
๐ Installation and Usage
Local Installation
cd scrapers/booking-reviews-scrapernpm install
Local Execution
$npm start
The scraper will use the input.json file for configuration.
Apify Platform
- Push the Actor to Apify:
apify push - Configure input in the Apify web interface
- Run the Actor
- Download results from the Dataset
๐ Support
Need help using the scraper or customizing the extraction? Contact me:
- Email: corentin@outreacher.fr
- LinkedIn: https://www.linkedin.com/in/robertcorentin/
Transform hours of manual review reading into minutes of structured, actionable data. Make data-driven decisions that improve guest satisfaction and grow your business.