Booking.com Scraper avatar

Booking.com Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Booking.com Scraper

Booking.com Scraper

[πŸ’° $1.5 / 1K] Extract hotel and accommodation listings from Booking.com β€” prices, ratings, addresses, amenities, photos, and per-room availability. Filter by stars, guest score, price, and property type across any destination worldwide.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Share

Extract hotel and accommodation data from Booking.com at scale β€” names, prices, ratings, addresses, photos, amenities, and per-room availability β€” without writing any code. Search by destination keyword or paste Booking.com URLs directly. Get back clean, structured JSON ready for spreadsheets, dashboards, and downstream automations.

Why This Scraper?

  • Pay only per result β€” flat $1.50 per 1,000 hotels, no surprises.
  • No compute charges β€” you only pay per result returned.
  • Every Booking.com search field exposed β€” destination, dates, guests, rooms, property type, stars, guest score, price range, currency, language, and sort order.
  • Up to ~1,000 results per query β€” Booking caps each search at roughly 1,000 hotels; this actor reaches that ceiling reliably.
  • Accurate per-night pricing β€” both total stay cost and average per-night cost in your chosen currency.
  • Optional full hotel detail enrichment β€” turn on Include Room Details to get amenities, room types, bed configurations, occupancy, gallery photos, lat/lng, and the complete address for each property.
  • Direct URL support β€” paste any Booking.com search or hotel URL and the actor auto-detects the page type.
  • Datacenter proxy infrastructure included β€” handled automatically; no proxy setup required from you.
  • 14 supported languages, 19 currencies β€” get review snippets and prices in the locale your users care about.

Use Cases

Travel & Booking Aggregators

  • Build OTA or meta-search comparison tools across hundreds of destinations.
  • Refresh a curated hotel catalog daily with current prices and availability.
  • Power "best deal" alerts when prices drop below a threshold.

Market Research & Hospitality Analytics

  • Track average nightly rates by city, season, and star tier.
  • Benchmark hotel inventory and pricing across competing destinations.
  • Analyze guest score distributions to identify undervalued or overhyped properties.

Competitive Pricing & Revenue Management

  • Monitor competitor pricing in real time for your own property.
  • Detect rate parity issues across distribution channels.
  • Identify when competitors are running discounts or premium pricing.

Lead Generation for Hospitality SaaS

  • Build outreach lists of independent hotels, B&Bs, and guest houses by region.
  • Identify properties with low review scores β€” prime targets for reputation-management products.
  • Source unclaimed-looking listings for channel-management upsell.

Travel Content & Editorial

  • Generate "Top 25 hotels in Lisbon" lists from live data.
  • Power "best of" travel guides with current ratings, prices, and photos.
  • Enrich travel blog posts with up-to-date hotel imagery and amenity lists.

Real Estate & Short-Term Rental Intelligence

  • Map vacation-rental supply across cities to inform investment decisions.
  • Compare apartment vs hotel pricing to evaluate STR market entry.
  • Track villa and resort availability in seasonal markets.

Getting Started

1. Minimal β€” just a destination and dates

The fastest way to start. Default sort is "Top picks", default currency is USD, default language is English (UK), and you'll get up to 100 results.

{
"search": "hotels in Paris",
"checkIn": "2026-06-15",
"checkOut": "2026-06-17"
}

2. Filtered β€” narrow by stars, score, and price

Find 4 and 5-star apartments and villas in Lisbon under EUR 200 per night with at least an 8.0 guest score.

{
"search": "Lisbon",
"checkIn": "2026-07-10",
"checkOut": "2026-07-15",
"adults": 2,
"propertyType": ["apartments", "villas"],
"starsCountFilter": ["4", "5"],
"minScore": "8",
"priceMin": 80,
"priceMax": 200,
"currency": "EUR",
"sortBy": "review_score",
"maxResults": 100
}

3. Direct Booking.com URLs

Paste any Booking.com search URL or hotel page URL. The actor detects the page type automatically and pulls the right data. Search URLs return the full result list; hotel URLs return a single enriched record.

{
"startUrls": [
"https://www.booking.com/searchresults.en-gb.html?ss=Tokyo&checkin=2026-09-01&checkout=2026-09-04",
"https://www.booking.com/hotel/fr/scarlett.en-gb.html"
],
"currency": "USD"
}

4. Full hotel detail enrichment with family rooms

Turn on Include Room Details to enrich every hotel with amenities, room types, bed configurations, lat/lng, and the complete gallery. When booking with children, list each child's age in childrenAges so Booking can price family rooms correctly.

{
"search": "Bali resorts",
"checkIn": "2026-10-05",
"checkOut": "2026-10-12",
"adults": 2,
"children": 2,
"childrenAges": [5, 8],
"rooms": 1,
"propertyType": ["resorts"],
"minScore": "9",
"currency": "USD",
"language": "en-us",
"maxResults": 50,
"includeRoomDetails": true
}

Input Reference

