Hotel Price Comparison Scraper
TRAVELBUSINESSLEAD GENERATION
Hotel Price Comparison Scraper
Compare hotel prices across Booking.com, Expedia, Hotels.com, and Priceline from a single search. Collect nightly rates, guest ratings, star ratings, amenities, and photos for any destination. Perfect for travel market research and rate intelligence.
What It Does
This actor searches multiple online travel agencies (OTAs) simultaneously for hotels matching your destination and dates. It returns structured data including prices, ratings, amenities, and images — without requiring any account credentials.
Supported sources:
- Booking.com — nightly rates, review scores, star ratings, amenities, photos
- Expedia — nightly rates, guest ratings, property details
- Hotels.com — nightly rates, guest ratings, star ratings
- Priceline — nightly rates, guest ratings
Use Cases
- Travel price monitoring — track rate changes across OTAs for specific destinations and dates
- Market research — benchmark competitive pricing for hospitality businesses
- Rate intelligence — identify price gaps between platforms for arbitrage or travel planning
- Lead generation — build datasets of properties with pricing and contact details
Input
| Field | Type | Required | Description |
|---|---|---|---|
destination |
string | Yes | City, region, or address. Example: New York, NY |
checkIn |
string | Yes | Check-in date in YYYY-MM-DD format |
checkOut |
string | Yes | Check-out date in YYYY-MM-DD format. Must be after check-in |
adults |
integer | No | Number of adult guests per room (default: 2) |
rooms |
integer | No | Number of rooms (default: 1) |
sources |
array | No | OTA sources to search: booking.com, expedia.com, hotels.com, priceline.com. Leave empty to search all |
maxItems |
integer | No | Maximum hotel records to collect across all sources (default: 15) |
Example Input
{
"destination": "Paris, France",
"checkIn": "2026-09-15",
"checkOut": "2026-09-18",
"adults": 2,
"rooms": 1,
"sources": ["booking.com", "expedia.com"],
"maxItems": 20
}
Output
Each item in the dataset represents one hotel listing from one OTA. The same physical hotel may appear multiple times if found on multiple sources — this is by design and enables cross-OTA price comparison.
| Field | Type | Description |
|---|---|---|
hotel_name |
string | Hotel name as shown on the OTA listing |
hotel_url |
string | Direct URL to the hotel listing |
source |
string | Source OTA (e.g., booking.com) |
destination |
string | Search destination as provided |
check_in |
string | Check-in date (YYYY-MM-DD) |
check_out |
string | Check-out date (YYYY-MM-DD) |
price_per_night |
number | Nightly rate in reported currency. Null if not displayed |
price_currency |
string | Currency code (e.g., USD) |
total_price |
number | Total stay price if available. Null if not shown |
review_score |
number | Guest review score on a 0–10 scale. Null if not shown |
review_count |
integer | Number of guest reviews. Null if not shown |
star_rating |
number | Official star rating (1–5). Null if not shown |
amenities |
string | Comma-separated list of highlighted amenities |
image_url |
string | URL of the hotel's primary listing image |
address |
string | Hotel address or neighborhood (if available) |
scraped_at |
string | ISO 8601 timestamp of when this record was scraped |
Example Output
{
"hotel_name": "The Manhattan Hotel",
"hotel_url": "https://www.booking.com/hotel/us/the-manhattan.html",
"source": "booking.com",
"destination": "New York, NY",
"check_in": "2026-08-01",
"check_out": "2026-08-02",
"price_per_night": 189.00,
"price_currency": "USD",
"total_price": 189.00,
"review_score": 8.4,
"review_count": 1243,
"star_rating": 4,
"amenities": "Free WiFi, Air conditioning, Non-smoking rooms",
"image_url": "https://cf.bstatic.com/images/hotel/max1024x768/...",
"address": "Midtown Manhattan",
"scraped_at": "2026-08-01T12:34:56.789Z"
}
Notes
- Anti-bot protections: OTAs employ aggressive bot detection. This actor uses residential proxies to maximize success rates, and is classified as a high-complexity scraper (compatibility tier 2).
- Dynamic pricing: Hotel prices change frequently. Results reflect pricing at the time of the run.
- Source availability: Not all hotels appear on all OTAs. Comparing multiple sources gives broader coverage.
- Date sensitivity: Prices vary significantly by date, season, and how far in advance you book. Run the actor with your exact travel dates for accurate data.
- Currency: Prices are returned in the currency displayed by the OTA, which depends on your proxy's exit country (defaults to US).