Booking Reviews Scraper avatar
Booking Reviews Scraper

Pricing

$10.00/month + usage

Go to Apify Store
Booking Reviews Scraper

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

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

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:

  1. 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
  2. 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

  1. Start small: Test with maxPages: 1 to validate everything works (~$0.009)
  2. Target specific hotels: Only scrape hotels you need to analyze
  3. Use sorting: Sort by score to get most relevant reviews first
  4. Batch processing: Process multiple hotels in smaller batches
  5. Datacenter proxies: If the site doesn't block, use datacenter proxies to reduce costs by 6x

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)

CategoryField NameDescriptionExample
Hotel Referencehotel_urlOriginal hotel URLhttps://www.booking.com/hotel/fr/fesch.fr.html
Reviewer Informationreviewer_nameName of the reviewerMaevane
reviewer_comments_countNumber of reviews posted by this reviewer14
reviewer_locationReviewer's country (normalized to Title Case)France
Rating DatascoreNumeric rating (0-10)8
Feedback Contentpositive_pointsPositive feedback points (separated by semicolons)Emplacement parfait. Rรฉservation tardive possible.
negative_pointsNegative feedback points (separated by semicolons)Bruyant, tempรฉrature ambiante mรฉdiocre
Keyword Filteringmatched_keywordsComma-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:

CategoryField NameDescriptionExample
Hotel Identityhotel_nameHotel name (normalized to Title Case)Hรดtel Fesch & Spa
hotel_addressHotel street address7, Rue Cardinal Fesch Bp 202
hotel_cityHotel city (normalized to Title Case)Ajaccio
hotel_latitudeGPS latitude41.9199919933826
hotel_longitudeGPS longitude8.7377156317234
Hotel Locationhotel_distance_center_kmDistance from city center in km (numeric only)1.1
Hotel Pricinghotel_pricePrice for search dates86.91
hotel_price_currencyPrice currencyEUR

Contact Enrichment Data (9 fields) โญ Available when enrichWithProHostContactDetails is enabled

Extracted from hotel main page for B2B prospecting:

CategoryField NameDescriptionExample
Business Contacthotel_company_nameLegal company nameHOTEL FESCH
hotel_emailBusiness email addressreservation@hotel-fesch.com
hotel_phonePhone number+330495516262
hotel_registration_numberBusiness registration number (SIRET in France)49502292300017
hotel_trade_registerTrade register nameRCS Montpellier
Business Addresshotel_contact_addressFull business address (normalized to Title Case)7 Rue Cardinal Fesch
hotel_contact_cityCity (normalized to Title Case)Ajaccio
hotel_contact_postal_codePostal code20000
hotel_contact_countryCountry codefr

๐Ÿ”€ 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

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:

  1. Provide any Booking.com search results URL (from a city, destination, or filtered search)
  2. 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)
  3. Optionally limit the number of hotels with maxHotels (set to 0 for unlimited)
  4. Then scrapes reviews from each hotel found (controlled by maxPagesForReviews - number of review pages per hotel)
  5. 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

ParameterTypeDefaultDescription
searchUrlstring-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
hotelUrlstring-Single hotel URL (alternative to hotelUrls or searchUrl)
hotelUrlsarray-List of hotel URLs to scrape (alternative to searchUrl or hotelUrl)
maxPagesForReviewsnumber1Review 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.
maxHotelsnumber0Hotels 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.
orderstringcompleted_descSorting order (see sorting options above)
maxConcurrencynumber5Number of pages to scrape in parallel (1-10). Higher = faster but more server load
useApifyProxybooleanfalseEnable Apify Proxy to avoid blocking. Recommended: true for large-scale scraping
apifyProxyGroupstringRESIDENTIALProxy type: RESIDENTIAL (recommended, avoids blocks) or DATACENTER (cheaper)
keywordFilterarray[]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.
enrichWithProHostContactDetailsbooleanfalseNEW! 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_points field (negative feedback)
  • Search is case-insensitive (works with any capitalization)
  • A new column matched_keywords shows which keywords were found in each review
  • Reviews without any matching keywords in negative_points are 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 hotelDataMap and 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-scraper
npm install

Local Execution

$npm start

The scraper will use the input.json file for configuration.

Apify Platform

  1. Push the Actor to Apify: apify push
  2. Configure input in the Apify web interface
  3. Run the Actor
  4. Download results from the Dataset

๐Ÿ“ž Support

Need help using the scraper or customizing the extraction? Contact me:


Transform hours of manual review reading into minutes of structured, actionable data. Make data-driven decisions that improve guest satisfaction and grow your business.