Booking.com Hotels, Prices & Reviews Scraper avatar

Booking.com Hotels, Prices & Reviews Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Booking.com Hotels, Prices & Reviews Scraper

Booking.com Hotels, Prices & Reviews Scraper

Scrape Booking.com hotels by destination, dates or URL. Get prices, rooms, review scores and category sub-scores, star rating, address, coordinates, check-in/out times, facilities, images and guest reviews. 20+ filters. Export to JSON, CSV or Excel.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

Booking.com Hotels & Prices Scraper

Booking.com Hotels, Prices & Reviews Scraper

Scrape Booking.com hotels and accommodation prices at scale, with no API key and no login. Give this Booking.com scraper a destination, dates and party size, and it returns one clean record per property: live room rates, review scores, star rating, full address with coordinates, guest reviews, facilities and photos. A drop-in Booking.com API / hotel rates data feed for price monitoring, market research, travel apps and revenue management.

Here is one real result, showing the fields the actor returns per property:

{
"name": "INT Lisbon Suites",
"type": "Hotel",
"url": "https://www.booking.com/hotel/pt/intendente-1865.html",
"id": 2046765,
"price": 249.74,
"currency": "USD",
"priceFormatted": "US$249.74",
"pricePerNight": 124.87,
"priceHotelCurrency": 215,
"hotelCurrency": "EUR",
"originalPrice": 480.9,
"discountPercent": 48,
"priceIncludesTaxes": true,
"taxesAndFeesInfo": "Includes taxes and fees",
"reviewScore": 7.8,
"reviewScoreWord": "Good",
"reviewsCount": 2644,
"reviewCategoryStaff": 8.2,
"reviewCategoryCleanliness": 8.3,
"reviewCategoryComfort": 8.2,
"reviewCategoryLocation": 8.0,
"reviewCategoryValue": 8.0,
"reviewCategoryWifi": 8.8,
"starRating": 3,
"address": "Travessa do Maldonado 16",
"streetAddress": "Travessa do Maldonado 16, Arroios, 1100-330 Lisbon, Portugal",
"city": "Lisboa",
"postalCode": "1100-330",
"countryCode": "PT",
"country": "Portugal",
"displayLocation": "Arroios, Lisbon",
"distanceFromCenter": "1 km from downtown",
"publicTransport": "Intendente station is within 200 meters",
"latitude": 38.7212966,
"longitude": -9.1337840,
"checkInFrom": "3:00 PM",
"checkOutUntil": "10:00 AM",
"freeCancellation": false,
"breakfastIncluded": false,
"beds": 2,
"roomName": "Double or Twin Room with Private Bathroom",
"roomTypes": ["Deluxe Twin Room", "Double or Twin Room with Private Bathroom"],
"popularFacilities": ["Free Wifi", "Family rooms", "Non-smoking rooms", "Heating"],
"reviewsScraped": 5,
"observedAt": "2026-09-05T01:10:22.067Z"
}

The most complete Booking.com scraper on Apify. It returns every field the property exposes: the total stay price and price per night in both your currency and the property's local currency, original and discounted price, tax-included flag, review score, count and per-category sub-scores, star rating, full address with coordinates and distance from center, room options, facilities, photos, guest reviews, and optional AI summary and amenity extraction.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

This Booking.com hotels scraper searches Booking.com by destination and stay parameters and writes one normalized record per property. Give it a city, region, country, or property name, optional check-in and check-out dates, party size, rooms, and currency. It cycles the result orders to gather far more than a single page and returns the property name and type, image, direct URL, prices, review score and count, star rating, and full location.

Prices are returned in both your selected currency and the property's local currency, with the total stay price, price per night, original price, discount percent, and whether taxes are included. When dates are not set, Booking uses a default upcoming stay. With property details enabled (the default), each property is enriched from its own page with a full description, street address, postal code and region, review category sub-scores (staff, cleanliness, comfort, location, value, WiFi), check-in and check-out times, room types, popular facilities, more photos, and featured guest reviews.

More than 20 filters let you keep only certain star ratings, a minimum review score, a price range, specific property types, amenities, a meal plan, a maximum distance from the center, free cancellation, breakfast included, pay-at-property, or pets allowed. Optional AI add-ons add a concise English summary and a structured amenity list. Missing source values are returned as null, never invented.

Use cases

  • Hotel price monitoring and rate tracking across dates, currencies and competitors.
  • Revenue management / rate shopping for hotels, OTAs and channel managers.
  • Travel and accommodation apps that need a Booking.com data feed without an official API key.
  • Market research on pricing, occupancy signals, amenities and review sentiment by city.
  • Lead lists of hotels and accommodations with contacts, coordinates and ratings.
  • Academic and data-science datasets of hotel prices, reviews and geolocation.

