BookingScraper avatar

BookingScraper

Pricing

$19.99/month + usage

Go to Apify Store
BookingScraper

BookingScraper

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScrapeBase

ScrapeBase

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Apify Actor BookingScraper scrapes Booking.com hotel detail pages and optional search results. It produces output in the same format as the reference (e.g. output.json): one JSON object per hotel with order, url, startUrlOrQuery, name, type, description, stars, price, currency, rating, ratingLabel, reviews, breakfast, checkIn/checkOut, checkInDate/checkOutDate, location, address, image, rooms, highlights, finePrint, policies, images, roomImages, categoryReviews, hotelChain, licenseInfo, hostInfo, traderInfo, breadcrumbs, hotelId, facilities, timeOfScrapeISO, and optional source_url. By default it uses no proxy; if Booking.com blocks or rejects requests, it automatically falls back to datacenter then residential proxy (with up to 3 retries), and logs all proxy events clearly.


Why Choose Us?

  • Same output shape as your reference: Produces one JSON object per hotel with order, url, name, type, description, stars, price, currency, rating, ratingLabel, reviews, rooms, images, roomImages, facilities, traderInfo, address, location, checkIn/checkOut, breadcrumbs, categoryReviews, and more.
  • Robust proxy handling: No proxy by default; automatic fallback to datacenter then residential with clear [PROXY] logs.
  • Live saving: Each hotel is pushed to the dataset as soon as it’s scraped, so partial results are kept if the run stops.
  • Bulk URLs: Supply many hotel or search URLs in one run.
  • Optional search: Provide a search query (e.g. "New York") and optional dates/filters to discover hotels from search results.

Key Features

FeatureDescription
Hotel detail scrapingFull extraction from Booking.com hotel pages (Apollo state, schema.org, HTML fallbacks).
Search resultsOptionally scrape from search URLs or a search query to get a list of hotels, then scrape each.
Proxy fallbackNO_PROXY → DATACENTER → RESIDENTIAL (3 retries); once on residential, all remaining requests use it.
Detailed logsProgress and proxy events logged so you can follow the run until the final result.
RetriesFailed requests trigger proxy fallback or residential retry so the actor recovers from blocks.

Input

Configure the actor with the Apify input schema. Example:

{
"urls": [
{ "url": "https://www.booking.com/hotel/us/trump-international-new-york.en-gb.html" }
],
"proxyConfiguration": {
"useApifyProxy": false
},
"maxItems": 10,
"search": "New York",
"checkIn": "2026-03-25",
"checkOut": "2026-03-31"
}
FieldTypeDescription
urlsarrayRequired (or use search). List of Booking.com hotel page URLs or search results page URLs. Each item can be { "url": "..." } or a string.
proxyConfigurationobjectProxy settings. Default: no proxy. Use Apify proxy if you want; fallback will use datacenter/residential when needed.
maxItemsintegerMax number of hotels to scrape when using search or search result URLs (default: 10).
searchstringIf no URLs (or only search URLs), use this as the location/landmark (e.g. "New York").
checkIn / checkOutstringOptional dates in YYYY-MM-DD for search.

Output

The default dataset contains one item per scraped hotel. Each item matches the structure of your reference output, for example:

{
"order": 1,
"url": "https://www.booking.com/hotel/us/trump-international-new-york.en-gb.html",
"startUrlOrQuery": "New York",
"name": "Trump International New York",
"type": "hotel",
"description": "Located at the juncture of Columbus Circle and Broadway...",
"stars": 5,
"price": 3067.11,
"currency": "USD",
"rating": 8.9,
"ratingLabel": "Very good",
"reviews": 842,
"breakfast": "Available",
"checkIn": "From 16:00 to None",
"checkOut": "From None to 12:00",
"checkInDate": "2026-03-25",
"checkOutDate": "2026-03-31",
"location": { "lat": 40.769, "lng": -73.981 },
"address": { "full": "One Central Park West", "country": "US", "city": "New York" },
"image": "https://cf.bstatic.com/...",
"rooms": [...],
"highlights": [...],
"finePrint": "...",
"policies": [...],
"images": [...],
"roomImages": [...],
"categoryReviews": [...],
"hotelChain": null,
"licenseInfo": null,
"hostInfo": null,
"traderInfo": { "isBusiness": true, "email": "...", "phone": "...", "address": {...} },
"breadcrumbs": [...],
"hotelId": "...",
"facilities": [...],
"source_url": "https://www.booking.com/...",
"timeOfScrapeISO": "2026-03-15T12:00:00.000000+00:00"
}
FieldDescription
order1-based index of the hotel in this run.
url / source_urlCanonical and requested URL.
name, type, descriptionBasic property info.
stars, price, currencyStar rating and price.
rating, ratingLabel, reviewsGuest rating and count.
roomsRoom types with id, name, price when available.
images, roomImagesMain and per-room image URLs.
traderInfoBusiness/contact and address.
facilities, highlightsAmenities and highlights.
timeOfScrapeISOWhen the page was scraped (UTC).

How to Use the Actor (Apify Console)

  1. Log in at https://console.apify.com and go to Actors.
  2. Find booking-hotel-scraper (or your actor name) and open it.
  3. Set Input:
    • urls: Add one or more Booking.com hotel or search URLs (or use search and optional dates).
    • proxyConfiguration: Leave default (no proxy) or enable Apify Proxy; fallback will be used automatically if needed.
  4. Click Start.
  5. Watch Log for progress and [PROXY] messages.
  6. Open the Output tab to see the dataset (table or JSON).
  7. Export to JSON/CSV if needed.

Best Use Cases

  • Hotel data for travel/price tools: Get structured details for many properties.
  • Competitor or market research: Collect names, prices, ratings, facilities.
  • Lead or contact data: Use traderInfo (email, phone, company, address) from listing pages.

Frequently Asked Questions

Do I need to enable proxy?
No. By default the actor sends requests without proxy. Enable Apify Proxy in input if you want; the actor will still start without proxy and only switch to datacenter/residential when it detects blocks.

What if I get blocked?
The actor will log [PROXY] and switch to datacenter, then residential. After switching to residential it keeps using it for all remaining requests. If residential fails, it retries up to 3 times and then fails the run with a clear message.

Can I scrape only from a search query?
Yes. Leave urls empty and set search (e.g. "New York"). Optionally set checkIn, checkOut, and maxItems.

Is the output format stable?
Yes. The output matches the same structure as the reference dataset (order, url, name, price, rooms, traderInfo, etc.).


Support and Feedback

Use the Apify platform support or your team’s channel for bugs or feature requests. Ensure your use complies with Booking.com’s terms and applicable law.


Cautions

  • Data is collected only from publicly available Booking.com pages.
  • You are responsible for legal compliance (privacy, data protection, terms of use).
  • Use reasonable maxItems and rate to avoid overloading the target site.