Booking.com Hotels Scraper
Pricing
from $12.00 / 1,000 hotel scrapeds
Booking.com Hotels Scraper
Extract Booking.com hotel listings, prices, ratings, reviews, availability text, and hotel URLs for travel market research.
Pricing
from $12.00 / 1,000 hotel scrapeds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Booking.com Hotels Scraper extracts public hotel search results from Booking.com: hotel names, listing URLs, prices, ratings, reviews, star counts, addresses, room/availability text, taxes and image URLs. Use it to monitor hotel supply, compare destinations, build travel-market datasets, and refresh hospitality research without manually copying search results.
At a glance
- Source: Public Booking.com hotel search result pages.
- Best for: Travel market research, OTA monitoring, hotel lead lists, price snapshots, and destination supply analysis.
- Output: One dataset row per hotel listing.
- Proxy mode: Residential proxy by default because Booking.com commonly challenges datacenter traffic.
- Details mode: Optional detail-page enrichment for coordinates and amenities.
What does this actor do?
Give the actor a destination such as Lisbon, Porto, or New York, choose guest/stay settings, and it saves the matching hotel cards from Booking.com. The scraper is designed for recurring public listing snapshots, not account-only data, reservations, or private traveler information.
Who is it for?
- Travel analysts comparing hotel supply and public prices across destinations.
- Hospitality operators checking competitor ratings, review counts, and offer text.
- Revenue-management teams collecting recurring market snapshots.
- Agencies and data teams feeding dashboards, spreadsheets, and internal research pipelines.
Input example
{"destination": "Lisbon","maxItems": 25,"currency": "USD","language": "en-us","adults": 2,"children": 0,"rooms": 1,"includeDetails": false}
Input settings
| Key | Type | Description |
|---|---|---|
destination | string | City, region, landmark, or hotel search text. |
checkIn | string | Optional check-in date in YYYY-MM-DD format. |
checkOut | string | Optional check-out date in YYYY-MM-DD format. |
adults | integer | Number of adult guests. |
children | integer | Number of children. |
rooms | integer | Number of rooms. |
currency | string | Three-letter currency code for displayed prices. |
language | string | Booking.com locale parameter, for example en-us. |
countryCode | string | Optional residential proxy country code. |
maxItems | integer | Maximum hotel listings to save. |
includeDetails | boolean | Open detail pages to collect coordinates and amenities. Slower and more expensive. |
Output example
{"search": "Lisbon","destination": "Lisbon","checkIn": null,"checkOut": null,"hotelName": "Example Lisbon Hotel","url": "https://www.booking.com/hotel/pt/example.html","bookingId": "example","address": "Lisbon, Portugal","city": null,"country": null,"coordinates": null,"rating": 8.7,"reviewCount": 1234,"stars": 4,"price": "US$120","currency": "USD","taxesAndFeesText": "Includes taxes and fees","availabilityText": "Only 2 rooms left","roomSummary": "Standard double room","amenities": [],"imageUrls": ["https://cf.bstatic.com/..."] ,"rank": 1,"scrapedAt": "2026-07-12T09:00:00.000Z"}
Output fields
| Field | Description |
|---|---|
search, destination | Search text used for the run. |
checkIn, checkOut | Stay dates from input, when supplied. |
hotelName | Hotel listing name. |
url | Canonical Booking.com hotel URL. |
bookingId | ID parsed from the hotel URL when available. |
address | Address/location text from the listing card. |
city, country | Reserved location fields. |
coordinates | Latitude/longitude when detail enrichment finds them. |
rating, reviewCount, stars | Public score, review count, and star count. |
price, currency | Displayed price text and selected currency. |
taxesAndFeesText | Taxes/fees text shown on the result card. |
availabilityText | Availability or urgency text shown by Booking.com. |
roomSummary | Room/offer summary from the card. |
amenities | Amenities from detail pages when includeDetails is enabled. |
imageUrls | Listing image URLs. |
rank | Position in the current search result page. |
scrapedAt | ISO timestamp for the scrape. |
Pricing
This actor uses pay-per-event pricing:
| Event | Price |
|---|---|
| Start | $0.005 per run |
| Hotel scraped | Free $0.0046, Bronze $0.004, Silver $0.00312, Gold $0.0024, Platinum $0.0016, Diamond $0.00112 per hotel |
Residential proxy traffic is required for reliability on Booking.com and is included in actor operating costs.
Verified public example tasks
These Apify Store tasks use small, QA-verified inputs and can be opened or cloned directly:
- Collect Lisbon Hotel Details — verified run
JdUYLAJueiWm1jmnLproduced 3 dataset items. - Research Tokyo Hotels In Jpy — verified run
9xb8jArnNqUFjaXo8produced 5 dataset items. - Search Family Hotels Barcelona — verified run
hHnQyggjC0dUZiGa0produced 5 dataset items. - Search Lisbon Hotels — verified run
YW9RWP7KhnEpAen8Eproduced 5 dataset items. - Search Paris Hotels In Euros — verified run
MtXIMH7eI7GKuQdImproduced 5 dataset items.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/booking-com-hotels-scraper').call({ destination: 'Lisbon', maxItems: 10 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('$APIFY_TOKEN')run = client.actor('fetch_cat/booking-com-hotels-scraper').call(run_input={'destination': 'Lisbon', 'maxItems': 10})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~booking-com-hotels-scraper/runs?token=$APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"destination":"Lisbon","maxItems":10}'
MCP / AI-agent usage
You can use this actor from AI tools through the Apify MCP Server. Configure the Apify MCP server with your Apify API token, then ask your agent to run booking-com-hotels-scraper with a destination, maximum item count, and optional dates. The dataset URL returned by Apify can be used directly in spreadsheets, notebooks, or downstream automations.
Claude CLI add command:
$claude mcp add apify -- npx -y @apify/actors-mcp-server --actors fetch_cat/booking-com-hotels-scraper
Example MCP JSON config:
{"mcpServers": {"apify": {"command": "npx","args": ["-y", "@apify/actors-mcp-server", "--actors", "fetch_cat/booking-com-hotels-scraper"],"env": { "APIFY_TOKEN": "$APIFY_TOKEN" }}}}
Example prompts:
- "Run the Booking.com Hotels Scraper for Lisbon with 10 hotels and USD prices."
- "Collect 25 Booking.com hotel listings for Porto and summarize the highest-rated properties."
- "Scrape Booking.com hotels for New York with two adults and return hotel names, prices, and ratings."
Tips and limits
- Keep
maxItemssmall for frequent monitoring runs, then scale once your query is stable. - Use
includeDetailsonly when coordinates or amenities are required. - Booking.com may change layout or show different text by locale, currency, dates, and user location.
- The actor only collects public data visible without signing in.
Legality and responsible use
This actor is intended for public web data and market research. Make sure your use case complies with Booking.com's terms, applicable laws, and privacy rules. Do not use it to collect personal traveler data or perform abusive traffic patterns.
FAQ
Can I scrape hotel reviews? This actor focuses on hotel listings. Use a reviews-specific actor for review text.
Why are prices text, not normalized numbers? Booking.com displays prices with localized symbols, taxes, and offer labels. The actor preserves the visible text so users can decide how to normalize it.
Why use residential proxies? Booking.com commonly challenges plain datacenter traffic; residential proxy routing improves reliability.
What should I send to support? Include the run ID or run URL, input JSON, expected output, actual output, and a reproducible public Booking.com search URL when possible.
Related actors
Support
If a run fails or output looks wrong, open an Apify issue with the run ID/run URL, the exact input JSON, expected output, actual output, what you received, and any public URL that reproduces the same Booking.com result page.
Changelog
-
2026-07-16 - Feature: Added ready-to-run example tasks on the Apify Store
-
2026-07-16 - Feature: Launched booking com hotels scraper for public Apify Store users.