ParameterTypeDefaultDescription
searchstringhotels in ParisCity, region, country, or hotel name to search for on Booking.com.
startUrlsstring[][]Paste Booking.com URLs to scrape β€” search-result pages or individual hotel pages. The actor auto-detects the page type. When provided, this overrides the destination.

Dates & Guests

ParameterTypeDefaultDescription
checkInstring (YYYY-MM-DD)Check-in date. Required to fetch live prices and room availability β€” leave empty for catalog data only.
checkOutstring (YYYY-MM-DD)Check-out date. Must be after the check-in date.
adultsinteger2Number of adult guests (Booking considers age 13+ an adult). Range 1–30.
childreninteger0Number of child guests (Booking considers ages 0–12 as children). Range 0–12.
childrenAgesinteger[][]Age of each child (0–17). Required when children > 0 β€” Booking prices family rooms based on these ages. Example: [5, 8] for two children aged 5 and 8.
roomsinteger1Number of rooms required. Range 1–30.

Filters

ParameterTypeDefaultDescription
propertyTypestring[][]Multi-select property types. Options: Hotels, Apartments, Hostels, Bed & Breakfasts, Guest Houses, Resorts, Villas, Vacation Homes. Empty = include all.
starsCountFilterstring[][]Multi-select official star ratings. Options: 1 star, 2 stars, 3 stars, 4 stars, 5 stars. Empty = any number of stars.
minScorestringMinimum guest review score. Booking exposes four buckets: 6+ Pleasant, 7+ Good, 8+ Very Good, 9+ Superb.
priceMinintegerMinimum nightly price in the chosen currency. Leave empty for no minimum.
priceMaxintegerMaximum nightly price in the chosen currency. Leave empty for no maximum.
sortBystringpopularityResult ranking. Options: Top picks (popularity), Price (lowest first), Price (highest first), Stars (highest first), Distance from center, Top reviewed.

Localization

ParameterTypeDefaultDescription
currencystringUSDCurrency code for prices. Options: US Dollar, Euro, British Pound, Canadian Dollar, Australian Dollar, Japanese Yen, Chinese Yuan, Swiss Franc, Swedish Krona, Norwegian Krone, Danish Krone, Polish ZΕ‚oty, UAE Dirham, Mexican Peso, Brazilian Real, Indian Rupee, Singapore Dollar, South African Rand, Turkish Lira.
languagestringen-gbBooking.com site language. Options: English (UK), English (US), German, French, Spanish, Italian, Dutch, Portuguese, Polish, Russian, Japanese, Korean, Chinese, Arabic.

Options

ParameterTypeDefaultDescription
maxResultsinteger100Maximum hotels to return per search. Set to 0 for all available. Booking caps each query at about 1,000 β€” to get more, narrow your filters or split into smaller queries.
includeRoomDetailsbooleanfalseFetch per-hotel room offerings, full amenity lists, gallery photos, lat/lng, and the complete address for every result. Slows runs significantly and roughly doubles cost β€” enable only when you need amenities, room layouts, or coordinates.

Output

Every record includes the same set of structured fields. With includeRoomDetails on, each hotel is enriched with the full amenity list, room types, gallery, lat/lng, and complete address.

Example

{
"url": "https://www.booking.com/hotel/fr/scarlett.en-gb.html",
"name": "Hotel Scarlett",
"type": "Hotel",
"description": "Hotel Scarlett is a charming 3-star hotel located in the heart of the 10th arrondissement, just a 5-minute walk from Gare du Nord and Gare de l'Est.",
"stars": 3,
"rating": 8.4,
"ratingLabel": "Very Good",
"reviewsCount": 1842,
"price": {
"amount": 312.0,
"currency": "EUR",
"perNight": 156.0
},
"checkIn": "2026-06-15",
"checkOut": "2026-06-17",
"breakfast": "Continental",
"address": {
"street": "39 Rue des Petites Ecuries",
"postalCode": "75010",
"city": "Paris",
"region": "Île-de-France",
"country": "France",
"countryCode": "fr",
"full": "39 Rue des Petites Ecuries, 75010 Paris, France"
},
"location": {
"lat": 48.8742,
"lng": 2.3531
},
"images": [
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/...",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/..."
],
"amenities": [
"Free WiFi",
"24-hour front desk",
"Air conditioning",
"Family rooms",
"Non-smoking rooms",
"Lift",
"Daily housekeeping"
],
"rooms": [
{
"available": true,
"roomType": "Standard Double Room",
"bedType": "1 double bed",
"persons": 2,
"price": null,
"features": ["Free WiFi", "Private bathroom", "Air conditioning"]
},
{
"available": true,
"roomType": "Superior Twin Room",
"bedType": "2 single beds",
"persons": 2,
"price": null,
"features": ["Free WiFi", "City view", "Air conditioning"]
}
],
"bookingUrl": "https://www.booking.com/hotel/fr/scarlett.en-gb.html?aid=304142&checkin=2026-06-15&checkout=2026-06-17&group_adults=2&no_rooms=1&group_children=0",
"scrapedAt": "2026-04-25T14:32:11+00:00"
}

Output Fields

