Hotel Details & Photos Scraper - Booking, Airbnb, Google avatar

Hotel Details & Photos Scraper - Booking, Airbnb, Google

Pricing

from $5.00 / 1,000 property content requests

Go to Apify Store
Hotel Details & Photos Scraper - Booking, Airbnb, Google

Hotel Details & Photos Scraper - Booking, Airbnb, Google

Scrape hotel and rental content, not prices: Booking.com details, photos, facilities and review summary, Airbnb listing details and photos, Google Hotels photos and nearby places, and Tripadvisor place details. Batch many properties per run. Made by ScraperCompany.

Pricing

from $5.00 / 1,000 property content requests

Rating

0.0

(0)

Developer

ScraperCompany

ScraperCompany

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

Hotel Details & Photos Scraper by ScraperCompany collects property content (not prices) from four sources in nine modes. Booking.com: property details (ids, address, coordinates, stars, description, check-in and check-out, review score, languages, meals, house rules), the full photo gallery, facilities grouped with charges and policies, and the review summary (category scores with the city average, scores per traveller type, pros and cons). Airbnb: listing details (capacity, amenities, sleeping arrangements, house rules, host, location, ratings, cancellation policy for a stay) and every photo by room. Google Hotels: the photo gallery by category or source, and nearby places with travel times and location scores. Tripadvisor: place details with rating breakdown, ranking and sub-ratings. Pricing is pay-per-event: $0.009 per Booking.com details or facilities request, $0.005 per other Booking.com, Airbnb or Google Hotels request and $0.003 per Tripadvisor place; failed requests and empty answers are not charged.

Nothing to set up: no code, no login and no keys. Start a run, then export JSON, CSV or Excel, or pull the results through the Apify API. You pay only for results; failed and empty requests are free.

What can this hotel details scraper do?

  • Booking.com details: hotel id, address, coordinates, stars, property type, chain, description, check-in/out, review score, languages, meals, house rules; optional nearby list.
  • Booking.com photos with captions, original size, tagged rooms and URLs in every size.
  • Booking.com facilities by group with charges, most popular facilities and policies; review summary with category scores, traveller-type scores, pros and cons.
  • Airbnb listing details (amenities, beds, rules, host, ratings, cancellation milestones for your dates) and photos by room.
  • Google Hotels photos (paged, by category or owner/visitor) and nearby places with travel times and location scores.
  • Tripadvisor details: address, coordinates, rating breakdown, ranking, sub-ratings, price range, contact, photos.
  • Paste URLs or ids; batch many properties per run.

Modes

ModeWhat it returnsPrice per request
booking-detailsName, ids, address, coordinates, stars, description, check-in/out, review score, languages, meals, house rules$0.009
booking-photosEvery gallery photo with caption, size, upload time, tagged rooms and URLs per size$0.005
booking-facilitiesFacilities by group with charges, most popular facilities, highlights, languages, policies$0.009
booking-review-summaryReview score and count, category scores with the city average, scores per traveller type, pros and cons, topics$0.005
airbnb-listingTitle, type, capacity, description, amenities, sleeping arrangements, house rules, host, location, ratings, cancellation policy$0.005
airbnb-photosEvery listing photo with its room, size, original URL and resized versions$0.005
google-photosPhoto gallery pages with caption, source (owner or visitor), size, upload date and URLs; category and source counts$0.005
google-nearbyTop sights, transit, airports and restaurants with travel times, neighbourhood and location scores$0.005
tripadvisor-detailsHotel, restaurant or attraction: address, coordinates, rating and breakdown, ranking, sub-ratings, price range, contact, photos$0.003

What makes it different?

Hotel Details & Photos ScraperMany alternatives
SetupNothing to configure: no login, no keysOften your own accounts, cookies or network setup
You pay forSuccessful results; failed and empty requests are freeOften run time, or every attempt
When a site pushes backRetried and handled for youOften an empty or failed run

Who uses hotel details data?

  • Travel sites and apps: Fill property pages with descriptions, amenities, photos and house rules.
  • Hotel revenue and marketing teams: Audit how your property and competitors are presented: photos, facilities, review scores.
  • Short-term rental managers: Compare amenities, ratings and cancellation policies of nearby Airbnb listings.
  • Data teams: Match properties across Booking.com, Airbnb, Google Hotels and Tripadvisor with coordinates and ids.

