Booking.com Hotels Scraper
Pricing
from $0.42 / 1,000 property saveds
Booking.com Hotels Scraper
Scrape Booking.com hotels by place and dates: prices, availability, property details, rooms and guest reviews. Export to JSON, CSV or Excel.
Booking.com Hotels Scraper
Pricing
from $0.42 / 1,000 property saveds
Scrape Booking.com hotels by place and dates: prices, availability, property details, rooms and guest reviews. Export to JSON, CSV or Excel.
A city, region, district, airport or landmark, as typed in the Booking.com search box (e.g. Paris, Tuscany, Orly Airport, Eiffel Tower). Booking.com resolves it the way its own search bar does. Empty = no destination from this field.
Several destinations in one run: one search per destination. Added to Destination. Properties found by several searches are saved once.
[]Booking.com search-result URLs copied from the address bar (https://www.booking.com/searchresults.html?ss=Paris&checkin=...): their dates, guests, rooms, currency and filters (nflt) are kept - or single property URLs (https://www.booking.com/hotel/fr/<name>.html, in any site language). Added to the destinations, hotel names and map point of this form: all of them run together. Max 1 000 URLs.
[]Properties named as you would type them on Booking.com (e.g. Hotel Lutetia Paris): each name is looked up in Booking.com's own suggestions before the run and the property it proposes is read, with its price for your dates. Added to the other sources.
[]Booking.com numeric property ids (the propertyId of a result, e.g. 54642): each one is looked up through Booking.com's own search and read with its price for your dates. Added to the other sources.
[]Latitude of a map point (e.g. 48.8584). Use it with Longitude and Radius: properties around that point, nearest first, until the first one beyond the radius. Added to the other sources.
Longitude of the map point (e.g. 2.2945). Both Latitude and Longitude are needed, or neither.
Search radius around the map point, in kilometres. Only used with Latitude and Longitude.
A rectangle of the map instead of a place: its south-west and north-east corners, as {"swLat": 41.85, "swLon": 12.42, "neLat": 41.95, "neLon": 12.55} (latitudes -90 to 90, longitudes -180 to 180; a rectangle across the 180th meridian is not supported). A large area is split into map tiles to go past the 1,000 results Booking.com shows per search. Added to the other sources.
First night: a date (2026-12-20), or a period from the run date such as 7 days, 2 weeks or 1 year - a saved task then always looks the same distance ahead. Empty = 30 days from the run date. Booking.com takes bookings up to about 495 days ahead: a later date is refused.
Departure day, YYYY-MM-DD. Empty = check-in plus Nights (the way to keep the length of a stay whose check-in moves with the run date). Must be after the check-in date, at most 30 nights after check-in.
Length of stay, used when Check-out date is empty.
Let Booking.com move the stay up to this many days before or after Check-in date for each property, as its "flexible dates" search does: each result is priced for its best dates (stay, datesAdjusted) and more properties are found. 0 = exact dates. The site offers 1, 2, 3 and 7.
Booking.com's "I'm flexible" search: the months to look in, as 2026-12 (up to 12; the current month starts tomorrow, and a month later than about 495 days ahead is refused). Each property is priced for its best dates in those months (stay). When set, Check-in date, Check-out date and Nights are ignored; it cannot be used with Flexible dates (± days).
[]Nights of the stay for Flexible months. Empty = 1 night. Needs Flexible months.
Days of the week the stay may start, for Flexible months. Empty = any day. Needs Flexible months.
[]Adults for the whole stay (all rooms together, as on the Booking.com search box).
Children for the whole stay. When above 0, fill Children ages with one age per child.
One age (0-17) per child, in the same order as on the site. Must hold exactly Children values.
[]Number of rooms requested. Not above the number of adults: Booking.com needs at least one adult per room and ignores the rooms in excess.
Currency of every price (EUR, USD, GBP...). Booking.com converts server-side. Each result also gives the price in the property's own currency when it differs (priceInHotelCurrency). A search URL pasted in Start URLs keeps its own selected_currency.
Booking.com language of names, descriptions, texts and reviews' labels. distanceFromCenterKm is always in kilometres, whatever the language (the text distanceFromCenter follows the language: miles with en-us). A search or property URL pasted in Start URLs keeps its own language (the one in its address: a language code before html such as fr, or lang=fr); an address with none, or a language not in this list, uses this one.
Order asked from Booking.com for a destination or a pasted search link. Ignored for a map point (always nearest first) and for hotel names, property ids and property links (one property each). popularity (Our top picks) is the site's default ranking; the other orders sort by the criterion they name (price, stars, score, distance from downtown). Whatever the order, Booking.com repeats a few properties from one page to the next: the Actor absorbs them by de-duplicating, so the first N results can vary slightly between two runs.
Maximum number of properties saved for the whole run (after de-duplication and filters). 0 = no limit - a big city holds thousands of properties (Rome: more than 5 000); the Actor splits the map into tiles to go past the 1 000 results the site serves per search.
Cap for EACH search (destination, hotel name, map point or search URL), so the first one cannot use up the whole Max properties budget. 0 = no per-search cap.
Description, every photo, grouped amenities, house rules (children, beds, pets, payment, deposit), check-in / check-out times, all the category scores, languages spoken, licence numbers, chain and brand, host profile, full address with postal code. One request per property, charged apart (see Pricing). Off = search-result fields only (name, stars, price, rating, address, GPS, one photo). The company / host contact details are a separate option below.
Add every room offer of each property for your dates (roomOffers): room name, size, occupancy, beds, meal plan, price of one room for the whole stay, crossed-out price, taxes included, free cancellation and its date, prepayment, rooms left - the whole room list of the property page, not only the recommended offer (price, always there). One request more per property; charged per offer saved (see Pricing). A sold-out property has no offer and costs nothing for this option.
Cap on the room offers saved for each property, in Booking.com's own order. 50 covers almost every property (2 to 87 offers measured for 2 adults and 2 nights); roomOfferCount always says how many Booking.com gave. Your maximum cost counts each property at this many offers.
Needs Include room offers. Keep only the room offers that sleep all the guests of the stay (adults + children); an offer that does not say its capacity is kept. A property left with no offer is dropped.
Needs Include room offers. Keep only the room offers whose room is at least this big, in square metres. 0 = no filter. An offer that does not say its size is dropped when this is set; a property left with no offer is dropped.
Needs Include room offers. Keep only the room offers whose room is at most this big, in square metres. 0 = no filter. An offer that does not say its size is dropped when this is set; a property left with no offer is dropped.
Add, day by day from the check-in date, whether the property is bookable, an indicative price and the minimum stay (calendar), for your guests. The price of a day is for a ONE-night stay that starts that day, for one room, rounded to the unit; it may not take off some discounts, so the exact price of your stay is price. One request per 61 days; charged per day saved (see Pricing).
Number of days of the price calendar, counted from the check-in date. The site serves 61 days per request: 365 days = 6 requests per property. Booking.com serves no day beyond about 495 days ahead: the calendar stops there.
Add the places around each property (nearbyPlaces): airports, landmarks, restaurants and cafes, public transport, beaches, natural beauty - name, category and distance. One request per property; charged per property enriched (see Pricing).
Add the company or host that runs each property (hostContact), as Booking.com publishes it for trader traceability: company name, registration number, address, e-mail, phone and, for a private host, the name. These are business contact details published by the site; you stay responsible for how you use them (marketing, GDPR). One request per property, shared with Extract full property profile when both are on; charged per contact found (see Pricing).
Needs Company / host contact details. Looks the company that runs each property up on publicly available sources and adds its own website (hostWebsite) and what that site shows: e-mail addresses (hostWebsiteEmails), phone numbers (hostWebsitePhones), a Telegram link (hostTelegram), the page they come from (hostWebsiteSourceUrl) and a confidence (hostWebsiteConfidence, high or medium). Companies only: a private person is never looked up. A site is kept only when its home page names the company and places it (its town, postal code, country or one of its phones). Only the company's own addresses are kept: those on the domain of its website, or an address (a webmail one included) that carries its name or that of its website; the address of a web agency, a web hosting company or a general page is left aside. Charged per property whose company website is found as Company website and contacts (see Pricing); nothing found = nothing charged. Unticked (default) = the six columns are null or empty and nothing is charged.
Add a value-for-money note to each property (valueScore, 0 to 100, higher = better), computed from the property's own fields (price per night, guest rating and number of reviews, distance from the centre, cancellation and payment terms, discount) and the other properties of the same results page. valueScoreReasons lists what counted in its favour, the strongest first, and valueScoreChecksSkipped what could not be judged for lack of data (never held against the property). No extra request. Charged per property that gets a score as Value score (see Pricing); a property with no price, or without enough comparable properties in the results, gets no score and costs nothing. Unticked (default) = the three columns are null and nothing is charged.
Add the neighbours of each property (comparables, comparablesCount, comparablesMedianPricePerNight): other properties priced for the same stay and currency, of the same kind (a hotel with hotels, an apartment with apartments) and, when the property has stars, the same stars give or take one, within 2 km, the nearest first, with their distance, stars, rating, reviews and price per night, plus the median price per night of the lot. Booking.com is searched once around each 1 km area of the map and the result is shared by all the properties of the area, so a few extra requests serve many properties. Charged per property that gets at least one neighbour as Nearby properties (see Pricing); a property with no neighbour, or without position or type, costs nothing. Unticked (default) = the three columns are null and nothing is charged.
Neighbours kept for each property when Nearby properties is ticked, the nearest first. One charge per property whatever the number kept.
Add the guest reviews to each property (reviews), charged per review saved (see Pricing). One request per 25 reviews, read only as far as Max reviews per property or a review filter needs. Off = only the score and the review count. The same request also gives the number of reviews per language, traveler type and season and the topics guests mention (reviewsByLanguage, reviewsByTravelerType, reviewsBySeason, reviewTopics), at no extra charge.
Add Booking.com's own summary of the guest reviews (reviewSummary: pros and cons with how many reviews mention them) and the scores by topic and traveler type (reviewTopicScores), charged per property that has them (see Pricing). The number of reviews per language, traveler type and season and the topics guests mention (reviewsByLanguage, reviewsByTravelerType, reviewsBySeason, reviewTopics) come with it, at no extra charge. Works without Include reviews: read in a request the Actor already makes when possible, else one small request per property.
Cap on the reviews saved for each property. 0 = every review the site serves (the full history: a big hotel holds 9 000 and more). A property whose reviews could not all be read is saved with the ones read so far and reviewsIncomplete: true. Each review saved is charged on its own (see Pricing).
Order of the saved reviews: with the cap on reviews per property, it picks which ones are kept. NEWEST_FIRST is the order to use with Reviews after.
Keep only the reviews written in these languages, as two-letter codes (en, fr, de, es, it, nl...). Asked from Booking.com. Empty = every language.
[]Keep only the reviews of this type of traveler. Asked from Booking.com.
Keep only the reviews in this score band of Booking.com (out of 10). Asked from Booking.com; for an exact range use Minimum review rating and Maximum review rating.
Keep only the reviews of stays in this season. Asked from Booking.com.
Keep only the reviews that mention this word or phrase (e.g. breakfast). Asked from Booking.com.
Keep only the reviews written on or after this date: 2026-01-01, or a period before now such as 7 days, 3 months, 1 year. 7 days with a schedule = the new reviews only.
Keep only the reviews written on or before this date (the whole day is included).
Keep only the reviews scored at least this (out of 10). 0 = every review.
Keep only the reviews scored at most this (out of 10). 0 = every review. Set it low to collect complaints only.
Keep only the reviews that mention these topics. Give topic ids from reviewTopics[].id of a run in the same language (the ids change with the language; English: 249 Location, 270 Room, 245 Breakfast). Asked from Booking.com. Empty = every review.
[]Keep only the reviews that come with at least one photo. Checked on the reviews read, so a rare photo can make the run read many pages (each review kept is charged, the others are not).
Keep only the reviews the property answered (hotelReply).
Keep only the reviews whose positive and negative texts together have at least this many characters. 0 = no filter. Skips the reviews that are only a score.
Keep only the reviews of guests who stayed in these rooms (roomId of a review, roomId of a room offer). Empty = every room.
[]Keep only the reviews of stays that began on or after this date: 2026-01-01, or a period before now such as 3 months. This is the check-in day of the guest, not the day the review was written.
Keep only the reviews of stays that began on or before this date (the whole day is included). This is the check-in day of the guest, not the day the review was written.
Keep properties whose price per night is at least this, in Currency. 0 = no filter. Asked from Booking.com.
Keep properties whose price per night is at most this, in Currency. 0 = no filter. Asked from Booking.com.
Keep properties with at least this many stars (1-5). 0 = no filter. Asked from Booking.com. Properties with no star rating are dropped when this is set.
Keep properties with at most this many stars. 0 = no filter. Asked from Booking.com. Properties with no star rating are dropped when this is set.
Keep properties whose guest score is at least this (Booking.com scores out of 10). 0 = no filter. The site is asked for the step just below (6, 7, 8 or 9), then the exact score is checked. Properties without any review are dropped when this is set.
Keep properties with at least this many reviews. 0 = no filter.
Keep only these types of property. Asked from Booking.com, so the other types are never read. Empty = every type.
[]Keep only the whole homes and apartments (you get the whole place to yourself). Asked from Booking.com.
Keep only the beachfront properties. Asked from Booking.com.
Keep only the properties that have ALL the ticked amenities (the site's own amenity filters). Asked from Booking.com. Empty = no filter.
[]Keep only the properties that have ALL the ticked facilities in the room (the site's own room filters). Asked from Booking.com. Empty = no filter.
[]Keep only the properties with these accessibility features of the building (the site's own filter). Asked from Booking.com. Empty = no filter.
[]Keep only the properties that have ALL the ticked accessibility features in the room (the site's own filter). Asked from Booking.com. Empty = no filter.
[]Keep only the properties that offer ALL the ticked activities (the site's own filter). Asked from Booking.com. Empty = no filter.
[]Keep only the properties with this meal option. Asked from Booking.com.
Keep only the properties whose guests rate the breakfast very good (the site's own filter). Asked from Booking.com.
Keep only the properties with free cancellation for your stay. Asked from Booking.com.
Keep only the properties where you pay nothing now. Asked from Booking.com, then checked on each property. With Free cancellation only or Book without credit card only also ticked, the site is asked for those and this checks the rest.
Keep only the properties you can book without a credit card (the site's "Book without credit card"). Asked from Booking.com; few properties offer it. With Free cancellation only also ticked, a property must have both.
Keep only the properties that accept online payments (the site's own filter). Asked from Booking.com.
Keep only the properties showing a deal for your stay: a discount line (discounts) or a price before discount (priceBeforeDiscount).
Drop the properties Booking.com lists on behalf of a partner site (isTpiExclusive). A property that does not say is kept.
Keep only the properties whose guests rate the value for money high (the site's own filter). Asked from Booking.com.
Keep only the properties with a sustainability certification (the site's own filter). Asked from Booking.com.
Keep only the properties within this distance of the center of the destination. Booking.com offers three steps (1/2 mile, 1 mile and 2 miles, shown here in kilometres). Asked from Booking.com.
Keep only these brands, by name as listed on Booking.com (e.g. ibis, Mercure, Best Western) or by brand ID (e.g. 1053). One brand or more: a property of any of them is kept. Asked from Booking.com. Empty = no filter.
[]Keep only the properties that allow pets. Asked from Booking.com.
Keep only the properties for adults only. Asked from Booking.com.
Keep only the properties the site marks as LGBTQ+ friendly (its "Travel Proud" filter). Asked from Booking.com.
Any filter of the site that has no field above, as Booking.com writes it in a search URL (nflt): e.g. class=4;review_score=80 or ht_id=204;hotelfacility=107. Separate filters with ;. Combined with the fields above. A filter the site does not know is ignored by Booking.com, without error.
Leave out the properties with no bookable room for your dates (asked from Booking.com in a search by place, so they are never read; a property searched by link, name or id is dropped when its own card says sold out). Off =the site's own list, which may keep some sold-out properties (isAvailable: false, no price).
Drop the properties whose name contains one of these WHOLE words (case and accents ignored): art drops "Art deco" but keeps "Smart Hotel". Several words in one entry (hand made) must appear together, in that order.
[]Keep only the properties whose name contains at least one of these words (case and accents ignored).
[]Keep only the properties whose recommended room has at least this many beds. 0 = no filter. A property that does not say is dropped when this is set.
Keep only the properties whose recommended room has at most this many bedrooms. 0 = studios only. Empty = no filter. A property that does not say is dropped when this is set.
Keep only the places with at least this many bedrooms (the site's own bedrooms filter, 1-5). 0 = no filter. Asked from Booking.com. Minimum beds and Maximum bedrooms below check the room Booking.com suggests instead.
Keep only the places with at least this many bathrooms (the site's own filter, 1-8). 0 = no filter. Asked from Booking.com.
Keep only the properties that have this kind of bed (the site's own filter). Asked from Booking.com.
Needs Extract full property profile. Drop the properties whose page says smoking is not allowed; a page that does not say is kept.
Booking.com property ids to skip, even when they match the search (e.g. your own hotels).
[]Skip the properties that a previous run (same Memory key) already delivered: they are not saved and not charged, and their profile is not even fetched. First run = everything is new.
Needs Only new properties. A property already delivered under this Memory key comes back, whole, when its price per night has moved by at least the Price change threshold (%) since the run that delivered it, for the same stay (same dates, guests, rooms and currency): previousPrice, priceChange, priceChangePct and priceChangedAt are filled. Charged per property that comes back as Price change, on top of the property itself, see Pricing; a property whose price did not move enough is skipped and costs nothing, and a property with no price is never a change. Use fixed dates (for example 2026-12-20): a relative check-in such as 14 days moves the stay at every run, so its prices are learned again instead of compared. The first run after you tick it learns the prices and reports no change. Each search is read to its last page because any property of it can change its price: a run takes longer than with Only new properties alone. Unticked (default) = the four columns are always null and nothing is charged.
Used with Price changes. How far a price per night must move, up or down, from the price delivered for the property to come back: 3 means a price that goes from 100 to 103 or to 97. From 0.1 to 100.
Name of the memory used by Only new properties. Give each schedule / task its own key (e.g. paris-hotels) so that they do not share their memory. Letters, digits, - and _.
Forget everything remembered under this Memory key before the run: this run returns (and charges) every property again. Untick it afterwards.
Apify Proxy or your own proxies. Keep the default: it is included in the price. The residential Apify proxy is not available in this Actor.
{ "useApifyProxy": true}Maximum number of requests processed in parallel.
Most requests to the site in any 60 seconds, all of them counted: results pages, listing pages, the extra page read for a listing and, before the crawl, the lookups of hotel names and property links. A budget, not an even pace: up to this many can leave at once when the minute starts (spread them with the minimum delay below). Lower it if the site answers HTTP 429 / 403 in the log.
Smallest gap between two requests, in milliseconds. Unlike the per-minute rate, this spreads the requests evenly instead of letting them go out in a burst. 0 = no gap.
Retries per request before it is marked as failed. Behind a proxy, a request the site turns away is also retried on a new proxy session up to 10 times without using up these retries.