Booking Hotels Scraper - Search, Prices & Details avatar

Booking Hotels Scraper - Search, Prices & Details

Pricing

from $2.00 / 1,000 hotel results

Go to Apify Store
Booking Hotels Scraper - Search, Prices & Details

Booking Hotels Scraper - Search, Prices & Details

Scrape Booking.com hotels for any destination: live prices, ratings, reviews count, location, facilities and full detail pages. Real-time data, all filters, optional detail enrichment. Pay only per result - no subscription.

Pricing

from $2.00 / 1,000 hotel results

Rating

0.0

(0)

Developer

Data Forge

Data Forge

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

4

Monthly active users

10 days ago

Last modified

Share

Booking.com Hotels Scraper - Search, Prices & Details

Scrape Booking.com hotels for any destination in one run - live prices, guest scores, review counts, location, facilities and full detail pages. Type a city, set your dates, and export clean, structured rows. No setup, no subscription, pay only per result.


Why this Actor?

What you getThis Actor (Data Forge)Other Booking.com scrapers
Live nightly pricesDated per-night and total rates for your exact check-in / check-out, guests and roomsList-only, or stale cached prices with no dates
Filter depth20+ filter options - 5 star classes, 3 meal plans, 13 facilities, free cancellation, review score, price bandA handful of basic filters
Sort modes8 modes including cheapest-first, guest score, stars and distanceDefault order only
Detail enrichmentFull detail page from any hotel URL - facilities, description, check-in / check-out times, photosSearch list only, no detail pages
Per-night pricingSeparate price_per_night and total_price fields - compare per-night rates without doing the mathRaw stay total only
Pricing modelPay per result - error rows are always freeMonthly subscription, or you pay for failed rows too

What this actor does

Give it a destination (Paris, a Booking.com dest_id, or a Booking.com search URL) and it pulls hotels with everything you need to compare and analyze:

  • ๐Ÿจ Hotel - name, star class, accommodation type
  • ๐Ÿ“Š Guest score - Booking review score (1-10), score word, review count
  • ๐Ÿ’ฒ Live prices - per-night and total price, currency, pre-discount price (set check-in/out for real dated rates)
  • ๐Ÿ“ Location - address, city, country, latitude/longitude, distance from center
  • โœ… Policies - free cancellation, breakfast included
  • ๐Ÿ–ผ Media + IDs - primary photo, canonical URL, hotel id, slug

Flip on Also fetch full detail and each result is enriched with its full detail page - complete facility list, description, check-in/out times and more photos (charged as a separate hotel-details event).

Already have specific hotels? Paste their URLs into Start URLs - each is fetched as a full detail row, alongside (or instead of) a destination search.

Input

FieldWhat it does
DestinationCity / area name, Booking.com dest_id, or search URL. Optional if you use Start URLs.
Start URLsPaste specific Booking.com hotel URLs to fetch their full detail directly.
Max hotelsCap for the destination search (1 to 1000). The actor paginates Booking.com (up to 100/page) to reach it.
Also fetch full detailEnrich every result with its full detail page. Extra hotel-details charge per hotel.
Currency12 presets + any 3-letter ISO code.
Stay & occupancyCheck-in/out dates (unlock real prices), adults, children, rooms.
Filters & sortPrice range, min guest score, star class, meal plan, facilities, free cancellation, sustainable, sort order.

Friendly-label filters (star class, meal plan, facilities) map to Booking.com's values for you - pick Free WiFi or 5 Star, no IDs to look up. The underlying REST API exposes even more filters (room facilities, accessibility, property type) for power users.

Input modes

Eight ready-to-run recipes - paste any block straight into the input editor. Each maps 1:1 to a published example task.

1. Destination scan with live prices

Travel aggregator building a city price index: pull the first 100 Paris hotels with live USD rates.

{"location": "Paris", "maxResults": 100, "currency": "USD"}

2. Budget cap, cheapest first

Deal site or budget traveler: cap at 100 per night and surface the cheapest rooms first.

{"location": "New York", "priceMax": 100, "sort": "price_low", "maxResults": 100}

3. 5-star luxury by guest score

Luxury concierge: rank Dubai 5-star properties by guest review score.

{"location": "Dubai", "stars": ["5"], "sort": "review_score", "maxResults": 100}

4. Only 9+ rated stays

Quality-first researcher: keep only Rome stays rated 9 and above (Superb).

{"location": "Rome", "minReviewScore": "9", "maxResults": 100}

5. Free cancellation only

Flexible-plans OTA: list London hotels that offer a free-cancellation rate.

{"location": "London", "freeCancellation": true, "maxResults": 100}

6. All-inclusive resorts

Package-holiday desk: find Cancun all-inclusive resorts in one pass.

{"location": "Cancun", "mealPlan": ["all_inclusive"], "maxResults": 100}

7. Facility filter (pool / spa)

