Pricing
$24.99/month + usage
Booking Scraper
Scrape Booking.com hotels at scale. Extract prices, ratings, reviews, photos, availability for any destination. Filter by stars, price, score. Get 20+ data points per hotel. Supports all currencies & languages. Fast, reliable with residential proxies
Pricing
$24.99/month + usage
Rating
0.0
(0)
Developer
Actor stats
2
Bookmarked
9
Total users
2
Monthly active users
3 months ago
Last modified
Categories
Share
Booking.com Hotel Scraper
by SilentFlow
Extract hotel data from Booking.com at scale. Get prices, ratings, reviews, photos, and availability for any destination worldwide.
β¨ Why use this scraper?
- π Comprehensive data β 20+ fields per hotel: prices, reviews, photos, amenities, and more
- π Global coverage β Search any destination worldwide: cities, regions, or entire countries
- π° Real-time prices β Get current availability and pricing for your dates
- β‘ Fast & reliable β ~25 hotels/second with residential proxy support
π― Use cases
| Industry | Application |
|---|---|
| Travel agencies | Compare hotel prices across destinations |
| Market research | Analyze hospitality market trends |
| Price monitoring | Track competitor pricing |
| Data analytics | Build travel recommendation systems |
| Academic research | Study tourism and pricing patterns |
π₯ Input parameters
Search
You have two options:
Option 1 (Recommended): Paste a Booking.com search URL β go to booking.com, set your destination, dates, guests, price range, stars, sort order, and any other filter, then copy the URL.
Option 2: Use the fields below for a simple location-based search.
| Parameter | Type | Required | Description |
|---|---|---|---|
searchUrl | string | No | Full Booking.com search URL with all filters applied |
location | string | No | City, region, or country (e.g., "Paris", "Bali", "New York") |
checkIn | string | No | Check-in date in YYYY-MM-DD (default: 7 days from now) |
checkOut | string | No | Check-out date in YYYY-MM-DD (default: 8 days from now) |
adults | integer | No | Number of adult guests (default: 2) |
children | string | No | Comma-separated ages of children (e.g., "2,5,10") |
rooms | integer | No | Number of rooms (default: 1) |
Either searchUrl or location is required.
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
currency | string | USD | Currency for prices (USD, EUR, GBP, JPY, etc.) |
language | string | en-us | Results language (en-us, fr, de, es, it, ja, etc.) |
maxItems | integer | 100 | Maximum hotels to return (max: 1,000) |
enrichDetails | boolean | false | Visit each hotel page for full description, photos, facilities |
Tip: Need to filter by price, stars, or review score? Set those filters on booking.com and paste the URL into
searchUrlβ the scraper reads all filters directly from the URL.
enrichDetailsadds ~1-2s per hotel (3 parallel workers). A 50-hotel scrape takes ~20-30s extra. You get full descriptions, 10-60 photos per hotel, facilities list, and highlights.
π Output data
Each hotel record contains:
{"hotelId":"12345678","name":"Grand Hotel Paris","type":"Hotel","url":"https://www.booking.com/hotel/fr/grand-hotel-paris.html","address":"1 Avenue des Champs-ΓlysΓ©es","city":"Paris","country":"fr","latitude":48.8566,"longitude":2.3522,"distanceFromCenter":"0.5 km from center","publicTransport":"Champs-ΓlysΓ©es Clemenceau station is within 200 yards","starRating":5,"reviewScore":9.2,"reviewCount":2847,"reviewWord":"Superb","price":450.00,"originalPrice":520.00,"currency":"EUR","pricePerNight":225.00,"taxesAndCharges":45.00,"mainPhoto":"https://cf.bstatic.com/xdata/images/hotel/...","photos":["https://cf.bstatic.com/..."],"checkIn":"2026-04-15","checkOut":"2026-04-17","description":"Located on the Champs-ΓlysΓ©es...","facilities":["Free WiFi","Spa","Restaurant","Parking"],"highlights":["Great location","Top-rated breakfast"],"freeCancellation":true,"breakfastIncluded":true,"noPrepayment":false,"isPreferred":true,"isSustainable":true,"scrapedAt":"2026-04-01T12:00:00Z"}
ποΈ Data fields
| Category | Fields |
|---|---|
| Identity | hotelId, name, type, url |
| Location | address, city, country, latitude, longitude, distanceFromCenter, publicTransport |
| Ratings | starRating, reviewScore, reviewCount, reviewWord |
| Pricing | price, originalPrice, currency, pricePerNight, taxesAndCharges, discount |
| Media | mainPhoto, photos |
| Details | description, facilities, highlights |
| Policies | freeCancellation, breakfastIncluded, noPrepayment |
| Badges | isPreferred, isPreferredPlus, isSustainable |
| Meta | checkIn, checkOut, scrapedAt |
π Examples
Simple search β Paris hotels
{"location":"Paris","maxItems":50}
Detailed hotel data with photos & description
{"location":"Tokyo","checkIn":"2026-07-01","checkOut":"2026-07-05","adults":2,"currency":"JPY","maxItems":50,"enrichDetails":true}
Using a Booking.com URL (with all filters)
{"searchUrl":"https://www.booking.com/searchresults.html?ss=New+York&checkin=2026-08-01&checkout=2026-08-03&nflt=class%3D5%3Breview_score%3D90","maxItems":100}
π» Integrations
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("silentflow/booking-scraper").call(run_input={"location":"Barcelona","checkIn":"2026-09-01","checkOut":"2026-09-03","maxItems":50,"currency":"EUR"})for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{hotel['name']}: {hotel['price']}{hotel['currency']}")
JavaScript
import{ ApifyClient }from'apify-client';const client =newApifyClient({token:'YOUR_API_TOKEN'});const run =await client.actor('silentflow/booking-scraper').call({location:'London',checkIn:'2026-10-15',checkOut:'2026-10-17',maxItems:100,currency:'GBP'});const{ items }=await client.dataset(run.defaultDatasetId).listItems();items.forEach(hotel=> console.log(`${hotel.name}: Β£${hotel.price}`));
π Performance & limits
| Metric | Value |
|---|---|
| Hotels per page | ~25 |
| Average speed | ~25 hotels/second |
| Max items per run | 1,000 |
| Supported destinations | Worldwide |
π‘ Tips for best results
- Use specific locations β "Paris, France" works better than just "Paris"
- Use
searchUrlfor advanced filters β Set price range, stars, review score, sort order directly on booking.com, then paste the URL - Set realistic dates β Prices vary significantly by date
- Start small β Test with
maxItems: 10before large scrapes
β FAQ
Q: How do I filter by price, stars, or review score?
A: Go to booking.com, apply all your filters, then paste the URL into searchUrl. The scraper reads filters directly from the URL.
Q: Why are some prices different from the Booking.com website? A: Prices on Booking.com vary based on user location and login status. The scraper sees prices as a new visitor.
Q: Can I scrape hotel details pages? A: This scraper focuses on search results. For detailed info (full description, all photos, room types), contact us for a custom solution.
Q: What happens if no hotels are found? A: The scraper returns an empty dataset. Check your location spelling and date range.
π¬ Support
Need help? We're here for you:
- Feature requests: Let us know what you need
- Custom solutions: Contact us for enterprise integrations or high-volume needs
Check out our other scrapers: SilentFlow on Apify
