Booking.com Hotel Scraper -- Prices, Ratings & Availability avatar

Booking.com Hotel Scraper -- Prices, Ratings & Availability

Pricing

Pay per usage

Go to Apify Store
Booking.com Hotel Scraper -- Prices, Ratings & Availability

Booking.com Hotel Scraper -- Prices, Ratings & Availability

Scrape Booking.com hotel listings for any destination worldwide. Extract hotel names, nightly prices, guest ratings, star ratings, amenities, room types, distances, images, and availability. Supports date-based pricing, multi-room searches, currency selection, and smart pagination. Ideal for travel

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ricardo Akiyoshi

Ricardo Akiyoshi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 minutes ago

Last modified

Categories

Share

Booking.com Hotel Scraper

Scrape hotel listings from Booking.com for any destination worldwide. Extract prices, ratings, reviews, amenities, room types, availability, and more. Export data to JSON, CSV, or Excel.

Features

  • Any destination — Search any city, region, or area that Booking.com supports
  • Date-based pricing — Get actual prices for your check-in/check-out dates
  • 36 currencies — Display prices in USD, EUR, GBP, JPY, and 32 more
  • Multiple sort options — Sort by popularity, price, review score, distance, or stars
  • Star rating filter — Filter to only 3-star, 4-star, 5-star, or any combination
  • Rich data extraction — Hotel name, price, rating (out of 10), review count, star rating, address, distance from center, amenities, room type, images, and direct booking URL
  • Free breakfast & cancellation flags — Instantly see which hotels offer these perks
  • Smart pagination — Automatically follows pages to get all results
  • Anti-detection — Rotates 10+ User-Agent strings with realistic browser headers (sec-fetch, sec-ch-ua, etc.)
  • Deduplication — Automatically removes duplicate hotels across pages
  • Proxy support — Works with Apify proxy for reliable large-scale scraping
  • PPE pricing — Pay only for what you scrape (per hotel result)

Input Parameters

ParameterTypeDefaultDescription
destinationstring"New York"City or area to search (required)
checkInstring14 days from nowCheck-in date (YYYY-MM-DD)
checkOutstring15 days from nowCheck-out date (YYYY-MM-DD)
adultsinteger2Number of adult guests
roomsinteger1Number of rooms
maxResultsinteger25Max hotels to scrape (0 = unlimited)
currencystring"USD"Price display currency (ISO 4217)
sortBystring"popularity"Sort order: popularity, price, review_score, distance, stars
starRatingarray[]Filter by star rating, e.g. [4, 5]
maxConcurrencyinteger3Concurrent requests (lower = safer)
proxyConfigurationobjectnoneApify proxy settings

Example Input

{
"destination": "Paris",
"checkIn": "2026-05-01",
"checkOut": "2026-05-04",
"adults": 2,
"rooms": 1,
"maxResults": 50,
"currency": "EUR",
"sortBy": "review_score",
"starRating": [4, 5]
}

Example Output

Each hotel in the dataset contains:

{
"hotelName": "Hotel Le Marais",
"price": 189,
"currency": "EUR",
"rating": 8.7,
"reviewCount": 2451,
"starRating": 4,
"address": "3rd arr., Paris",
"distance": "0.8 km from center",
"amenities": ["Free WiFi", "Air conditioning", "Non-smoking rooms"],
"imageUrl": "https://cf.bstatic.com/xdata/images/hotel/square200/12345.jpg",
"bookingUrl": "https://www.booking.com/hotel/fr/le-marais.html",
"roomType": "Superior Double Room",
"freeBreakfast": true,
"freeCancellation": true,
"destination": "Paris",
"checkIn": "2026-05-01",
"checkOut": "2026-05-04",
"nights": 3,
"adults": 2,
"rooms": 1,
"scrapedAt": "2026-03-01T12:00:00.000Z"
}

Use Cases

Travel Price Comparison

Compare hotel prices across destinations or date ranges. Find the cheapest dates for your trip by running multiple scrapes with different check-in/check-out combinations.

Hospitality Market Research

Analyze hotel pricing strategies, occupancy indicators (via price fluctuations), and competitive positioning across markets. Track how prices change over time for revenue management insights.

Travel App Data Feed

Power your travel comparison app, hotel aggregator, or price alert service with structured Booking.com data. Combine with other OTA scrapers for comprehensive coverage.

Investment & Real Estate Analysis

Evaluate hotel market saturation, average daily rates (ADR), and guest satisfaction scores by area. Useful for hospitality investment decisions and market entry analysis.

Content & SEO

Generate data-driven travel content: "Top 10 Hotels in Barcelona Under $100", "Best Rated Hotels in Tokyo", etc. Use real pricing data for authentic, valuable content.

Tips for Best Results

  1. Use proxies — Booking.com has aggressive anti-bot protection. Residential proxies (Apify RESIDENTIAL group) give the best results.
  2. Keep concurrency low — Start with maxConcurrency: 2 for reliable scraping. Increase only if proxies handle it well.
  3. Specific destinations — "Paris, France" works better than just "Paris". More specific = more accurate results.
  4. Future dates only — Check-in must be a future date. If no dates are provided, the scraper defaults to 14 days from now.
  5. Star filter — Use starRating: [4, 5] to focus on higher-end properties and reduce noise.

Data Fields Reference

FieldTypeDescription
hotelNamestringHotel property name
pricenumberPrice per night (numeric)
currencystringCurrency code (e.g., "USD")
ratingnumberGuest review score (1.0 - 10.0)
reviewCountnumberTotal number of guest reviews
starRatingnumberOfficial star rating (1-5)
addressstringHotel address or district
distancestringDistance from city center
amenitiesarrayList of highlighted amenities
imageUrlstringHotel thumbnail image URL
bookingUrlstringDirect link to hotel on Booking.com
roomTypestringRecommended room type shown
freeBreakfastbooleanWhether breakfast is included
freeCancellationbooleanWhether free cancellation is available
destinationstringSearch destination used
checkInstringCheck-in date (YYYY-MM-DD)
checkOutstringCheck-out date (YYYY-MM-DD)
nightsnumberNumber of nights
adultsnumberNumber of adult guests
roomsnumberNumber of rooms
scrapedAtstringISO 8601 timestamp of when data was scraped

Limitations

  • Booking.com uses aggressive anti-bot protection. Using residential proxies is strongly recommended for production use.
  • Prices shown are the "starting from" prices displayed in search results — actual prices may vary on the booking page depending on room availability.
  • Booking.com frequently updates their HTML structure. If the scraper stops working, please open a GitHub issue.
  • Maximum practical limit is around 500-1000 results per run due to Booking.com pagination limits.

License

MIT

Integration — Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("sovereigntaylor/booking-scraper").call(run_input={
"location": "Paris, France",
"checkIn": "2026-04-01",
"checkOut": "2026-04-05",
"maxResults": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['hotelName']}: {item.get('price', 'N/A')}{item.get('rating', 'N/A')} stars")

Integration — JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('sovereigntaylor/booking-scraper').call({
location: 'Paris, France',
checkIn: '2026-04-01',
checkOut: '2026-04-05',
maxResults: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.hotelName || item.name || 'N/A'));