Booking Hotel Search · Listings by City avatar

Booking Hotel Search · Listings by City

Pricing

from $0.80 / 1,000 hotel scrapeds

Go to Apify Store
Booking Hotel Search · Listings by City

Booking Hotel Search · Listings by City

Search Booking.com by destination or URL — hotels, prices, ratings, coordinates. Beats the 1,000 result cap. Companion Actors: Booking Pro Host (emails) and Booking Availability (day-by-day rates). Free plan: 20 hotels/run. No login.

Pricing

from $0.80 / 1,000 hotel scrapeds

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

60

Total users

35

Monthly active users

9 days ago

Last modified

Share

Booking.com Hotel Search

Type a destination, get the Booking.com hotel catalog — names, nightly prices, ratings, photos, coordinates, and cancellation flags. Export JSON, CSV, or Excel from Apify.

No login. No Booking.com account. No setup.

Free plan: 20 hotels / run. Paid plans follow PPE (billed per hotel row).


Who is this for?

You are…Typical goalSuggested setup
Travel startup or OTAHotel catalog with prices and coordinatesDestination text · leave details off
Revenue managerCompetitor rates for one market and date windowDestination + check-in / check-out
Market researcherCity supply snapshot — prices, stars, availabilityDestination · maxResults: 0 on a paid plan
Hospitality investorDensity and pricing in a neighbourhoodPaste a Booking.com search URL with map filters
Data journalistTourism prices, structuredDestination · export CSV
Developer or agencyDataset without maintaining a scraperStart from a ready-made example

What you get by default: one row per hotel — name, Booking.com URL, city, coordinates, nightly rate, stars, guest score, photo, free-cancellation / prepayment / pets flags.

When to enable the details add-on: you need room types, check-in hours, or the hotel description. Leave it off for prices and ratings — faster and cheaper. The Store image is HTTP-only; room-type enrichment needs Chrome and is skipped on the default build.

Not sure it covers your city? The scraper works around Booking.com's 1,000-result cap — major cities like Paris or London typically return 3,000–5,000+ hotels on a paid run with maxResults: 0.


Also available

The Booking.com suite — pick the job:

ActorUse when
This Actor — Hotel SearchFull hotel catalog by city or URL
Booking Pro HostHotel emails and company names
Booking AvailabilityDay-by-day rates and sold-out
Booking Price MonitorMarket rates across date windows
Booking ReviewsGuest scores and feedback

Quick start

Option A — Type your destination

  1. Open the Actor Input tab
  2. Set Destination to Paris, France (or any city)
  3. Optionally set check-in and check-out
  4. Click Start
  5. Download results from the Dataset tab (JSON, CSV, Excel, or HTML)

Option B — Paste a Booking.com search URL (keep your filters)

  1. Open booking.com and search for a city
  2. Apply filters in the browser (stars, neighbourhood, review score, property type)
  3. Copy the URL from the address bar
  4. Paste it into Or use Booking.com search URLs
  5. Click Start

Input

{
"destination": "Paris, France",
"checkin": "2026-10-12",
"checkout": "2026-10-14",
"adults": 2,
"rooms": 1,
"maxResults": 20
}

Booking.com search URL (filters kept)

{
"urls": [
"https://www.booking.com/searchresults.html?ss=Barcelona%2C+Spain"
],
"maxResults": 20
}

Hotels only, skip apartments

{
"destination": "Paris, France",
"propertyType": "Hotels",
"maxResults": 20
}

All input parameters

ParameterTypeDefaultDescription
destinationStringCity or region (Paris, France). Leave empty if you pass urls.
urlsString[]Booking.com search-result URLs. Browser filters stay on the URL.
checkinDate+7 daysCheck-in used for displayed prices.
checkoutDate+9 daysCheck-out (default 2-night stay).
adultsInteger2Occupancy for prices (1–30).
roomsInteger1Number of rooms (1–30).
currencyStringBooking.com defaultDropdown ISO code (EUR, USD, GBP…). Empty = Booking.com default for that search.
propertyTypeStringall typesHotels, Apartments, Hostels, Guest houses, Bed & breakfasts, Villas, Resorts, Motels.
maxResultsInteger0 (no cap)Cap how many hotels to return. Console Try prefills 15. Free plan: 20 / run even if you set higher or 0.
scrapeDetailsBooleanfalseAdd-on: room types, check-in hours, description. Extra PPE. Skipped on the HTTP-only Store image.

Need a review-score or neighbourhood cut? Apply it on Booking.com, copy the search URL, and paste it in urls.


Ready-made examples (published tasks)

ExampleBest for
Export Paris hotels with prices and ratingsFlagship city catalog
Scrape Barcelona hotels from Booking.comSecond-market snapshot
Export hotels from a Booking.com search URLKeep browser filters
Find Booking.com apartments in GstaadProperty-type slice
Export London hotelsUK catalog
Scrape Rome hotelsItaly snapshot
Export Amsterdam hotelsNL catalog
Export Lisbon hotelsPortugal snapshot
Villas in MarbellaVilla-only slice
Amsterdam search URLKeep NL filters
Paris hotels onlySkip apartments
Export New York hotelsUS catalog

What data does it extract?

