Travel Accommodation Scraper
Pricing
Pay per usage
Travel Accommodation Scraper
Search hotels and vacation rentals across Booking.com and Airbnb in one run. Compare prices, ratings, and availability. No login, no API key needed.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
kane liu
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 hours ago
Last modified
Categories
Share
Travel Accommodation Scraper — Booking.com & Airbnb
Scrape hotels and vacation rentals from Booking.com and Airbnb in a single run with one Actor built for hotel price comparison, travel monitoring,. This travel scraper collects listings from two major travel marketplaces, normalizes the output, and returns data you can use for dashboards, alerts, competitor tracking, without requiring login credentials or third-party APIs for the target sites.
The Actor is designed for teams that need a reliable Booking.com scraper and Airbnb scraper experience without stitching together two separate tools. Instead of merging mismatched payloads after the fact, you get one accommodation scraper with a shared schema for hotels, apartments, private rooms, and vacation stays. That makes it easier to build hotel price comparison products, market intelligence tools, travel planning assistants, or a vacation rental scraper workflow that runs on a schedule inside Apify.
Features
- Dual-platform scraping — Run
booking,airbnb, orbothfrom the same input and compare results across two high-intent travel platforms. - Unified output schema — Receive standardized listing objects with price, rating, review count, property type, image, location, and scrape timestamp fields.
- Built for price intelligence — Use it as a hotel scraper, travel scraper, or hotel price comparison backend for monitoring pricing changes.
- Flexible search controls — Filter by destination, check-in, check-out, adult count, currency hint, and per-platform result limits.
- Production-ready on Apify — Supports Apify Proxy input, runs headless in the cloud, and is optimized for repeatable Actor runs.
- Automation friendly — Send output to datasets, webhooks, or downstream pipelines for research, lead generation, or travel data enrichment.
Output Fields
Each item in the default dataset represents one accommodation record. The Actor returns a unified structure so your downstream code does not need separate parsing logic for Booking.com and Airbnb.
| Field | Type | Description |
|---|---|---|
platform | string | Source platform: booking or airbnb. |
name | string | Listing title or property name shown in search results. |
url | string | Canonical listing URL when available. |
price | number | null | Parsed numeric price extracted from visible listing text. |
totalPrice | number | null | Parsed total price when present in the page text. |
currency | string | Currency symbol or code inferred from the listing text or input hint. |
rating | number | null | Numeric rating parsed from visible score text. |
ratingText | string | Raw rating text as displayed on the website. |
reviewCount | integer | Parsed review count when available. |
propertyType | string | Property classification such as hotel, home, apartment, or private room. |
location | string | Best-effort location snippet from the listing card. |
distanceFromCenter | string | Booking.com distance snippet when available. |
imageUrl | string | Main card image URL. |
roomType | string | Room or stay subtype if exposed in the search result card. |
amenities | array | Amenities list when available in the raw card extraction. |
scrapedAt | string | ISO 8601 UTC timestamp for the scrape event. |
Input Parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
destination | string | Yes | — | City, area, or destination query such as Singapore, Tokyo, or Paris. |
checkin | string | No | empty | Check-in date in YYYY-MM-DD format. |
checkout | string | No | empty | Check-out date in YYYY-MM-DD format. |
adults | integer | No | 2 | Number of adult guests. Accepted range is 1–10. |
platforms | string | No | both | both, booking, or airbnb. |
maxResults | integer | No | 50 | Maximum number of results per platform. The current hard limit is 500. |
currency | string | No | USD | Preferred currency code such as USD, EUR, JPY, or SGD. |
proxy | object | No | null | Standard Apify proxy configuration, including residential proxies when needed. |
For schema-level validation, see .actor/input_schema.json.
Usage Examples
1. Compare Booking.com and Airbnb prices in one run
{"destination": "Singapore","checkin": "2026-05-01","checkout": "2026-05-03","adults": 2,"platforms": "both","maxResults": 20,"currency": "USD"}
2. Booking.com only with local currency
{"destination": "Tokyo","checkin": "2026-06-15","checkout": "2026-06-18","adults": 2,"platforms": "booking","maxResults": 25,"currency": "JPY"}
3. Airbnb only for family stays
{"destination": "Paris","checkin": "2026-07-01","checkout": "2026-07-07","adults": 4,"platforms": "airbnb","maxResults": 30}
4. Dual-platform run with Apify residential proxy
{"destination": "New York","checkin": "2026-08-10","checkout": "2026-08-14","adults": 2,"platforms": "both","maxResults": 15,"currency": "USD","proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Use Cases
- Price comparison — Compare hotel and rental pricing across Booking.com and Airbnb for the same destination and date window. This is ideal for travel agencies, and founders building a hotel price comparison product.
- Market research — Track accommodation pricing, rating, and listing mix across cities to understand supply, affordability, and positioning. Analysts can use this accommodation scraper for destination studies, hospitality benchmarking, or tourism research.
- Travel planning tools — Feed normalized hotel and rental results into itinerary builders, chatbots, recommendation engines, or AI travel assistants that need a travel scraper data source.
- Rate monitoring — Schedule repeat runs to detect price drops, weekend spikes, or seasonal changes. This is useful for alerting systems, dynamic pricing experiments, and a hotel scraper workflow.
- Academic research — Collect listing data for tourism economics, urban planning, or mobility studies. A single vacation rental scraper plus hotel feed simplifies dataset preparation.
Cost Estimate
This Actor is intended to support a pay-per-event pricing model with a small run start charge plus a per-result charge. Based on the current product brief, the live commercial target is approximately $2 per 1,000 results, with a small fixed charge each time the Actor starts.
In practical terms:
- Small validation run:
maxResults: 10on one platform keeps cost low and is suitable for selector checks. - Standard comparison run:
maxResults: 50onbothplatforms gives a useful sample for a Booking.com scraper plus Airbnb scraper comparison workflow. - Larger monitoring run: use scheduled runs with moderate result counts and proxy settings only when needed.
Browser-based actors consume more compute than lightweight HTTP scrapers, so the best operating pattern is to keep your inputs targeted, reuse destination/date windows intelligently, and avoid collecting more data than your downstream workflow actually needs.
Performance
Performance depends on destination complexity, date filters, proxy usage, and how aggressively the source platforms load cards in the browser. As a general rule:
- Single-platform runs are faster than dual-platform runs.
- Booking.com often returns structured card data quickly for mainstream destinations.
- Airbnb can vary more by geography and may need extra page load time for results to stabilize.
- Residential proxies can improve reliability in some regions, but they may add latency.
For most validation runs, keeping maxResults between 5 and 20 per platform is a good balance between speed and confidence. For production monitoring, increase counts gradually and observe success rate and cost per usable result.
Local Development
- Use Python 3.13 if possible to match the Actor base image.
- Install dependencies:
python3.13 -m venv .venv.venv/bin/pip install -r requirements.txtpython -m patchright install --with-deps chromium
- Run locally with Apify CLI:
$apify run
Store local input in storage/key_value_stores/default/INPUT.json or provide it through the CLI prompt. When running locally, do not force APIFY_IS_AT_HOME=1 unless you are intentionally emulating the Apify runtime with the right environment context.
Notes
- DOM dependency — Booking.com and Airbnb occasionally change listing card structure, so selectors may need maintenance.
- Blocking risk — For higher-volume runs, use reasonable limits and enable Apify Proxy when necessary.
- Currency parsing —
currencyis best-effort from visible text; Booking.com also uses the explicit input hint when available. - Cloud browser mode — On Apify, the Actor runs headless with bundled Chromium. Local development can use Chrome when installed.
Legal
This Actor automates search result pages only. You are responsible for complying with Booking.com, Airbnb, and Apify terms of service, applicable privacy and data protection laws, and robots or acceptable-use rules that apply in your jurisdiction or workflow.
Do not use this tool for spam, credential stuffing, abusive automation, or other prohibited activities. The software is provided on an as-is basis without warranty, and you are responsible for validating fitness for your use case before production deployment.
Pushing to Apify
Authenticate with the Apify CLI first, then push the Actor:
$apify push
Use an APIFY_TOKEN environment variable or CLI login flow. Do not commit credentials, API tokens, or private configuration values into the repository.