What hotel details data can you extract?

FieldDescription
name / hotel_id / address / gps_coordinates (Booking.com details)Identity and location
star_rating / review_score / review_count / house_rulesStars, guest score and house rules
photos[].caption / url_original / original_width / roomsPhotos (Booking.com, Airbnb, Google Hotels)
groups[].group / facilities (Booking.com facilities)Facilities by group, with charges
category_scores[] / traveler_type_scores[] / summary (Booking.com review summary)Score breakdown, pros and cons
title / amenities / host / rating / cancellation (Airbnb listing)Listing content, host, ratings and cancellation policy
groups[].places[] / neighborhood / location_scores (Google nearby)Nearby places with travel times, neighbourhood, location scores
details.rating / rating_breakdown / ranking / sub_ratings (Tripadvisor)Tripadvisor ratings and ranking

Every dataset item also carries input (the options used for that request), request_id (quote it to support), billed and scraped_at.

How to scrape hotel details, photos and facilities

  1. Open Hotel Details & Photos Scraper in Apify Console and go to the Input tab.
  2. Pick What to scrape, then fill the list for that source: Booking.com URLs or slugs, Airbnb links or listing ids, Google Hotels property tokens, or Tripadvisor URLs, ids or names.
  3. Adjust the options if needed. Dates accept an exact date (2026-12-01) or a relative one (30 days from today), so saved tasks and schedules never go stale.
  4. Click Start and wait for the run to finish.
  5. Download the results from the Output tab as JSON, CSV, Excel or HTML, or fetch them with the Apify API.

Input

InputNameWhat it does
modeWhat to scrapeThe source and the kind of content. Each source has its own list of properties below; only the list for the selected source is used.
bookingHotelsBooking.com hotels.....com URL country.
bookingCountryBooking.com URL country..html`). Applies to slugs; a full URL brings its own.
includeNearbyInclude Booking.com nearby places (details).com's own list of nearby landmarks, transit, airports, restaurants and beaches with walking and driving distances.
airbnbListingsAirbnb listings..com/rooms/34397368) or the numeric listing id (34397368`).
airbnb_domainAirbnb siteAirbnb country site. It sets the language and the default currency of the record.
currencyAirbnb currency (listing)Listing details only: currency for any money text in the record. Leave empty for the site's default.
check_inStay check-in (listing cancellation policy)Listing details only: Airbnb states cancellation deadlines only for a given stay.
check_outStay check-out (listing cancellation policy).g. 32 days). Give both dates or neither.
googlePropertiesGoogle Hotels property tokens.g. ChUIoben2Mv6-CYaCi9tLzA3czVwbjQQAQ). Get tokens from the Google Hotels Search Scraper results.
maxPagesPhoto pages per property (Google photos)Google Hotels photos only: how many gallery pages to fetch per property (1-20).
photosPerPagePhotos per page (Google photos)Google Hotels photos only: photos per page (1-100). The price per page is the same.
photoCategoryPhoto category (Google photos)Google Hotels photos only: one photo tab. Leave empty for all photos. Use a category or a source, not both.
photoSourcePhoto source (Google photos)Google Hotels photos only: only visitors' photos or only the owner's. Leave empty for both.
glGoogle countryTwo-letter Google country for the request.
hlGoogle language.g. en, fr.
tripadvisorPlacesTripadvisor places.g. 208453), or a place name such as Moxy Boston Downtown (add a City to narrow names).
tripadvisorCityCity (for place names)With place names only: the city, used to pick the right place when several share the name.

Input example

This is the default input; running the Actor without changes uses it.

{
"mode": "booking-details",
"bookingHotels": [
"newbury-guest-house"
],
"bookingCountry": "us",
"airbnbListings": [
"34397368"
],
"airbnb_domain": "airbnb.com",
"googleProperties": [
"ChUI6IWohK-tzZFIGgkvbS8wODZjXzUQAQ"
],
"maxPages": 1,
"photosPerPage": 50,
"gl": "us",
"hl": "en",
"tripadvisorPlaces": [
"17768161"
],
"includeErrors": true,
"maxConcurrency": 3,
"maxRetries": 2
}

