Booking Scraper PRO avatar

Booking Scraper PRO

Pricing

from $5.00 / 1,000 property scrapeds

Go to Apify Store
Booking Scraper PRO

Booking Scraper PRO

Scrape Booking.com hotels and properties with prices, review scores, stars, location and amenities. Search any city or paste Booking.com URLs.

Pricing

from $5.00 / 1,000 property scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

12 days ago

Last modified

Share

What is Booking Scraper PRO?

Booking Scraper PRO returns one dataset row per Booking.com property from a destination search or from Booking.com URLs: property name, link and ID, guest review score with its label and review count, star class, area and distance from the centre, deal flags, main photo and, for dated searches, the nightly price in your chosen currency. Hotel revenue managers, travel analysts, agencies and AI agents use it to map supply in a city, benchmark competitors on rating and price, and build property lists, with optional detail enrichment for descriptions, amenities and coordinates.

Why travel teams use this Booking.com scraper

  • Search like a guest. search takes a destination such as Amsterdam; checkIn, checkOut, adults, children and rooms set the stay.
  • Prices in your currency. currency covers 18 currencies and language sets the Booking locale.
  • Ratings ready to rank. reviewScore, reviewScoreWord and reviewCount sit on every rated property.
  • Filters before collection. minPrice, maxPrice and minStars narrow the search on Booking.com itself.
  • Detail on demand. enrichDetails opens each property page for description, amenities, check-in and check-out times and coordinates.
  • URLs welcome. startUrls accepts Booking.com search pages and individual property pages.

Best fit for this Actor

  • Best fit for competitor sets, destination supply maps and rating benchmarks across Booking.com properties.
  • Designed for dated searches when price matters: Booking.com shows nightly prices for a specific stay, so set checkIn and checkOut to fill price, priceText and taxesAndFees. Undated searches return names, scores and locations.
  • For full-city coverage, run several focused searches, such as by district, star class or price band, and merge the datasets on hotelId.
  • When you want what guests actually wrote, then pass the property url values to Booking.com Reviews Scraper.
  • To compare the same hotels on another platform, continue with TripAdvisor Scraper.

Example workflow: from a city search to a rate benchmark

A revenue manager at a boutique hotel in Amsterdam starts with search set to Amsterdam, a weekend checkIn and checkOut, currency set to EUR, minStars at 4 and maxResults at 50. The dataset returns each competitor's price, reviewScore, reviewCount and distanceFromCenter. They keep properties within a mile of their own, compare price against reviewScore to see who charges a premium for ratings, and export the table to their pricing sheet. They then schedule the same input for each upcoming weekend and compare rates week over week.

Input

{
"search": "Amsterdam",
"checkIn": "2026-11-13",
"checkOut": "2026-11-15",
"adults": 2,
"children": 0,
"rooms": 1,
"currency": "EUR",
"language": "en-gb",
"minStars": 4,
"maxResults": 50,
"enrichDetails": false
}
FieldTypeWhat it controls
searchstringDestination to search, such as Amsterdam or Paris, France. Use this or startUrls.
startUrlsarrayBooking.com search-results URLs or individual property URLs.
checkIn, checkOutstringsStay dates in YYYY-MM-DD format, for nightly prices.
adults, children, roomsintegersOccupancy. Defaults 2, 0 and 1.
currencystringPrice currency, such as USD, EUR or GBP. Default USD.
languagestringBooking locale, such as en-gb, de or fr. Default en-gb.
minPrice, maxPriceintegersNightly price range in the selected currency.
minStarsintegerMinimum star class, 0 to 5. Default 0.
maxResultsintegerCap on properties saved, up to 1,000. Default 25.
enrichDetailsbooleanOpen each property page for description, amenities, times and coordinates. Default false.
proxyConfigurationobjectApify Proxy settings. Default uses Apify Proxy.

Output

One row per property. Fields stay null when Booking.com leaves them off the card or the search.

