Booking.com Hotel Scraper
Pricing
from $2.00 / 1,000 results
Go to Apify Store
Booking.com Hotel Scraper
Extract hotel data from Booking.com: name, price, rating (0-10), review count, star rating, location, amenities, free cancellation status. Search any destination with check-in/out dates. Multi-currency support. Ideal for travel analytics, price monitoring, hospitality research.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer

cloud9
Maintained by Community
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Extract hotel listings from Booking.com with comprehensive data including prices, ratings, amenities, and location details.
Features
- Flexible Search: Search by destination name or paste a Booking.com search URL
- Rich Data Extraction: Name, price, rating, review count, stars, location, amenities, images
- Pagination Support: Automatically scrapes multiple pages up to your specified limit
- Rate Limiting: Built-in delays to avoid overwhelming the server
- Error Handling: Retry logic and graceful error recovery
- Multiple Selectors: Falls back to JSON-LD data if HTML parsing fails
Input Parameters
| Field | Type | Required | Description |
|---|---|---|---|
searchUrl | String | No | Full Booking.com search URL (overrides other search fields) |
destination | String | No* | City, region, or hotel name (e.g., "Tokyo", "Paris") |
checkIn | String | No | Check-in date (YYYY-MM-DD format) |
checkOut | String | No | Check-out date (YYYY-MM-DD format) |
adults | Integer | No | Number of adults (default: 2) |
rooms | Integer | No | Number of rooms (default: 1) |
currency | String | No | Currency code: USD, EUR, GBP, JPY, AUD, CAD (default: USD) |
minPrice | Integer | No | Minimum price per night |
maxPrice | Integer | No | Maximum price per night |
stars | Integer | No | Minimum star rating (1-5) |
sortBy | String | No | Sort order: popularity, price, review_score, distance |
maxResults | Integer | No | Maximum number of hotels (default: 100) |
*Either searchUrl or destination is required
Output Structure
{"name": "Hotel Name","price": 150,"currency": "USD","rating": 8.5,"reviewScore": 8.5,"reviewCount": 1234,"reviewText": "Excellent","stars": 4,"address": "123 Main Street","city": "Tokyo","country": "Japan","distanceFromCenter": "1.2 km from center","url": "https://www.booking.com/hotel/...","imageUrl": "https://...","amenities": ["Free WiFi", "Pool", "Restaurant"],"freeCancellation": true,"breakfastIncluded": false,"checkIn": "2024-03-15","checkOut": "2024-03-17"}
Usage Examples
Basic Search
{"destination": "Tokyo","checkIn": "2024-06-01","checkOut": "2024-06-05","adults": 2,"maxResults": 50}
Advanced Search with Filters
{"destination": "Paris","checkIn": "2024-07-10","checkOut": "2024-07-15","adults": 2,"rooms": 1,"currency": "EUR","minPrice": 100,"maxPrice": 300,"stars": 4,"sortBy": "review_score","maxResults": 100}
Using Direct URL
{"searchUrl": "https://www.booking.com/searchresults.html?ss=London&checkin=2024-08-01&checkout=2024-08-05","maxResults": 75}
Development
Local Testing
# Install dependenciesnpm install# Build TypeScriptnpm run build# Run locallynpm start
Deploy to Apify
# Login to Apifyapify login# Initialize actor (first time)apify init# Push to Apify platformapify push
Technical Details
Rate Limiting
- 2-3 second delay between page requests
- Exponential backoff on retry (2s, 4s, 6s)
- Random User-Agent rotation to appear as different browsers
Parsing Strategy
- Primary: HTML parsing with cheerio using multiple selector strategies
- Fallback: JSON-LD structured data extraction
- Retry Logic: 3 attempts with exponential backoff
Pagination
- Booking.com displays ~25 results per page
- Uses
offsetparameter for pagination - Automatically stops when no more results found
Data Quality
- Validates required fields (name, URL)
- Safely extracts numeric values from formatted text
- Handles missing data gracefully with undefined values
Limitations
- Booking.com may block excessive requests - respect rate limits
- Some fields may not be available for all hotels
- Prices and availability change frequently
- Requires valid dates for accurate pricing
License
MIT
Support
For issues or questions, please open an issue on the repository.