Booking.com Scraper - Pay Per Result
Pricing
from $1.70 / 1,000 results
Booking.com Scraper - Pay Per Result
Booking.com scraper. Only pay for hotels returned - no compute costs, no proxy fees. Extract prices, ratings, reviews, locations. 20+ data points per hotel. No charge for failed runs or empty results. Predictable pricing, guaranteed data.
Pricing
from $1.70 / 1,000 results
Rating
0.0
(0)
Developer
SilentFlow
Actor stats
1
Bookmarked
7
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Share
by SilentFlow
Only pay for what you get. No compute costs, no proxy fees, no surprises. Just results.
β¨ Why use this scraper?
- πΈ Pay only for results β No charge if no data is returned
- π Proxies included β Residential proxies are included in the per-result price
- π 20+ data fields β Prices, reviews, photos, amenities, and more per hotel
- π Global coverage β Search any destination worldwide
π― Use cases
| Use PPR when... | Use Standard when... |
|---|---|
| You need predictable costs | You're scraping thousands of hotels |
| You want guaranteed results | You have Apify compute credits |
| You're testing or prototyping | You're running scheduled jobs |
| Budget is per-result focused | Budget is time-based |
π₯ Input parameters
Search
You have two options:
Option 1 (Recommended): Paste a Booking.com search URL β go to booking.com, set your destination, dates, guests, price range, stars, sort order, and any other filter, then copy the URL.
Option 2: Use the fields below for a simple location-based search.
| Parameter | Type | Required | Description |
|---|---|---|---|
searchUrl | string | No | Full Booking.com search URL with all filters applied |
location | string | No | City, region, or country (e.g., "Paris", "Bali", "New York") |
checkIn | string | No | Check-in date in YYYY-MM-DD (default: 7 days from now) |
checkOut | string | No | Check-out date in YYYY-MM-DD (default: 8 days from now) |
adults | integer | No | Number of adult guests (default: 2) |
children | string | No | Comma-separated ages of children (e.g., "2,5,10") |
rooms | integer | No | Number of rooms (default: 1) |
Either searchUrl or location is required.
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
currency | string | USD | Currency for prices (USD, EUR, GBP, JPY, etc.) |
language | string | en-us | Results language (en-us, fr, de, es, it, ja, etc.) |
maxItems | integer | 100 | Maximum hotels to return (max: 1,000) |
enrichDetails | boolean | false | Visit each hotel page for full description, photos, facilities |
Tip: Need to filter by price, stars, or review score? Set those filters on booking.com and paste the URL into
searchUrlβ the scraper reads all filters directly from the URL.
enrichDetailsadds ~1-2s per hotel (3 parallel workers). A 50-hotel scrape takes ~20-30s extra. You get full descriptions, 10-60 photos per hotel, facilities list, and highlights.
π Output data
Each hotel record contains:
{"hotelId": "12345678","name": "Le Grand Hotel Paris","type": "Hotel","url": "https://www.booking.com/hotel/fr/le-grand-paris.html","address": "2 Rue Scribe","city": "Paris","country": "fr","latitude": 48.8706,"longitude": 2.3315,"distanceFromCenter": "0.3 km from center","publicTransport": "OpΓ©ra station is within 100 yards","starRating": 5,"reviewScore": 9.1,"reviewCount": 4521,"reviewWord": "Superb","price": 580.00,"originalPrice": 650.00,"currency": "EUR","pricePerNight": 290.00,"taxesAndCharges": 58.00,"mainPhoto": "https://cf.bstatic.com/xdata/images/hotel/...","photos": ["https://cf.bstatic.com/..."],"checkIn": "2026-06-15","checkOut": "2026-06-17","description": "Located near the OpΓ©ra Garnier...","facilities": ["Free WiFi", "Spa", "Restaurant"],"highlights": ["Excellent location", "Luxury rooms"],"freeCancellation": true,"breakfastIncluded": true,"noPrepayment": false,"isPreferred": true,"isSustainable": true,"scrapedAt": "2026-04-01T12:00:00Z"}
ποΈ Data fields
| Category | Fields |
|---|---|
| Identity | hotelId, name, type, url |
| Location | address, city, country, latitude, longitude, distanceFromCenter, publicTransport |
| Ratings | starRating, reviewScore, reviewCount, reviewWord |
| Pricing | price, originalPrice, currency, pricePerNight, taxesAndCharges, discount |
| Media | mainPhoto, photos |
| Details | description, facilities, highlights |
| Policies | freeCancellation, breakfastIncluded, noPrepayment |
| Badges | isPreferred, isPreferredPlus, isSustainable |
| Meta | checkIn, checkOut, scrapedAt |
π Examples
Simple search β Dubai hotels
{"location": "Dubai","maxItems": 20,"currency": "USD"}
Rich data with photos & description
{"location": "Cinque Terre, Italy","maxItems": 50,"currency": "EUR","enrichDetails": true}
Using a Booking.com URL (with all filters)
{"searchUrl": "https://www.booking.com/searchresults.html?ss=Bangkok&checkin=2026-08-01&checkout=2026-08-03&nflt=price%3DUSD-min-50-1%3Bfc%3D2","maxItems": 50}
π» Integrations
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("silentflow/booking-scraper-ppr").call(run_input={"location": "Amsterdam","maxItems": 50,"currency": "EUR"})for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{hotel['name']}: β¬{hotel['price']}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('silentflow/booking-scraper-ppr').call({location: 'Vienna',maxItems: 30,currency: 'EUR'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} hotels`);
π Performance & limits
| Metric | Value |
|---|---|
| Hotels per page | ~25 |
| Average speed | ~25 hotels/second |
| Max items per run | 1,000 |
| Supported destinations | Worldwide |
π‘ Tips for best results
- Use
maxItemswisely β Only request what you need to control costs - Use
searchUrlfor advanced filters β Set price range, stars, review score on booking.com, then paste the URL - Be specific β "Paris, France" instead of "Paris" avoids wrong results
- Test first β Try with
maxItems: 5to verify your search works
β FAQ
Q: What if no hotels are found? A: You pay nothing. Only successful results are charged.
Q: What if the run fails? A: You pay nothing. Failed runs don't charge you.
Q: Is there a minimum charge? A: No minimum. Get 1 hotel = pay for 1 hotel.
Q: Are proxy costs included? A: Yes! Residential proxies are included in the per-result price.
Q: How do I filter by price, stars, or review score?
A: Go to booking.com, apply all your filters, then paste the URL into searchUrl.
π¬ Support
Need help? We're here for you:
- Feature requests: Let us know what you need
- Custom solutions: Contact us for enterprise integrations or high-volume needs
Check out our other scrapers: SilentFlow on Apify
Remember: You only pay for results. No results = no charge.