Quickstart

Open the actor, paste this into the input, and press Run. It returns 10 Paris properties with details for a default upcoming stay.

{
"destination": "Paris",
"maxHotels": 10,
"withDetails": true,
"adults": 2,
"rooms": 1,
"currency": "USD"
}

Set checkIn and checkOut to price a specific stay. destination is required; every other field is optional.

Input reference

FieldTypeDefaultDescription
destinationstringParisCity, region, country, or property name to search, for example Paris, Cancun, Tuscany, Amsterdam.
searchQueriesstring[](none)Search several destinations in one run.
startUrlsstring[](none)Direct Booking.com property URLs (booking.com/hotel/...) or search-result URLs (booking.com/searchresults...).
maxHotelsinteger10Maximum properties to collect across the run. Free Apify plans are capped at 10.
checkIn / checkOutstring(default stay)Stay dates (YYYY-MM-DD). Empty uses a default upcoming stay.
adultsinteger2Number of adults.
childreninteger0Number of children.
childrenAgesstring[](none)Age of each child (0-17), for accurate family-room pricing.
roomsinteger1Number of rooms.
currencyenumUSDCurrency for displayed prices (USD, EUR, GBP, MXN, BRL, JPY and more).
languageenumen-usLanguage of returned content (labels, review text).
sortByenumpopularityPreferred sort order. Other orders are still cycled to fill the count.
propertyTypesstring[](all)Keep only these types, for example Hotel, Apartment, Resort, Villa, Hostel.
starRatingsstring[](all)Keep only these star ratings (1-5).
minReviewScoreinteger(none)Keep only properties at or above this guest review score (0-10).
minPrice / maxPriceinteger(none)Keep only properties within this total stay price range.
amenitiesstring[](none)Keep only properties whose facilities/rooms/description mention all of these.
mealPlanstring(none)Keep only offers matching this meal plan, for example Breakfast, Half board, All-inclusive.
maxDistanceFromCenterinteger(none)Keep only properties within this many km of the city center.
freeCancellationbooleanfalseKeep only properties offering free cancellation.
breakfastIncludedbooleanfalseKeep only properties where breakfast is included.
payAtPropertybooleanfalseKeep only properties with no-prepayment (pay at the property).
petsAllowedbooleanfalseKeep only properties that allow pets.
withDetailsbooleantrueEnrich each property from its own page (description, address, sub-scores, times, facilities, room types, reviews).
scrapeReviewsbooleantrueInclude featured guest reviews from each property page.
maxReviewsinteger10Maximum guest reviews per property (0-25).
reviewerTypesstring[](all)Keep only reviews from these traveler types, for example couple, family, solo, business.
reviewLanguagesstring[](all)Keep only reviews in these language codes, for example en, es, fr.
withListingSummarybooleanfalseAI concise English summary per property. Paid Apify plans only; billed only when produced.
withFeaturesbooleanfalseAI-extracted amenity/feature list per property. Paid Apify plans only; billed only when produced.

Output reference

One dataset item per property. Values are string, integer, number, boolean, string[], object arrays, or null when the source value is absent.

FieldTypeDescription
imageUrl / imagesstring / string[]Primary image and full photo gallery.
name, type, url, bookingUrl, idmixedProperty name, type, canonical URL, stay-aware URL, Booking.com property ID.
price, currency, priceFormattednumber/stringTotal stay price in the selected currency.
pricePerNightnumberPrice per night in the selected currency.
priceHotelCurrency, hotelCurrencynumber/stringTotal price in the property's local currency.
originalPrice, discountPercentnumber/integerPre-discount price and discount when a deal applies.
priceIncludesTaxes, taxesAndFeesInfoboolean/stringWhether taxes/fees are included, and the raw charges note.
reviewScore, reviewScoreWord, reviewsCountnumber/string/integerGuest score (0-10), label (Good, Excellent), and review count.
reviewCategoryStaffreviewCategoryWifinumberPer-category sub-scores: staff, cleanliness, comfort, facilities, location, value, WiFi.
externalReviewScore, externalReviewsCountnumber/integerExternal review score and count when shown.
starRatingintegerStar rating (1-5).
address, streetAddress, city, region, postalCode, countryCode, countrystringFull location breakdown.
displayLocation, distanceFromCenter, publicTransport, popularDistrict, isCentrallyLocated, nearbyBeachmixedNeighborhood and surroundings.
latitude, longitudenumberCoordinates for mapping.
checkInFrom, checkInUntil, checkOutFrom, checkOutUntilstringCheck-in/out time windows.
freeCancellation, noPrepayment, petsAllowed, breakfastIncluded, mealPlanmixedPolicies and meal plan.
bedrooms, bathrooms, beds, unitArea, roomName, roomOccupancyMaxmixedMatched-unit layout and capacity.
roomTypes, roomsstring[] / object[]Room names and per-offer room objects (price, meal plan, free cancellation, availability).
popularFacilitiesstring[]Most-popular facilities from the property page.
isSustainablebooleanWhether Booking flags the property as sustainable.
reviewSummaryPositive, reviewSummaryNegativestring[]Review pros/cons highlights.
descriptionstringFull property description.
reviews, reviewsScrapedobject[] / integerFeatured guest reviews (title, text, score, reviewer country, traveler type, room, date) and count.
searchQuerystringThe destination that produced this record.
aiSummary, aiFeaturesstring / string[]Optional AI summary and amenity list (when enabled).
observedAtstringISO 8601 timestamp of collection.
errorstringnull on success; a diagnostic item with a populated error is written (and not charged) when a property cannot be loaded.