Family-trip planner: Orlando hotels that must have a swimming pool.

{"location": "Orlando", "facilities": ["swimming_pool"], "maxResults": 100}

8. Full details from hotel URLs

Rate-monitoring analyst: pull full detail for specific hotels you already track by URL.

{"startUrls": ["https://www.booking.com/hotel/us/rodeway-inn-secaucus.html"]}

Output

One flat row per hotel, discriminated by row_type, with the full payload under data. The dataset ships with three ready-made table tabs - Overview, Hotels, and Details - so the data reads as a clean spreadsheet you can sort, filter and export to CSV/Excel/JSON in one click.

row_typeWhat each row contains
hotel_search_resultOne hotel from a destination search: name, star class, guest score + review count, live price_per_night and total_price, currency, address / city / country, latitude / longitude, distance from center, free-cancellation and breakfast flags, hotel id, slug, photo and canonical URL. Full raw object under data.
hotel_detailDeep detail for one hotel (from a Start URL, or when Also fetch full detail is on): description, check-in / check-out times, full facility list and facility_count, coordinates, plus the core identity fields. Full raw object under data.
errorA skipped input (bad URL, no match, or upstream issue) carrying an error_code and error_message. Always free - you are never charged for it.

Common columns: name, stars, score, review_count, price, price_per_night, total_price, currency, address, city, country, url, hotel_id, image_url, free_cancellation, breakfast_included.

A run-summary record (OUTPUT key) reports hotel/detail counts and the estimated cost. Live per-event pricing is shown on this actor's Apify Store page.

Tip: check-in / check-out are optional. Leave them blank and the actor auto-applies a sensible default stay (about a week out, 2 nights) so you still get real prices - or set them for an exact stay.

Input & output example

Input - search Paris for a 2-night stay:

{
"location": "Paris",
"checkIn": "2026-07-18",
"checkOut": "2026-07-20",
"adults": 2,
"maxResults": 50,
"currency": "USD"
}

Output - one flat hotel_search_result row (common columns at the top level, full payload under data):

{
"row_type": "hotel_search_result",
"name": "Villa Royale Montsouris",
"stars": 3,
"score": 8.0,
"score_word": "Very Good",
"review_count": 1218,
"price_per_night": 298.57,
"total_price": 298.57,
"currency": "USD",
"display_price": "US$298.57",
"address": "144 Rue De La Tombe Issoire",
"city": "Paris",
"country": "France",
"free_cancellation": false,
"breakfast_included": false,
"hotel_id": "217597",
"url": "https://www.booking.com/hotel/fr/pavillonroyalemontsouris.html",
"data": {"...": "full hotel object"}
}

Why buyers pick this actor

  • Real-time, real prices - dated nightly + total rates straight from Booking.com, not stale cached numbers.
  • Every filter, friendly labels - stars, score, meal plan, 13 facilities, price, free cancellation. No internal IDs to look up.
  • Search or URLs - scan a whole city (up to 100 hotels per page), or fetch exact hotels. Both in one actor.
  • Clean tabs - export-ready Hotels / Details tables, not a wall of mixed columns.
  • You only pay for results - errors and your own misconfigurations are never charged.

FAQ

Is scraping Booking.com legal? The actor collects publicly available listing data. You are responsible for using the output in line with Booking.com's terms and applicable law.

How fresh are the prices? Prices are fetched live from Booking.com at run time for the exact check-in / check-out, guests and rooms you set - not cached numbers. Run the actor again (or on a schedule) to capture how rates move day to day.

What if a hotel comes back with no price? A hotel_search_result needs a dated stay to show a rate. Leave the dates blank (the actor applies a 1-week-ahead, 2-night default) or set explicit check-in / check-out and re-run. hotel_detail rows describe the property itself, so they intentionally carry no price. A property can also be sold out for your exact dates.

Can I run this on a schedule? Yes. Use Apify Schedules to run the actor daily or weekly - each run writes a fresh dated snapshot to the dataset, ideal for price tracking and availability monitoring.

Do I need to set check-in / check-out dates? No. Leave them blank and the actor applies a sensible default stay (about a week out, 2 nights) so you still get real prices. Set them for an exact stay.

Can I scrape specific hotels instead of a whole city? Yes. Paste Booking.com hotel URLs into Start URLs and each is fetched as a full detail row, with or without a destination search.

How much does it cost? You pay per result (one hotel-result charge per hotel row). Turning on "Also fetch full detail" adds a separate hotel-details charge per hotel. Error rows are free. Live per-event pricing is on this actor's Apify Store page.

What currency are the prices in? Whatever you pass in currency - 12 presets or any 3-letter ISO code (default USD).

Part of the Data Forge travel suite - pick the tool that fits the job:

Support

I personally support every customer - drop a message on any channel for help, higher limits, or a custom scraping build.

Telegram WhatsApp Email