FieldTypeDescription
urlstringCanonical Booking.com page URL for the hotel.
namestringHotel or property name.
typestringAccommodation type (Hotel, Apartment, Hostel, Bed & Breakfast, Villa, Resort, Guest House, Vacation Home, etc.).
descriptionstringProperty description from Booking.com. Populated when includeRoomDetails is on, or when extracting from a hotel URL directly.
starsnumberOfficial star rating (1–5). null for properties using Booking's quality rating instead of stars.
ratingnumberBooking.com guest review score (0–10). null for unrated properties.
ratingLabelstringHuman-readable rating label (e.g. "Superb", "Very Good", "Good").
reviewsCountnumberTotal number of guest reviews.
priceobject{ amount, currency, perNight } β€” total stay price, currency code, and average per-night price. null when dates are not provided.
checkInstringCheck-in date echoed back (YYYY-MM-DD).
checkOutstringCheck-out date echoed back (YYYY-MM-DD).
breakfaststringBreakfast offering when listed (e.g. "Continental", "Buffet").
addressobject{ street, postalCode, city, region, country, countryCode, full } β€” populated to varying depth depending on enrichment mode.
locationobject{ lat, lng } β€” GPS coordinates. Populated when includeRoomDetails is on.
imagesstring[]Photo URLs. Search results return a single thumbnail; with detail enrichment you get the full gallery.
amenitiesstring[]Property-level amenities (Free WiFi, Pool, Gym, Pet-friendly, etc.). Populated when includeRoomDetails is on.
roomsobject[]Per-room offerings: { available, roomType, bedType, persons, price, features }. Populated when includeRoomDetails is on.
bookingUrlstringDirect booking link with your dates and guest counts pre-filled.
scrapedAtstringISO 8601 UTC timestamp of when the record was extracted.

Tips for Best Results

  • Use destinations Booking.com actually serves. City names, regions, country names, and well-known hotel names work best. Spelling matters β€” "Phuket" returns thousands; "Phukkett" returns nothing.
  • Always provide check-in / check-out dates if you want pricing and room availability. Without dates, you'll still get hotel info, but price will be null and rooms will be empty.
  • The chosen language affects review snippets and descriptions. For US English content, set language to en-us; for German listings, use de.
  • Booking caps every search at about 1,000 results. To get more, narrow your filters (one star tier, one property type, a tighter price band) or split a wide query into several smaller queries β€” for example, search city by city instead of "hotels in Europe".
  • Guest scores come in four buckets only. Booking exposes 6+, 7+, 8+, and 9+. A score of 8.5 will return the same set as 8.
  • Sort by Top reviewed for quality lists. This puts the highest-rated properties first regardless of price.
  • Sort by Price (lowest first) for budget research. Combine with priceMax to cap the dataset to a specific budget tier.
  • Leave includeRoomDetails off for catalog-style runs. Names, prices, stars, and ratings come back fast (default). Turn it on only when you need amenity lists, room layouts, gallery photos, or lat/lng β€” those add roughly 5–10 seconds per hotel and double the run cost.

Pricing

$1.50 per 1,000 results.

No compute charges β€” you only pay per result returned.

ResultsCost
100$0.15
1,000$1.50
10,000$15.00

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n β€” Workflow automation
  • Google Sheets β€” Direct spreadsheet export
  • Slack / Email β€” Notifications on new results
  • Webhooks β€” Custom API integrations
  • Apify API β€” Full programmatic access

Frequently Asked Questions

Do I need a Booking.com account to use this actor? No. The actor extracts publicly visible listings; no account or login is required.

Can I get more than 1,000 results for a single destination? Booking.com itself caps each search at about 1,000 results. To collect more, split your search into smaller queries β€” for example by neighborhood, by star tier, or by price band β€” and combine the datasets afterwards. Each narrower query is independent and can also return up to ~1,000 results.

How does pagination work? The actor paginates automatically up to your maxResults cap or Booking's 1,000-result hard cap, whichever comes first. You don't need to set page numbers or offsets manually.

What happens if my search returns zero hotels? The actor finishes successfully with an empty dataset and a clear status message suggesting how to widen your filters (lower the price range, drop the star filter, change language, or pick a more popular destination).

Are prices live or cached? Prices are pulled from Booking.com at the moment the actor runs. They reflect the cheapest available offer for your dates, guest count, and room count β€” exactly as you'd see them on Booking.com.

Why are some stars values null? Some properties β€” particularly apartments, vacation homes, and guest houses β€” use Booking.com's internal quality rating instead of official government-issued stars. The actor only emits a number when Booking confirms it as an official star rating; otherwise stars is null (the property's type field still tells you what kind of accommodation it is).

Do I need to set up proxies? No. Datacenter proxy infrastructure is included automatically. You don't need to configure or pay for proxies separately.

This actor is designed for legitimate market research, travel content creation, business intelligence, and comparison shopping. It collects only publicly visible information from Booking.com search and listing pages. Users are responsible for complying with applicable laws and Booking.com's Terms of Service. Do not use the data to build replica booking platforms, generate spam, or for any illegal purpose.