Booking.com Scraper
Pricing
from $1.50 / 1,000 results
Booking.com Scraper
[π° $1.5 / 1K] Extract hotel and accommodation listings from Booking.com β prices, ratings, addresses, amenities, photos, and per-room availability. Filter by stars, guest score, price, and property type across any destination worldwide.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract hotel and accommodation data from Booking.com at scale β names, prices, ratings, addresses, photos, amenities, and per-room availability β without writing any code. Search by destination keyword or paste Booking.com URLs directly. Get back clean, structured JSON ready for spreadsheets, dashboards, and downstream automations.
Why This Scraper?
- Pay only per result β flat $1.50 per 1,000 hotels, no surprises.
- No compute charges β you only pay per result returned.
- Every Booking.com search field exposed β destination, dates, guests, rooms, property type, stars, guest score, price range, currency, language, and sort order.
- Up to ~1,000 results per query β Booking caps each search at roughly 1,000 hotels; this actor reaches that ceiling reliably.
- Accurate per-night pricing β both total stay cost and average per-night cost in your chosen currency.
- Optional full hotel detail enrichment β turn on
Include Room Detailsto get amenities, room types, bed configurations, occupancy, gallery photos, lat/lng, and the complete address for each property. - Direct URL support β paste any Booking.com search or hotel URL and the actor auto-detects the page type.
- Datacenter proxy infrastructure included β handled automatically; no proxy setup required from you.
- 14 supported languages, 19 currencies β get review snippets and prices in the locale your users care about.
Use Cases
Travel & Booking Aggregators
- Build OTA or meta-search comparison tools across hundreds of destinations.
- Refresh a curated hotel catalog daily with current prices and availability.
- Power "best deal" alerts when prices drop below a threshold.
Market Research & Hospitality Analytics
- Track average nightly rates by city, season, and star tier.
- Benchmark hotel inventory and pricing across competing destinations.
- Analyze guest score distributions to identify undervalued or overhyped properties.
Competitive Pricing & Revenue Management
- Monitor competitor pricing in real time for your own property.
- Detect rate parity issues across distribution channels.
- Identify when competitors are running discounts or premium pricing.
Lead Generation for Hospitality SaaS
- Build outreach lists of independent hotels, B&Bs, and guest houses by region.
- Identify properties with low review scores β prime targets for reputation-management products.
- Source unclaimed-looking listings for channel-management upsell.
Travel Content & Editorial
- Generate "Top 25 hotels in Lisbon" lists from live data.
- Power "best of" travel guides with current ratings, prices, and photos.
- Enrich travel blog posts with up-to-date hotel imagery and amenity lists.
Real Estate & Short-Term Rental Intelligence
- Map vacation-rental supply across cities to inform investment decisions.
- Compare apartment vs hotel pricing to evaluate STR market entry.
- Track villa and resort availability in seasonal markets.
Getting Started
1. Minimal β just a destination and dates
The fastest way to start. Default sort is "Top picks", default currency is USD, default language is English (UK), and you'll get up to 100 results.
{"search": "hotels in Paris","checkIn": "2026-06-15","checkOut": "2026-06-17"}
2. Filtered β narrow by stars, score, and price
Find 4 and 5-star apartments and villas in Lisbon under EUR 200 per night with at least an 8.0 guest score.
{"search": "Lisbon","checkIn": "2026-07-10","checkOut": "2026-07-15","adults": 2,"propertyType": ["apartments", "villas"],"starsCountFilter": ["4", "5"],"minScore": "8","priceMin": 80,"priceMax": 200,"currency": "EUR","sortBy": "review_score","maxResults": 100}
3. Direct Booking.com URLs
Paste any Booking.com search URL or hotel page URL. The actor detects the page type automatically and pulls the right data. Search URLs return the full result list; hotel URLs return a single enriched record.
{"startUrls": ["https://www.booking.com/searchresults.en-gb.html?ss=Tokyo&checkin=2026-09-01&checkout=2026-09-04","https://www.booking.com/hotel/fr/scarlett.en-gb.html"],"currency": "USD"}
4. Full hotel detail enrichment with family rooms
Turn on Include Room Details to enrich every hotel with amenities, room types, bed configurations, lat/lng, and the complete gallery. When booking with children, list each child's age in childrenAges so Booking can price family rooms correctly.
{"search": "Bali resorts","checkIn": "2026-10-05","checkOut": "2026-10-12","adults": 2,"children": 2,"childrenAges": [5, 8],"rooms": 1,"propertyType": ["resorts"],"minScore": "9","currency": "USD","language": "en-us","maxResults": 50,"includeRoomDetails": true}
Input Reference
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
search | string | hotels in Paris | City, region, country, or hotel name to search for on Booking.com. |
startUrls | string[] | [] | Paste Booking.com URLs to scrape β search-result pages or individual hotel pages. The actor auto-detects the page type. When provided, this overrides the destination. |
Dates & Guests
| Parameter | Type | Default | Description |
|---|---|---|---|
checkIn | string (YYYY-MM-DD) | Check-in date. Required to fetch live prices and room availability β leave empty for catalog data only. | |
checkOut | string (YYYY-MM-DD) | Check-out date. Must be after the check-in date. | |
adults | integer | 2 | Number of adult guests (Booking considers age 13+ an adult). Range 1β30. |
children | integer | 0 | Number of child guests (Booking considers ages 0β12 as children). Range 0β12. |
childrenAges | integer[] | [] | Age of each child (0β17). Required when children > 0 β Booking prices family rooms based on these ages. Example: [5, 8] for two children aged 5 and 8. |
rooms | integer | 1 | Number of rooms required. Range 1β30. |
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
propertyType | string[] | [] | Multi-select property types. Options: Hotels, Apartments, Hostels, Bed & Breakfasts, Guest Houses, Resorts, Villas, Vacation Homes. Empty = include all. |
starsCountFilter | string[] | [] | Multi-select official star ratings. Options: 1 star, 2 stars, 3 stars, 4 stars, 5 stars. Empty = any number of stars. |
minScore | string | Minimum guest review score. Booking exposes four buckets: 6+ Pleasant, 7+ Good, 8+ Very Good, 9+ Superb. | |
priceMin | integer | Minimum nightly price in the chosen currency. Leave empty for no minimum. | |
priceMax | integer | Maximum nightly price in the chosen currency. Leave empty for no maximum. | |
sortBy | string | popularity | Result ranking. Options: Top picks (popularity), Price (lowest first), Price (highest first), Stars (highest first), Distance from center, Top reviewed. |
Localization
| Parameter | Type | Default | Description |
|---|---|---|---|
currency | string | USD | Currency code for prices. Options: US Dollar, Euro, British Pound, Canadian Dollar, Australian Dollar, Japanese Yen, Chinese Yuan, Swiss Franc, Swedish Krona, Norwegian Krone, Danish Krone, Polish ZΕoty, UAE Dirham, Mexican Peso, Brazilian Real, Indian Rupee, Singapore Dollar, South African Rand, Turkish Lira. |
language | string | en-gb | Booking.com site language. Options: English (UK), English (US), German, French, Spanish, Italian, Dutch, Portuguese, Polish, Russian, Japanese, Korean, Chinese, Arabic. |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 100 | Maximum hotels to return per search. Set to 0 for all available. Booking caps each query at about 1,000 β to get more, narrow your filters or split into smaller queries. |
includeRoomDetails | boolean | false | Fetch per-hotel room offerings, full amenity lists, gallery photos, lat/lng, and the complete address for every result. Slows runs significantly and roughly doubles cost β enable only when you need amenities, room layouts, or coordinates. |
Output
Every record includes the same set of structured fields. With includeRoomDetails on, each hotel is enriched with the full amenity list, room types, gallery, lat/lng, and complete address.
Example
{"url": "https://www.booking.com/hotel/fr/scarlett.en-gb.html","name": "Hotel Scarlett","type": "Hotel","description": "Hotel Scarlett is a charming 3-star hotel located in the heart of the 10th arrondissement, just a 5-minute walk from Gare du Nord and Gare de l'Est.","stars": 3,"rating": 8.4,"ratingLabel": "Very Good","reviewsCount": 1842,"price": {"amount": 312.0,"currency": "EUR","perNight": 156.0},"checkIn": "2026-06-15","checkOut": "2026-06-17","breakfast": "Continental","address": {"street": "39 Rue des Petites Ecuries","postalCode": "75010","city": "Paris","region": "Γle-de-France","country": "France","countryCode": "fr","full": "39 Rue des Petites Ecuries, 75010 Paris, France"},"location": {"lat": 48.8742,"lng": 2.3531},"images": ["https://cf.bstatic.com/xdata/images/hotel/max1024x768/...","https://cf.bstatic.com/xdata/images/hotel/max1024x768/..."],"amenities": ["Free WiFi","24-hour front desk","Air conditioning","Family rooms","Non-smoking rooms","Lift","Daily housekeeping"],"rooms": [{"available": true,"roomType": "Standard Double Room","bedType": "1 double bed","persons": 2,"price": null,"features": ["Free WiFi", "Private bathroom", "Air conditioning"]},{"available": true,"roomType": "Superior Twin Room","bedType": "2 single beds","persons": 2,"price": null,"features": ["Free WiFi", "City view", "Air conditioning"]}],"bookingUrl": "https://www.booking.com/hotel/fr/scarlett.en-gb.html?aid=304142&checkin=2026-06-15&checkout=2026-06-17&group_adults=2&no_rooms=1&group_children=0","scrapedAt": "2026-04-25T14:32:11+00:00"}
Output Fields
| Field | Type | Description |
|---|---|---|
url | string | Canonical Booking.com page URL for the hotel. |
name | string | Hotel or property name. |
type | string | Accommodation type (Hotel, Apartment, Hostel, Bed & Breakfast, Villa, Resort, Guest House, Vacation Home, etc.). |
description | string | Property description from Booking.com. Populated when includeRoomDetails is on, or when extracting from a hotel URL directly. |
stars | number | Official star rating (1β5). null for properties using Booking's quality rating instead of stars. |
rating | number | Booking.com guest review score (0β10). null for unrated properties. |
ratingLabel | string | Human-readable rating label (e.g. "Superb", "Very Good", "Good"). |
reviewsCount | number | Total number of guest reviews. |
price | object | { amount, currency, perNight } β total stay price, currency code, and average per-night price. null when dates are not provided. |
checkIn | string | Check-in date echoed back (YYYY-MM-DD). |
checkOut | string | Check-out date echoed back (YYYY-MM-DD). |
breakfast | string | Breakfast offering when listed (e.g. "Continental", "Buffet"). |
address | object | { street, postalCode, city, region, country, countryCode, full } β populated to varying depth depending on enrichment mode. |
location | object | { lat, lng } β GPS coordinates. Populated when includeRoomDetails is on. |
images | string[] | Photo URLs. Search results return a single thumbnail; with detail enrichment you get the full gallery. |
amenities | string[] | Property-level amenities (Free WiFi, Pool, Gym, Pet-friendly, etc.). Populated when includeRoomDetails is on. |
rooms | object[] | Per-room offerings: { available, roomType, bedType, persons, price, features }. Populated when includeRoomDetails is on. |
bookingUrl | string | Direct booking link with your dates and guest counts pre-filled. |
scrapedAt | string | ISO 8601 UTC timestamp of when the record was extracted. |
Tips for Best Results
- Use destinations Booking.com actually serves. City names, regions, country names, and well-known hotel names work best. Spelling matters β "Phuket" returns thousands; "Phukkett" returns nothing.
- Always provide check-in / check-out dates if you want pricing and room availability. Without dates, you'll still get hotel info, but
pricewill benullandroomswill be empty. - The chosen language affects review snippets and descriptions. For US English content, set
languagetoen-us; for German listings, usede. - Booking caps every search at about 1,000 results. To get more, narrow your filters (one star tier, one property type, a tighter price band) or split a wide query into several smaller queries β for example, search city by city instead of "hotels in Europe".
- Guest scores come in four buckets only. Booking exposes 6+, 7+, 8+, and 9+. A score of 8.5 will return the same set as 8.
- Sort by Top reviewed for quality lists. This puts the highest-rated properties first regardless of price.
- Sort by Price (lowest first) for budget research. Combine with
priceMaxto cap the dataset to a specific budget tier. - Leave
includeRoomDetailsoff for catalog-style runs. Names, prices, stars, and ratings come back fast (default). Turn it on only when you need amenity lists, room layouts, gallery photos, or lat/lng β those add roughly 5β10 seconds per hotel and double the run cost.
Pricing
$1.50 per 1,000 results.
No compute charges β you only pay per result returned.
| Results | Cost |
|---|---|
| 100 | $0.15 |
| 1,000 | $1.50 |
| 10,000 | $15.00 |
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n β Workflow automation
- Google Sheets β Direct spreadsheet export
- Slack / Email β Notifications on new results
- Webhooks β Custom API integrations
- Apify API β Full programmatic access
Frequently Asked Questions
Do I need a Booking.com account to use this actor? No. The actor extracts publicly visible listings; no account or login is required.
Can I get more than 1,000 results for a single destination? Booking.com itself caps each search at about 1,000 results. To collect more, split your search into smaller queries β for example by neighborhood, by star tier, or by price band β and combine the datasets afterwards. Each narrower query is independent and can also return up to ~1,000 results.
How does pagination work?
The actor paginates automatically up to your maxResults cap or Booking's 1,000-result hard cap, whichever comes first. You don't need to set page numbers or offsets manually.
What happens if my search returns zero hotels? The actor finishes successfully with an empty dataset and a clear status message suggesting how to widen your filters (lower the price range, drop the star filter, change language, or pick a more popular destination).
Are prices live or cached? Prices are pulled from Booking.com at the moment the actor runs. They reflect the cheapest available offer for your dates, guest count, and room count β exactly as you'd see them on Booking.com.
Why are some stars values null?
Some properties β particularly apartments, vacation homes, and guest houses β use Booking.com's internal quality rating instead of official government-issued stars. The actor only emits a number when Booking confirms it as an official star rating; otherwise stars is null (the property's type field still tells you what kind of accommodation it is).
Do I need to set up proxies? No. Datacenter proxy infrastructure is included automatically. You don't need to configure or pay for proxies separately.
Legal & Ethical Use
This actor is designed for legitimate market research, travel content creation, business intelligence, and comparison shopping. It collects only publicly visible information from Booking.com search and listing pages. Users are responsible for complying with applicable laws and Booking.com's Terms of Service. Do not use the data to build replica booking platforms, generate spam, or for any illegal purpose.