FieldWhat it contains
name, url, hotelIdProperty identity and link
reviewScore, reviewScoreWord, reviewCountGuest rating on a 0 to 10 scale, its label and review count
starsStar class when Booking.com shows one
price, currency, priceText, taxesAndFeesNightly price for dated searches
address, city, country, distanceFromCenterLocation from the property card; on city searches city holds the district and country the city
roomType, bedConfigThe room offered for the stay
freeCancellation, breakfastIncluded, badgesDeal flags
imageMain photo URL
propertyType, description, amenities, checkInTime, checkOutTime, latitude, longitudeDetail fields with enrichDetails
checkInDate, checkOutDate, scrapedAtStay dates searched and collection time

Example row from an undated Amsterdam search:

{
"name": "Holiday Inn Express Amsterdam - North Riverside by IHG",
"url": "https://www.booking.com/hotel/nl/holiday-inn-express-amsterdam-motorkade.en-gb.html",
"hotelId": "holiday-inn-express-amsterdam-motorkade",
"propertyType": null,
"reviewScore": 8.2,
"reviewScoreWord": "Very good",
"reviewCount": 12546,
"stars": null,
"price": null,
"currency": "USD",
"priceText": null,
"address": "Amsterdam Noord, Amsterdam",
"city": "Amsterdam Noord",
"country": "Amsterdam",
"distanceFromCenter": "1.4 miles from centre",
"freeCancellation": false,
"breakfastIncluded": false,
"badges": [],
"image": "https://cf.bstatic.com/xdata/images/hotel/square240/269458643.webp?k=519e81855baad947382232b5ab719093f75caf08430bce8225d07d850638134e&o=",
"checkInDate": null,
"checkOutDate": null,
"scrapedAt": "2026-10-01T13:02:43.323Z"
}

Pricing

This Actor uses Pay per event plus Apify platform usage. Each property saved is one Property scraped event; with enrichDetails on, each property also adds one Property detail enrichment event. Every run has one Actor Start event plus the platform usage of the run. For example, 50 properties without enrichment are 50 Property scraped events plus the start event and usage; with enrichment they are 50 of each. maxResults caps the count, so it doubles as a spending limit. The live Pricing tab on this page shows the current event prices.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~booking-scraper-pro/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"search": "Lisbon", "checkIn": "2026-11-13", "checkOut": "2026-11-15", "currency": "EUR", "maxResults": 25}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/booking-scraper-pro").call(run_input={"search": "Rome", "minStars": 4, "maxResults": 30})
rated = [p for p in client.dataset(run["defaultDatasetId"]).iterate_items() if p.get("reviewScore")]
print(sorted(rated, key=lambda p: p["reviewScore"], reverse=True)[:10])

Use with AI agents (MCP)

Connect the Actor to Claude, ChatGPT or Cursor through Apify MCP and ask:

Find 4-star hotels in Rome for two adults from 13 to 15 November, priced in euros. List the ten best rated with their nightly price and distance from the centre.

The agent sets search, checkIn, checkOut, currency, minStars and maxResults, reads rows with get-dataset-items, sorts by reviewScore, and cites each url. Each property is one event, so maxResults keeps the cost of the request predictable.

Best results

Starting situationHelpful actionExpected outcome
Rate shoppingSet checkIn, checkOut and currencyNightly prices with taxes and fees
A big citySplit into district or star-band searchesWider coverage across runs
Rating benchmarksSort by reviewScore, then reviewCountWell-reviewed properties first
Amenity or description checksTurn on enrichDetailsDescription, amenities and coordinates
A known competitor setPaste property pages into startUrlsExactly those properties

Builder's note

I built this for the revenue-manager question of who charges what next to whom, so every row pairs rating, location and, for dated searches, price. I kept detail enrichment optional because most benchmarking only needs the search card, and opening every property page is the slow, extra-cost step.

FAQ

Why is the price empty?

Booking.com shows nightly prices for a specific stay. Add checkIn and checkOut to the input.

Can I get guest reviews?

This Actor returns scores and review counts. For review text, use the property URLs with the Booking.com Reviews Scraper linked above.

How do I cover a whole city?

Run several focused searches and merge them on hotelId.

Responsible use

This Actor collects publicly available Booking.com property data. Respect Booking.com's terms and applicable laws such as the GDPR when you store or share results. Booking.com is a trademark of its owner; this independent Actor is not affiliated with or endorsed by Booking.com.