Booking.com Scraper - Hotels, Prices & Availability
Pricing
$2.00 / 1,000 hotel scrapeds
Booking.com Scraper - Hotels, Prices & Availability
Scrape Booking.com hotels with live room prices, availability, discounts, taxes, review scores, star ratings, room types, free-cancellation & breakfast flags, photos and map coordinates. Search any destination, city, landmark or hotel by name or URL. Monitor price drops. Export JSON, CSV, Excel.
Pricing
$2.00 / 1,000 hotel scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract complete Booking.com hotel data for any destination — live room prices (with taxes & fees and the crossed-out "was" price + discount %), real-time availability, guest review scores & counts, star ratings, room types (with beds, bedrooms & bathrooms), free-cancellation and breakfast-included flags, per-offer room lists, map coordinates, the main photo and a direct booking URL. Search by destination, landmark, airport or hotel name — or paste a Booking.com URL.
No login, no cookies, no browser, no API key — fast JSON extraction straight from Booking's own data backend, with built-in price & availability monitoring.
Why this Booking.com scraper?
Most Booking scrapers give you a name, a score and a price. This actor pulls the full record Booking renders for each property and ships the richest dataset in the category:
| Data | Typical scrapers | This actor |
|---|---|---|
| Hotel name, star rating, city | ✅ | ✅ |
| Live room price + currency | ✅ | ✅ |
| Total taxes & fees text | ❌ | ✅ |
| Crossed-out "was" price + discount % | ❌ | ✅ |
| Availability (sold-out detection) | ❌ | ✅ |
| Guest review score + review count + label | partial | ✅ |
| Free cancellation & no prepayment flags | ❌ | ✅ |
| Breakfast included flag + meal plan | ❌ | ✅ |
| Room type + beds / bedrooms / bathrooms | ❌ | ✅ |
| Per-offer room list (price, free-cancel deadline, meal) | ❌ | ✅ opt-in |
| Address, latitude / longitude | partial | ✅ |
| Main photo + direct booking URL | partial | ✅ |
| Server-side filters (price, stars, score, free-cancel, breakfast, property type) | ❌ | ✅ |
| Price / availability monitoring across runs | ❌ | ✅ |
Use cases
- Price & rate intelligence — track nightly prices, taxes, discounts and availability across cities and dates for revenue management, OTAs, comparison sites and meta-search.
- Market research — benchmark a property against competitors by star class, review score, price band, free-cancellation and breakfast policy in any market.
- Hotel monitoring — schedule recurring runs and use monitor mode to capture only price drops, price rises, sold-outs and newly available hotels.
- Travel content & aggregation — feed booking sites, trip planners, dashboards and apps with structured, photo-rich hotel data for thousands of destinations.
- Demand & event research — watch how prices move around events, holidays and seasons in a destination.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the Booking.com Scraper, type a destination (e.g.
Paris), pick your dates, and click Start. - Watch hotels stream into the dataset table.
- Export as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the Apify API.
Input
{"searchTerms": ["Paris", "Hotel Armoni Paris"],"checkInDate": "2026-07-15","checkOutDate": "2026-07-17","adults": 2,"rooms": 1,"currency": "USD","sortBy": "price","minPrice": 80,"maxPrice": 250,"starRatings": ["4"],"minReviewScore": 8,"freeCancellationOnly": true,"maxResultsPerSearch": 50,"maxResults": 200,"includeRooms": true}
- searchTerms — destinations (
Paris,Bali,New York,Eiffel Tower,Schiphol Airport) or specific hotel names (Hotel Armoni Paris). Each term is resolved with Booking's own autocomplete, so cities, regions, districts, landmarks, airports and individual hotels all work. - searchUrls — paste Booking.com search results URLs (
https://www.booking.com/searchresults.html?ss=Rome&dest_id=-126693&dest_type=city...) or hotel URLs (https://www.booking.com/hotel/fr/armoni-paris.html). Dates, occupancy and on-page filters in the URL are honoured. - destinations (advanced) — explicit Booking IDs as
destId:destType(e.g.-1456928:city,735:landmark,10096:hotel). - checkInDate / checkOutDate / adults / children / childrenAges / rooms — used to price rooms and check availability (defaults to a 1-night stay 14 days out, 2 adults, 1 room).
- currency / language — currency (
USD,EUR,GBP, …) and locale (en-us,de,fr, …) for all output. - sortBy —
popularity,price,review_score_and_price,bayesian_review_score,class_descending,class_ascending,distance_from_search. - Filters (server-side) —
minPrice/maxPrice,starRatings,minReviewScore,freeCancellationOnly,breakfastIncludedOnly,propertyTypes, plusextraFiltersfor raw Bookingnfltcodes. You only pay for results that match. - includeRooms (default true) — include the per-offer
roomsarray. - monitorMode — output only hotels that are new or whose price / availability changed since the last run.
Output
One record per hotel (type: "hotel"):
{"type": "hotel","hotelId": 50845,"name": "Hotel Armoni Paris","url": "https://www.booking.com/hotel/fr/armoni-paris.html","pageName": "armoni-paris","ufi": -1456928,"accommodationTypeId": 204,"isClosed": false,"starRating": 4,"starRatingType": "STARS","reviewScore": 8.2,"reviewScoreLabel": "Very good","reviewCount": 2034,"address": "7 Rue Greffulhe","city": "Paris","countryCode": "fr","latitude": 48.8721,"longitude": 2.3245,"price": 272.79,"priceFormatted": "US$273","currency": "USD","pricePerNight": 136.4,"priceBeforeDiscount": 362.96,"discountAmount": 90.17,"discountPercent": 25,"taxesAndFees": "+US$39 taxes and fees","available": true,"isSoldOut": false,"freeCancellation": true,"noPrepayment": false,"breakfastIncluded": false,"mealPlan": null,"roomName": "Standard Double Room","bedrooms": 0,"bathrooms": 0,"beds": 1,"rooms": [{ "name": "Standard Double Room", "price": 272.79, "currency": "USD", "originalPrice": 250.0, "originalCurrency": "EUR", "freeCancellationUntil": "2026-07-09T22:00:00Z", "mealPlan": null }],"photoUrl": "https://cf.bstatic.com/xdata/images/hotel/square600/12345.webp","checkIn": "2026-07-15","checkOut": "2026-07-17","nights": 2,"adults": 2,"children": 0,"roomsRequested": 1,"scrapedAt": "2026-06-18T12:00:00.000Z"}
In monitor mode each emitted record also carries a monitorChange field: new, price_drop, price_rise, sold_out or now_available.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run hourly/daily/weekly to track prices or watch a destination for new hotels; perfect for price feeds and dashboards.
- Webhooks — trigger downstream actions (price-alert email, Slack message, database import) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/booking-scraper').call({searchTerms: ['Paris'],checkInDate: '2026-07-15',checkOutDate: '2026-07-17',currency: 'USD',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} hotels`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push hotels and prices straight into your sheets or CRM.
- Slack — get notified when a monitored destination has new hotels or price drops.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the Apify MCP server — ask your assistant to "find 4-star hotels in Paris under $250 with free cancellation and a 8+ review score" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Build a complete travel & events data stack:
- Airbnb Scraper & Market Monitor — vacation rentals: listings, prices, availability calendar and reviews.
- Eventbrite Scraper — events with ticket prices and organizer contacts.
- Sched Conference Scraper — conference speakers, sessions, sponsors and leads.
- Luma Scraper — Luma events, hosts and attendee-facing details.
- Swapcard Event Scraper — exhibitors, speakers and contacts from any public Swapcard event.
Tips
- Any destination: type a city, region, landmark, airport or even a specific hotel name. Booking's autocomplete resolves it automatically — a hotel name returns just that property.
- Prices need dates: set
checkInDate/checkOutDatefor your exact stay. Without dates the actor prices a 1-night stay two weeks out. - Pay only for matches: price, star, review-score, free-cancellation, breakfast and property-type filters are applied by Booking server-side, so filtered-out hotels are never returned (or billed).
- Bigger sweeps: raise
maxResultsPerSearchto page deeper into a market; very large cities are best split by district (use severalsearchUrlswith anfltdistrict filter). - Recurring price tracking: combine Schedules with
monitorModeto emit only price drops, price rises, sold-outs and new hotels each run. - Proxies: the default Apify datacenter (US) proxy works well; switch to residential if you scrape at very high volume.
FAQ
How do I scrape hotels for a specific city? Put the city in searchTerms (e.g. Bangkok). For a precise market, paste a Booking.com search URL into searchUrls — its destination, dates and filters are honoured.
Does it return live prices? Yes — the lowest available room rate for your dates, plus the total taxes & fees text, any crossed-out "was" price and the discount %. Availability (sold-out) is detected too.
Can I track a single hotel's price? Yes — put the hotel name (or its Booking URL) in searchTerms/searchUrls, turn on monitorMode, and schedule the run. You'll get a record only when its price or availability changes.
Can I filter results? Yes — price range, star ratings, minimum review score, free cancellation, breakfast included and property type are all applied server-side. Power users can add raw Booking nflt codes via extraFilters.
Can I export to Google Sheets, CSV or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
Does monitor mode conflict with Apify Schedules? No. The schedule decides when the actor runs; monitor mode decides what's emitted (only new/changed hotels). They're complementary — use them together for price tracking.
Is scraping Booking.com legal? This actor collects publicly available hotel and pricing data only. You are responsible for using the data in compliance with applicable laws and Booking.com's terms.
A field is null — why? Some hotels genuinely don't publish a field (e.g. a brand-new property with no reviews, or no crossed-out price when there's no discount). Fields are null only when the data doesn't exist, not because the scraper skipped them.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.