Booking.com Scraper - Hotels, Prices & Availability avatar

Booking.com Scraper - Hotels, Prices & Availability

Pricing

$2.00 / 1,000 hotel scrapeds

Go to Apify Store
Booking.com Scraper - Hotels, Prices & Availability

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

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

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:

DataTypical scrapersThis 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 + labelpartial
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 / longitudepartial
Main photo + direct booking URLpartial
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

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Booking.com Scraper, type a destination (e.g. Paris), pick your dates, and click Start.
  3. Watch hotels stream into the dataset table.
  4. 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.
  • sortBypopularity, 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, plus extraFilters for raw Booking nflt codes. You only pay for results that match.
  • includeRooms (default true) — include the per-offer rooms array.
  • 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:

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/checkOutDate for 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 maxResultsPerSearch to page deeper into a market; very large cities are best split by district (use several searchUrls with a nflt district filter).
  • Recurring price tracking: combine Schedules with monitorMode to 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.