Booking Scraper avatar

Booking Scraper

Pricing

$24.99/month + usage

Go to Apify Store
Booking Scraper

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

SilentFlow

Maintained by Community

Actor stats

1

Bookmarked

9

Total users

2

Monthly active users

3 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+ 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

IndustryApplication
Travel agenciesCompare hotel prices across destinations
Market researchAnalyze hospitality market trends
Price monitoringTrack competitor pricing
Data analyticsBuild travel recommendation systems
Academic researchStudy tourism and pricing patterns

📥 Input parameters

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.

ParameterTypeRequiredDescription
searchUrlstringNoFull Booking.com search URL with all filters applied
locationstringNoCity, region, or country (e.g., "Paris", "Bali", "New York")
checkInstringNoCheck-in date in YYYY-MM-DD (default: 7 days from now)
checkOutstringNoCheck-out date in YYYY-MM-DD (default: 8 days from now)
adultsintegerNoNumber of adult guests (default: 2)
childrenstringNoComma-separated ages of children (e.g., "2,5,10")
roomsintegerNoNumber of rooms (default: 1)

Either searchUrl or location is required.

Options

ParameterTypeDefaultDescription
currencystringUSDCurrency for prices (USD, EUR, GBP, JPY, etc.)
languagestringen-usResults language (en-us, fr, de, es, it, ja, etc.)
maxItemsinteger100Maximum hotels to return (max: 1,000)
enrichDetailsbooleanfalseVisit 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.

enrichDetails adds ~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

CategoryFields
IdentityhotelId, name, type, url
Locationaddress, city, country, latitude, longitude, distanceFromCenter, publicTransport
RatingsstarRating, reviewScore, reviewCount, reviewWord
Pricingprice, originalPrice, currency, pricePerNight, taxesAndCharges, discount
MediamainPhoto, photos
Detailsdescription, facilities, highlights
PoliciesfreeCancellation, breakfastIncluded, noPrepayment
BadgesisPreferred, isPreferredPlus, isSustainable
MetacheckIn, 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 ApifyClient
client = 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 = new ApifyClient({ 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

MetricValue
Hotels per page~25
Average speed~25 hotels/second
Max items per run1,000
Supported destinationsWorldwide

💡 Tips for best results

  1. Use specific locations — "Paris, France" works better than just "Paris"
  2. Use searchUrl for advanced filters — Set price range, stars, review score, sort order directly on booking.com, then paste the URL
  3. Set realistic dates — Prices vary significantly by date
  4. Start small — Test with maxItems: 10 before 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