Output example

One dataset item per request (trimmed here; real items contain all the fields):

{
"mode": "booking-details",
"input": {
"pagename": "newbury-guest-house",
"country": "us"
},
"accessibility": {
"isGeneralAccessible": true,
"isPrivateBathroomInAllRooms": true,
"isWheelChairAccessible": false
},
"accommodation_type_id": 204,
"address": {
"city": "Boston",
"country_code": "US",
"formatted": "261 Newbury Street, Back Bay, Boston, MA 02116, United States",
"postal_code": "MA 02116",
"region": "Massachusetts",
"short": "261 Newbury Street, Back Bay, Boston, MA"
},
"breadcrumbs": [
{
"dest_id": "224",
"dest_type": "country",
"name": "United States",
"type": "country"
},
{
"dest_id": "2442",
"dest_type": "region",
"name": "Massachusetts (MA)",
"type": "province"
}
],
"check_in": {
"from": "3:00 PM"
},
"check_out": {
"until": "12:00 PM"
},
"country": "us",
"description": "This historic guest house is located in Boston's Back Bay district, only 2 minutes' walk from the Hynes Convention Center and various shops along Newbury Str...",
"gps_coordinates": {
"latitude": 42.3495598618534,
"longitude": -71.08322203159332
},
"hotel_currency": "USD",
"hotel_id": 236725,
"house_rules": {
"accepted_cards": [
"American Express",
"Visa"
],
"cash_status": "PATP_PROPERTY_CASH_STATUS_UNKNOWN",
"check_in": {
"from": "3:00 PM"
},
"check_in_requirements": "Guests are required to show a photo ID and credit card at check-in.",
"check_out": {
"until": "12:00 PM"
},
"children": {
"allowed": true,
"cribs": false,
"extra_beds": false,
"min_age": 0,
"rules": [
{
"age_from": 0,
"age_to": 14,
"price": "US$0",
"price_mode": "PER_NIGHT",
"price_type": "FREE",
"type": "EXISTING_BED"
}
]
},
"fine_print": [
"Guests are required to show a photo ID and credit card upon check-in. Please note that all Special Requests are subject to availability and additional charge...",
"Quiet hours are between 23:00:00 and 07:00:00."
],
"group_limit_rooms": 3,
"group_policy": "When booking more than 3 rooms, different policies and additional fees may apply.",
"min_check_in_age": 21,
"pets": {
"allowed": "NO",
"charge_mode": "NOT_APPLICABLE"
},
"quiet_hours": {
"from": "11:00 PM",
"until": "7:00 AM"
}
},
"is_newly_opened": false,
"languages_spoken": [
"en",
"es"
],
"meals": [
{
"hours": {
"from": "07:30",
"until": "09:30"
},
"type": "BREAKFAST"
}
],
"name": "Newbury Guest House",
"nearby": [
{
"best_commute": {
"distance_m": 4566,
"duration": "54 min",
"mode": "ByFoot"
},
"category": "beaches",
"driving": {
"distance_m": 5129,
"duration": "7 min"
},
"gps_coordinates": {
"latitude": 42.32886704,
"longitude": -71.04606142
},
"kind": "Beaches",
"name": "Carson Beach",
"straight_line_km": 3.803,
"walking": {
"distance_m": 4566,
"duration": "54 min"
}
},
{
"best_commute": {
"distance_m": 4941,
"duration": "59 min",
"mode": "ByFoot"
},
"category": "beaches",
"driving": {
"distance_m": 5693,
"duration": "8 min"
},
"gps_coordinates": {
"latitude": 42.32886559,
"longitude": -71.03634792
},
"kind": "Beaches",
"name": "M Street Beach",
"straight_line_km": 4.28,
"walking": {
"distance_m": 4941,
"duration": "59 min"
}
}
],
"observed_at": "2026-10-03T05:20:00.000Z",
"pagename": "newbury-guest-house",
"property_type": "HOTEL",
"review_count": 523,
"review_scale": 10,
"review_score": 9.1,
"source": "booking",
"star_rating": 3,
"star_rating_kind": "STARS",
"ufi": 20061717,
"url": "https://www.booking.com/hotel/us/newbury-guest-house.html",
"request_id": "req_3f9c0d6e2b8a4c1f9e7d5b3a1c0e8f6d",
"billed": true,
"scraped_at": "2026-10-01T14:03:27.512Z"
}

