Booking.com API Scraper
Pricing
from $1.00 / 1,000 search results
Booking.com API Scraper
Scrape Booking.com properties, live prices and full room-rate tables via the mobile API — by destination search or by hotel id.
Booking.com Scraper – Hotel Prices, Rooms, Reviews & Availability
Scrape Booking.com at scale — extract hotels, live room prices, availability, full rate breakdowns, facilities, photos and guest reviews as clean, structured JSON. No login, no captchas, no browser automation to maintain. Just give it a destination and dates, and get back ready-to-use accommodation data you can export to CSV, Excel, JSON or the API.
Whether you're tracking competitor hotel prices, building a travel app, feeding a rate-shopping dashboard, or doing market research, this Booking.com data extractor turns the world's largest accommodation site into a structured feed.
⚡ Fast & reliable — pulls data straight from Booking.com's own data API, so it's dramatically faster and more stable than page-rendering scrapers. 🔌 Demand API–compatible — input and output mirror Booking.com's official Demand API
/accommodations/searchformat, so it's a drop-in, no-contract alternative for search-style hotel data.
What you can extract
- 🏨 Hotel search results – every property for a city, region or coordinates, with live total price, currency, and direct booking links.
- 💶 Live prices & rates – per-stay and per-night pricing, taxes and extra charges, discounts and deals, in the currency you choose.
- 🛏️ Rooms & availability – the full list of room types and bookable rates: occupancy, board (breakfast/half/full/all-inclusive), cancellation policy, payment options, and how many rooms are left at each price.
- ⭐ Guest reviews – paginated reviews with score, title, positive/negative text, date and reviewer country (fetch as many as you need per property).
- 📋 Property details – name, star rating, review score & count, GPS coordinates, address, 100+ named facilities, family amenities, languages spoken and photos.
Example use cases
- Hotel price monitoring & rate shopping – track competitor and market prices over time for revenue management.
- Travel & metasearch products – power a booking site, app or price-comparison tool with fresh inventory.
- Market & investment research – analyze pricing, occupancy signals, ratings and amenities across a destination.
- Review & reputation analysis – mine guest sentiment and review trends for any property.
- Lead lists & data enrichment – build accommodation datasets with geo, facilities and contact context.
Output example
One clean record per accommodation:
{"id": 1392565,"currency": "EUR","deep_link_url": "booking://hotel/1392565?affiliate_id=337862&checkin=2026-11-10&checkout=2026-11-12","price": {"base": 181.82,"book": 183.64,"total": 183.64,"extra_charges": { "excluded": 54.82, "included": 0 }},"url": "https://www.booking.com/hotel/nl/mercure-amsterdam-sloterdijk-station.html?checkin=2026-11-10&checkout=2026-11-12&group_adults=2&selected_currency=EUR","rooms": [{ "id": 1000420, "name": "Standard Double or Twin Room", "maxOccupancy": 2,"productCount": 4, "minPrice": 153.59, "currency": "EUR" }],"products": [{"id": "139256508_91477112_2_34_0","number_of_adults": 2,"number_available_at_this_price": 14,"policies": {"cancellation": { "free_cancellation_until": null, "type": "non_refundable" },"meal_plan": { "meals": [], "plan": "no_plan" },"payment": { "types": ["pay_now"] }},"price": { "base": 181.82, "book": 262.73, "total": 262.73 },"room": 139256508}],"reviews": [{ "title": "Exceptional", "score": 10,"pros": "Great location. Nice room. Friendly staff.","cons": "Blinds didn't fully block the light.","date": "2026-06-19","author": { "name": "Gregory", "countryCode": "us", "countryName": "United States" } }],"details": {"name": "Mercure Amsterdam Sloterdijk Station","accommodationType": "Hotels","starRating": 4,"reviewScore": 8.6,"reviewScoreWord": "Excellent","reviewsCount": 4215,"city": "Amsterdam", "countryCode": "nl","latitude": 52.39, "longitude": 4.84,"facilities": ["Parking", "24-hour front desk", "Fitness center", "Free Wifi"],"languagesSpoken": ["nl", "en-gb", "de"],"address": "Naritaweg 1, Westpoort, 1043 BP Amsterdam, Netherlands"}}
rooms + products appear when you enable Include rooms, reviews with
Include reviews, and details with Include details — so you only pull
(and pay for) the data you actually need.
How to use it
No coding required. Set up your search in the visual input form, then run it on demand, schedule it, or call it via the API and connect it to Make, Zapier, n8n, Google Sheets and more. Results land in a dataset you can download as JSON, CSV, Excel or HTML, or pull through the API.
Input
{"search": "Amsterdam","checkin": "2026-11-10","checkout": "2026-11-12","currency": "EUR","guests": { "number_of_rooms": 1, "number_of_adults": 2, "children": [5, 9] },"accommodation_types": [204],"rating": { "minimum_review_score": 8 },"price": { "minimum": 80, "maximum": 300 },"sort": { "by": "price", "direction": "ascending" },"includeRooms": true,"includeReviews": true,"includeDetails": true,"maxItems": 100}
| Field | Description |
|---|---|
search | Destination name (city, region, landmark) — e.g. "Amsterdam". The easiest way to start. |
city / region | Target a specific Booking destination by numeric id (alternative to search). |
checkin / checkout | Stay dates (YYYY-MM-DD). Defaults to a 1-night stay 30 days out. |
currency | Price currency, e.g. USD, EUR, GBP. |
guests | Occupancy: number_of_adults, number_of_rooms, children (ages), allocation (per-room). |
accommodation_types | Keep only certain property types, e.g. [204] for hotels. |
rating | minimum_review_score to keep only well-rated properties. |
price | minimum / maximum price range filter. |
sort | by: price or review_score; direction: ascending / descending. |
includeRooms | Add the full rooms & rates (products) per property. |
includeDetails | Add property details (stars, reviews, facilities, photos, address, geo). |
includeReviews | Add guest reviews. |
maxReviews | How many reviews per property (default 10). |
hotel_ids | Scrape specific properties by id instead of searching. |
maxItems | Cap the number of properties returned. |
language | Locale for text, e.g. en-us, de, fr. |
proxyConfiguration | Proxy settings (Apify Proxy recommended for large runs). |
Pricing – pay only for the data you get
This scraper uses pay-per-event billing. You're charged only for results actually delivered — never for failed requests.
| You pay | Per |
|---|---|
| $0.001 | hotel search result |
| $0.001 | property details record |
| $0.0001 | room option |
| $0.0001 | guest review |
A plain search result costs a tenth of a cent; rooms, reviews and details add their tiny per-item charge only when you ask for them — so a lightweight price check stays extremely cheap, and a full property profile is still a fraction of a cent.
Frequently asked questions
Do I need a Booking.com account or API key? No. Just configure the input and run it.
Can I get prices in my own currency and language?
Yes — set currency and language to whatever you need.
How many reviews can I collect?
Reviews are paginated, so you can pull well beyond the first page — set
maxReviews to the number you want per property.
Can I scrape a specific hotel?
Yes — pass its Booking id in hotel_ids to fetch that property directly.
Does it return phone numbers or email addresses? No. Booking.com hides direct property contact details until after a booking, so they aren't available from public data.
What formats can I export? Results are stored in a dataset and can be downloaded as JSON, CSV, Excel or HTML, or accessed via the API and integrations.
Is this an official Booking.com product? No. It's an independent scraper whose input/output happen to mirror Booking.com's public Demand API search format for convenience.
Legal & responsible use
Use this scraper to collect publicly available information only, in line with Booking.com's Terms of Service and applicable laws (including data-protection rules). Avoid collecting personal data without a lawful basis, and scrape at a reasonable rate. You are responsible for how you use the data you extract.