How it compares

Honest, field-by-field against the leading Booking.com scrapers.

CapabilityThis actorvoyager/booking-scraperapify/booking-scraper
Destination search + start URLs
Multiple destinations per run
Check-in/out, guests, rooms, children ages✅ (incl. childrenAges)
Currency + language
Price / star / review-score filters
Amenity, meal-plan, distance, pets, pay-at-property filters
Total + per-night price, both currenciesPartialPartial
Original price, discount %, tax-included flag
Review category sub-scores (7)
Room options array✅ (bed type, features)
Coordinates, distance, surroundings
Featured guest reviews inline
Optional AI summary + amenity extraction
Flexible-date window search (flexWindow)
Very deep pagination (1000s per city)Partial (order-cycled union, ~120-150/search)

Where a browser-based leader wins: they can paginate deeper into a single city (thousands of results via extended pagination) and expose per-room bed type and a flexible-date window. This actor returns a wider field set per property (dual-currency pricing, discounts, tax flags, review sub-scores, inline reviews, AI add-ons) and more filters, and covers more than enough breadth for price monitoring and research per destination.

Run via API and CLI

Start a run and read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~booking-hotels-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"destination":"Lisbon","checkIn":"2026-09-20","checkOut":"2026-09-22","currency":"USD","maxHotels":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~booking-hotels-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"destination":"Cancun","minReviewScore":8,"propertyTypes":["Resort"],"maxHotels":100}'

Apify CLI:

apify call scrapers_lat/booking-hotels-scraper \
--input '{"destination":"Amsterdam","freeCancellation":true}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per property returned (result event). See the pricing tab for the current per-result price.
  • Property details are billed per property (details event) only when the property page is fetched successfully and returns extra fields.
  • No charge on failure. A property that cannot be loaded is written as a non-billable item with a populated error field. Empty runs cost nothing.
  • AI add-ons are opt-in. Listing summary and feature extraction are billed per property only when usable output is produced, and only on paid Apify plans.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 properties per run. Upgrade for higher maxHotels.

FAQ and troubleshooting

Do I need a Booking.com API key? No. There is no official public Booking.com data API for rates; this actor needs no API key, account, or login. Just provide a destination.

A run returned 0 records. Why? The destination matched nothing, or your filters excluded every property. Check the spelling and loosen the filters. Zero-result runs are not charged.

Why is price null on some properties? Booking does not always return a bookable price for the default stay or every property. Set explicit checkIn and checkOut dates and a party size to get priced availability. Missing prices are returned as null, never guessed.

Can I get prices in a specific currency? Yes. Set currency. Each record also includes the price in the property's local currency (priceHotelCurrency, hotelCurrency).

How many properties can I get per destination? Typically ~120-150 unique properties per destination, gathered by cycling Booking's result orders and de-duplicating. Use searchQueries to cover many destinations in one run.

Does it include guest reviews and sub-scores? Yes. With details enabled, each property includes featured guest reviews and per-category sub-scores (staff, cleanliness, comfort, facilities, location, value, WiFi).

Does it include coordinates? Yes. latitude and longitude are included for mapping, along with the display location, district and distance from center.

Is this an official Booking.com tool? No. This actor is independent and has no affiliation with Booking.com. It reads only data that is publicly available on Booking.com search and property pages. Use it in accordance with Booking.com's terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Booking.com. Accesses only publicly available data. Use in accordance with Booking.com's terms of service.