Booking Hotel Photos Scraper avatar

Booking Hotel Photos Scraper

Pricing

Pay per event

Go to Apify Store
Booking Hotel Photos Scraper

Booking Hotel Photos Scraper

Extract full public Booking.com hotel galleries into structured photo rows with image URLs, captions, hotel IDs, categories, and order.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Extract full public photo galleries from Booking.com hotel pages. This actor accepts direct Booking.com hotel URLs and returns one dataset row per public image, including the hotel name, hotel ID, high-resolution image URL, thumbnail URL, caption, category, order, and scrape timestamp.

What does Booking Hotel Photos Scraper do?

Booking Hotel Photos Scraper turns public Booking.com hotel gallery pages into a structured image dataset. Instead of copying thumbnails manually, you can provide one or many hotel URLs and export clean rows for every gallery image the actor can see.

Who is it for?

  • 🏨 Hotel content teams checking how property media appears on Booking.com
  • ✈️ Travel affiliate publishers building destination pages
  • 🧑‍💻 OTA data teams monitoring property media coverage
  • 📊 Market researchers comparing visual merchandising across hotels
  • 🔎 SEO teams auditing hotel image assets and captions

Why use this actor?

Booking.com hotel pages often contain many public property photos, but broad hotel scrapers usually return only one representative image. This focused scraper is built for photo workflows where every gallery image matters.

What data can you extract?

FieldDescription
hotelUrlBooking.com hotel URL supplied in the input
hotelNameHotel name detected on the page
hotelIdBooking hotel identifier when available
photoUrlNormalized image URL
highResPhotoUrlBest high-resolution URL the actor can derive
thumbnailUrlOriginal thumbnail/source image URL when different
captionAlt text, title, or gallery caption when available
categoryGallery category or label when available
photoOrderPhoto order in the extracted gallery
sourcePageUrlActual page URL where the image was observed
imageHostImage host, usually bstatic.com
width / heightDimensions parsed from the Booking image URL when available
scrapedAtISO timestamp for the extraction

How much does it cost to scrape Booking hotel photos?

The actor uses pay-per-event pricing: a small run-start charge plus a per-photo charge for each saved dataset row. Keep maxItems low for first tests, then increase it for larger gallery exports after confirming the output matches your workflow.

How to use Booking Hotel Photos Scraper

  1. Open the actor on Apify.
  2. Paste one or more direct Booking.com hotel URLs into Booking hotel URLs.
  3. Set Maximum photos total and Maximum photos per hotel.
  4. Run the actor.
  5. Export the dataset as JSON, CSV, Excel, or through the Apify API.

Input example

{
"startUrls": [
{ "url": "https://www.booking.com/hotel/gb/the-savoy.html" },
{ "url": "https://www.booking.com/hotel/us/the-manhattan-at-times-square.html" }
],
"maxItems": 100,
"maxPhotosPerHotel": 80,
"language": "en-us",
"proxyCountryCode": "US",
"useResidentialProxy": false
}

Output example

{
"hotelUrl": "https://www.booking.com/hotel/gb/the-savoy.html?lang=en-us",
"hotelName": "The Savoy",
"hotelId": "280149",
"photoUrl": "https://r-xx.bstatic.com/xdata/images/hotel/max1280x900/example.webp",
"highResPhotoUrl": "https://r-xx.bstatic.com/xdata/images/hotel/max1280x900/example.webp",
"thumbnailUrl": "https://r-xx.bstatic.com/xdata/images/hotel/608x352/example.webp",
"caption": "The Savoy",
"category": "main",
"photoOrder": 1,
"sourcePageUrl": "https://www.booking.com/hotel/gb/the-savoy.html",
"imageHost": "r-xx.bstatic.com",
"width": 608,
"height": 352,
"scrapedAt": "2026-06-26T02:41:25.988Z"
}

Supported URLs

Use direct Booking.com hotel detail URLs such as:

  • https://www.booking.com/hotel/gb/the-savoy.html
  • https://www.booking.com/hotel/us/the-manhattan-at-times-square.html
  • https://www.booking.com/hotel/fr/ritz-paris.html

