Booking Scraper
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

SilentFlow
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
17 days 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+ data points per hotel including prices, reviews, photos, and amenities
- Global coverage: Search any destination - cities, regions, or countries
- Real-time prices: Get current availability and pricing for your dates
- Flexible filtering: Filter by price, stars, review score, and more
- High reliability: Built-in retry logic and 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
Basic search
| Parameter | Type | Required | Description |
|---|---|---|---|
location | string | Yes* | City, region, or country (e.g., "Paris", "Bali", "Japan") |
searchUrl | string | Yes* | Full Booking.com search URL (alternative to location) |
maxItems | integer | No | Maximum hotels to return (default: 100, max: 1000) |
*Either location or searchUrl is required
Date & guests
| Parameter | Type | Default | Description |
|---|---|---|---|
checkIn | string | +7 days | Check-in date (YYYY-MM-DD) |
checkOut | string | +8 days | Check-out date (YYYY-MM-DD) |
adults | integer | 2 | Number of adult guests |
rooms | integer | 1 | Number of rooms needed |
Filters
| Parameter | Type | Description |
|---|---|---|
minPrice | integer | Minimum price per night |
maxPrice | integer | Maximum price per night |
stars | integer | Minimum star rating (1-5) |
minReviewScore | number | Minimum guest score (1-10) |
freeCancellation | boolean | Only show free cancellation options |
Options
| Parameter | Type | Default | Options |
|---|---|---|---|
currency | string | USD | USD, EUR, GBP, JPY, AUD, CAD, CHF, CNY, etc. |
language | string | en-us | en-us, en-gb, fr, de, es, it, pt-br, ja, zh-cn, etc. |
sort | string | popularity | popularity, price, review_score_and_price, class, distance |
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","countryCode": "fr","latitude": 48.8566,"longitude": 2.3522,"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","taxesAndCharges": 45.00,"mainPhoto": "https://cf.bstatic.com/xdata/images/hotel/...","checkIn": "2024-06-15","checkOut": "2024-06-17","freeCancellation": true,"breakfastIncluded": true,"noPrepayment": false,"isPreferred": true,"isSustainable": true,"scrapedAt": "2024-06-01T12:00:00Z"}
Field descriptions
| Field | Description |
|---|---|
hotelId | Unique Booking.com property ID |
type | Property type: Hotel, Apartment, Hostel, Villa, Resort, etc. |
publicTransport | Nearest metro/train station with distance |
reviewWord | Score category: Superb, Excellent, Very Good, Good, etc. |
originalPrice | Price before any discounts (if applicable) |
taxesAndCharges | Additional fees not included in base price |
isPreferred | Booking.com Preferred Partner badge |
isSustainable | Travel Sustainable certification |
Examples
Basic search - Paris hotels
{"location": "Paris","maxItems": 50}
Luxury hotels in Tokyo
{"location": "Tokyo","checkIn": "2024-07-01","checkOut": "2024-07-05","adults": 2,"stars": 5,"minReviewScore": 9,"currency": "JPY","maxItems": 100}
Budget-friendly options in Bali
{"location": "Bali","maxPrice": 100,"freeCancellation": true,"currency": "USD","maxItems": 200}
Using a Booking.com URL directly
{"searchUrl": "https://www.booking.com/searchresults.html?ss=New+York&checkin=2024-08-01&checkout=2024-08-03","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": "2024-09-01","checkOut": "2024-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 = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('silentflow/booking-scraper').call({location: 'London',checkIn: '2024-10-15',checkOut: '2024-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"
- Set realistic date ranges: Prices vary significantly by date
- Use filters wisely: Filtering client-side (stars, price) is faster than URL parameters
- Start small: Test with
maxItems: 10before large scrapes - Residential proxy: Enabled by default for best reliability
FAQ
Q: Why are some prices different from the Booking.com website? A: Prices on Booking.com vary based on user location, login status, and cookies. The scraper sees prices as a new visitor from the US.
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: How often can I run the scraper? A: There are no limits on run frequency. However, prices change frequently, so scraping the same hotels more than once per day may not add value.
Q: What happens if no hotels are found? A: The scraper returns an empty dataset and logs "No hotels found matching criteria". Check your location spelling and date range.
Support
Need help? We're here for you:
- Bug reports: Open an issue on the actor page
- Questions: Message us via Apify console
- 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