A request that fails is saved with an error message instead (turn off Include failed requests to skip those). Failed requests are never charged.

How much does it cost to scrape hotel details, photos and facilities?

This Actor uses pay-per-event pricing: you pay for successful requests, not for compute time.

EventCharged whenPricePer 1,000
property-contentOne property's Booking.com photos or review summary, Airbnb listing or photos, or Google Hotels photos or nearby places (one page of Google photos). Answers with no photos, no places or no review score are free.$0.005$5.00
booking-pageOne Booking.com hotel's details or facilities. These take longer to collect than the other content requests, so they are priced apart.$0.009$9.00
tripadvisor-detailsOne Tripadvisor hotel, restaurant or attraction: address, coordinates, rating breakdown, ranking, sub-ratings, contact and photos.$0.003$3.00

What a real run costs:

  • 100 requests: $0.90
  • 1,000 requests: $9.00
  • 10,000 requests: $90.00

Apify's $5 of free monthly usage covers about 555 booking-page events.

  • Failed requests (errors, invalid input, a site refusing after retries) are free.
  • Requests where the source returns nothing at all (no results, nothing priced) are saved but not charged.
  • Set Maximum cost per run when you start a run and the Actor stops cleanly before going over it.

Run it on a schedule

Use Apify Schedules to repeat a run hourly, daily or weekly and compare results over time, and webhooks or the Integrations tab to push new results to Make, Zapier, n8n, Google Sheets, Slack or your own warehouse.

Use it with AI agents

Results are structured JSON, so they are easy to feed to a model. AI agents such as Claude can run this Actor and read its results through the Apify MCP server.

FAQ

Do I need an account on the site, or an API key?

No. The Actor is ready to run as is, and you only pay the per-event prices above.

Does this Actor return prices or availability?

No. It returns property content: details, photos, facilities, review scores and nearby places. For prices use the rate scrapers listed below.

How do I identify a property?

Each source uses its own id: a Booking.com URL or slug, an Airbnb listing link or id, a Google Hotels property token, or a Tripadvisor URL, location id or name. Only the list for the selected source is used.

Why does the Airbnb cancellation policy say needs_dates?

Airbnb states cancellation deadlines only for a given stay. Set the stay check-in and check-out to get the refund milestones.

How many Google Hotels photos do I get?

Up to 100 per page; set Photo pages per property to page through the gallery. Each page is charged separately.

Is there a review histogram for Booking.com?

Booking.com does not publish a 1-10 histogram; the review summary returns the overall score, category scores and scores per traveller type instead.

The Actor collects publicly available information that anyone can see without logging in. You are responsible for how you use the results: respect the source site's terms, copyright and privacy law (such as GDPR) and do not collect personal data without a lawful basis. If in doubt, ask a lawyer.

What happens when a request is blocked or rate-limited?

Temporary errors are retried automatically. If a request still fails it is saved with the error message and not charged, and the rest of the batch keeps going. A run only fails when every request failed.

Why did a request return an error?

Read the error field: it says what was wrong with the input, for example a malformed date or an unknown id. Fix it and run again; failed requests cost nothing.

How many requests can I run at once?

Any number per run. The Actor sends up to 3 requests in parallel by default (change it under Run options); larger batches simply take longer.

Use it from your code

Call the Actor from any language through the Apify API. With the JavaScript client (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('scrapercompany/hotel-details-scraper').call({
"mode": "booking-details",
"bookingHotels": [
"newbury-guest-house"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

With Python (pip install apify-client):

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("scrapercompany/hotel-details-scraper").call(run_input={
"mode": "booking-details",
"bookingHotels": ["newbury-guest-house"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Support

Questions, a field you need, or a site that stopped working? Open an issue on the Issues tab. Include the request_id from the dataset item so we can trace the request.