Current limitations

The v1 actor intentionally avoids broad Booking.com search crawling. It does not discover hotels from a city query. Use our related Booking.com Scraper for search and hotel discovery, then pass selected hotel URLs into this photo scraper.

Tips for best results

  • Use direct hotel pages, not search result pages.
  • Start with 20–100 photos to validate output and cost.
  • Keep useResidentialProxy disabled first; enable it only if Booking.com challenges your URLs.
  • Use English language: "en-us" when you want English hotel names and captions.
  • Increase maxPhotosPerHotel for large luxury hotels with extensive galleries.

Integrations

You can connect the actor to:

  • Google Sheets for hotel media QA lists
  • Airtable for travel content planning
  • S3 or GCS for downstream image workflows
  • Data warehouses for competitive visual analysis
  • Apify webhooks for recurring hotel photo monitoring

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/booking-hotel-photos-scraper').call({
startUrls: [{ url: 'https://www.booking.com/hotel/gb/the-savoy.html' }],
maxItems: 50
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient(token='YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/booking-hotel-photos-scraper').call(run_input={
'startUrls': [{'url': 'https://www.booking.com/hotel/gb/the-savoy.html'}],
'maxItems': 50,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~booking-hotel-photos-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"startUrls":[{"url":"https://www.booking.com/hotel/gb/the-savoy.html"}],"maxItems":50}'

MCP usage

Use this actor from Claude Code or Claude Desktop through Apify MCP:

https://mcp.apify.com/?tools=automation-lab/booking-hotel-photos-scraper

Add the Apify MCP server in Claude Code:

$claude mcp add apify "https://mcp.apify.com/?tools=automation-lab/booking-hotel-photos-scraper"

Claude Desktop JSON configuration example:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=automation-lab/booking-hotel-photos-scraper"
}
}
}

Example prompts:

  • “Scrape all public photos from these Booking.com hotel URLs and return a CSV.”
  • “Monitor whether this hotel added new Booking.com gallery images.”
  • “Compare the number of gallery photos for these competitor hotels.”

This actor extracts publicly visible hotel photo metadata and public image URLs from Booking.com pages. You are responsible for using the output in accordance with Booking.com terms, copyright law, and applicable data protection rules. Do not use the actor for private account data or restricted content.

Legality checklist

Use the scraper only for public hotel pages, respect Booking.com terms, avoid republishing copyrighted images without permission, and keep crawl volumes reasonable for your legitimate business workflow.

Troubleshooting

Why did I get zero photos?

Check that the input URL is a direct Booking.com hotel detail page. If the URL is valid but Booking.com challenges the run, enable useResidentialProxy and try a smaller maxItems value.

Why are captions missing?

Booking.com does not expose captions for every image. The actor fills captions from alt text, title attributes, or gallery labels when available.

FAQ

Can it download image files?

The actor returns image URLs. You can use the dataset URLs in your own downloader, storage pipeline, or image processing workflow.

Can it scrape search results?

Not in v1. This actor is URL-based to keep the workflow focused, reliable, and cost-controlled.

Can I run it on hundreds of hotels?

Yes, but start with a small sample and scale gradually. Use maxItems and maxPhotosPerHotel to control spend.

Does it require login?

No. It is designed for public Booking.com hotel pages only.

Changelog

  • 0.1 — Initial URL-based Booking.com hotel photo gallery extractor.

Dataset quality notes

The actor de-duplicates images by normalized high-resolution URL. Thumbnail URLs are preserved when the source image differs from the normalized URL. Width and height are parsed from Booking/bstatic URL patterns when present.

Operational notes

Booking.com may vary page layout by locale, region, and WAF state. The actor uses Playwright and optional Apify Proxy settings to load public hotel pages and extract gallery images from rendered DOM content.

Need broader hotel data?

Use Booking.com Scraper first to discover hotels for a destination, export hotel URLs, then feed those URLs into this actor for full-gallery media extraction.