CategoryFields
IdentityhotelName, hotelUrl, hotelId
Locationcity, countryCode, latitude, longitude, distanceFromCenter
PricepricePerNight, currency, hasDiscount, badges, checkin, checkout
RatingsstarRating, rating (guest score / 10), reviewCount
PoliciesfreeCancellation, noPrepayment, petsAllowed
MediaphotoUrl
Add-ondescription, checkinFrom / checkinUntil / checkoutUntil, rooms[], surroundings[]

Download in JSON, CSV, Excel, or HTML from the Dataset tab.


Output example

Default run (prices, ratings, photo — details add-on off):

{
"type": "hotel",
"hotelId": 12215313,
"hotelName": "TheLander - Serviced Apartment in Le Marais",
"hotelUrl": "https://www.booking.com/hotel/fr/thelander-serviced-apartment-in-le-marais.html",
"city": "Paris",
"countryCode": "fr",
"latitude": 48.8576393,
"longitude": 2.3525712,
"starRating": 4,
"rating": 8.7,
"reviewCount": 7,
"distanceFromCenter": "150 m from downtown",
"photoUrl": "https://cf.bstatic.com/xdata/images/hotel/square600/566929521.webp",
"pricePerNight": 1350.73,
"currency": "EUR",
"hasDiscount": false,
"badges": [],
"freeCancellation": false,
"noPrepayment": false,
"petsAllowed": false,
"checkin": "2026-10-12",
"checkout": "2026-10-14",
"searchLabel": "Paris, France"
}

The details add-on — when to turn it on

Turn it on for room types, what's nearby, check-in hours, and the hotel description.

Leave it off if you only need prices, ratings, and availability.

DefaultWith details add-on
Speed~30 seconds for 1,000 hotels~3–4 seconds per hotel
200 hotels~30 seconds~12 minutes
Memory1,024 MB2,048 MB
Store imageHTTP — add-on skippedNeeds Chrome; not in the default build

Set Max results to cap how many hotels you pull — useful for a top-50 sample.


How much does it cost?

Pay per hotel row. No Actor-start fee on this listing. No monthly commitment on top of your Apify plan.

From 15 September 2026 the hotel-row event becomes $0.0035 on Free (Bronze $0.0028 · Silver $0.0021 · Gold $0.0014). The details add-on does not change. Until then, the table below is what you are billed.

Standard run (prices, ratings, photos)

FREEBRONZESILVERGOLD
Per hotel (until 15 Sep 2026)$0.002$0.0016$0.0012$0.0008
Per hotel (from 15 Sep 2026)$0.0035$0.0028$0.0021$0.0014
50 hotels (until / from)~$0.10 / $0.18~$0.08 / $0.14~$0.06 / $0.11~$0.04 / $0.07
500 hotels (until / from)~$1.00 / $1.75~$0.80 / $1.40~$0.60 / $1.05~$0.40 / $0.70
2,000 hotels (until / from)~$4.00 / $7.00~$3.20 / $5.60~$2.40 / $4.20~$1.60 / $2.80

With details add-on (rooms, description)

Add-on cost is on top of the standard rate. Only charged when the add-on actually runs (Chrome build).

FREEBRONZESILVERGOLD
Per hotel enriched$0.008$0.004$0.003$0.002
50 hotels + details~$0.50~$0.28~$0.21~$0.14
200 hotels + details~$2.00~$1.12~$0.84~$0.56

Cost uses Apify pay-per-event. Check Apify pricing for platform compute on top of PPE.


Run on a schedule

Set a weekly or daily task to track how prices move for a market and date window. Useful for revenue management, competitive intelligence, or a live dashboard.


Local development

$npm install

Edit input.json at the project root, then:

cp input.json storage/key_value_stores/default/INPUT.json
apify run --purge-none

Example input.json for a 15-hotel Paris sample:

{
"destination": "Paris, France",
"maxResults": 15
}

Use apify run (not npm start).


This Actor only collects data that any visitor can see on Booking.com — hotel names, public prices, ratings, and policies. No login, no personal guest data.

Make sure your use complies with applicable regulations (GDPR, local data laws). When in doubt, consult a legal professional. See also Apify on the legality of web scraping.


FAQ

  • Do I need a Booking.com account? No.
  • Does it use an official Booking.com API? No. It reads the public search results any visitor can see.
  • Why did I only get 20 hotels? Free plan: 20 hotels / run. Upgrade on Apify to raise the cap; billed per hotel.
  • Can I get more than 1,000 hotels in one city? Yes on a paid plan with maxResults: 0. The Actor splits the market so it is not stuck on Booking.com's first 1,000 results.
  • How do I keep star / neighbourhood / review-score filters? Apply them on Booking.com, copy the search URL, paste it in urls.
  • Room types came back empty. The default Store image is HTTP-only. Room-type enrichment needs Chrome and scrapeDetails: true.
  • What if results look incomplete? Raise Timeout in Run options, or cap maxResults and retry. Large cities with maxResults: 0 can run for hours.
  • How do I leave a Store review? Actor page → Reviews. A short note after a successful export helps the next travel team find this listing.

Support

Questions, custom work, or feedback: corentin@outreacher.fr or the Issues tab on the Actor page.

Ready? Type a destination (or paste a Booking.com URL), keep the details add-on off for a cheap first export, and click Start.