Compare Hotel Prices Across Booking Platforms with Scrape.do and Google Sheets

Go to Workflow
1 views
Built by Onur Onur
Created on June 05, 2026

Description

🏨 Hotel Price Comparison Workflow with Scrape.do

This template requires a self-hosted n8n instance to run.

A complete n8n automation that extracts hotel prices from multiple booking platforms (Booking.com, Hotels.com, Expedia, etc.) using Scrape.do API, compares prices across platforms, and saves structured results into Google Sheets for price monitoring and decision-making.

📋 Overview

This workflow provides an automated hotel price comparison solution that monitors hotel rates across different booking platforms for specific destinations and dates. Ideal for travel agencies, price comparison websites, travelers, and hospitality analysts who need real-time pricing insights without manual searching.

Who is this for?

Travel agencies automating price comparisons
Price comparison website operators
Budget-conscious travelers tracking best deals
Hospitality analysts monitoring market pricing
Hotel managers tracking competitor rates
Travel bloggers researching accommodation options

What problem does this workflow solve?

Eliminates manual price checking across multiple sites
Processes multiple hotels and date ranges automatically
Extracts structured pricing data (price, rating, amenities)
Identifies the cheapest option across platforms
Automates saving results into Google Sheets
Ensures consistent and repeatable price monitoring

⚙️ What this workflow does

Manual Trigger → Starts the workflow manually or on schedule
Get Search Parameters from Sheet → Reads hotel names, destinations, check-in/check-out dates from Google Sheet
URL Encode Parameters → Converts search parameters into URL-safe format
Process Hotels in Batches → Handles multiple searches sequentially to avoid rate limits
Fetch Hotel Data from Multiple Platforms → Calls Scrape.do API to retrieve pricing from Booking.com, Hotels.com, and Expedia
Extract and Structure Price Data → Parses HTML into structured hotel data (name, price, rating, amenities)
Compare Prices Across Platforms → Identifies best price and calculates savings
Append Results to Sheet → Writes comparison results into Google Sheet

📊 Output Data Points

| Field | Description | Example |
|-------|-------------|---------|
| Hotel Name | Name of the hotel | Hilton Garden Inn Downtown |
| Destination | City or location | New York, NY |
| Check-in Date | Arrival date | 2025-12-15 |
| Check-out Date | Departure date | 2025-12-18 |
| Nights | Number of nights | 3 |
| Booking.com Price | Price from Booking.com | $450 |
| Hotels.com Price | Price from Hotels.com | $425 |
| Expedia Price | Price from Expedia | $440 |
| Best Price | Lowest price found | $425 |
| Best Platform | Platform with lowest price | Hotels.com |
| Savings | Difference from highest price | $25 |
| Average Rating | Average customer rating | 8.5/10 |
| Total Reviews | Number of reviews | 1,247 |
| Free Cancellation | Cancellation policy | Yes |
| Breakfast Included | Breakfast availability | No |

⚙️ Setup

Prerequisites

n8n instance (self-hosted)
Google account with Sheets access
Scrape.do account with API token

Google Sheet Structure

This workflow uses one Google Sheet with two tabs:

Input Tab: "Search Parameters"

| Column | Type | Description | Example |
|--------|------|-------------|---------|
| Hotel Name | Text | Name of hotel (optional) | Hilton Garden Inn |
| Destination | Text | City or location | New York, NY |
| Check-in Date | Date | Arrival date (YYYY-MM-DD) | 2025-12-15 |
| Check-out Date | Date | Departure date (YYYY-MM-DD) | 2025-12-18 |
| Guests | Number | Number of guests | 2 |
| Rooms | Number | Number of rooms | 1 |

Output Tab: "Price Comparison"

| Column | Type | Description | Example |
|--------|------|-------------|---------|
| Search Date | Timestamp | When search was performed | 2025-11-17 10:30:00 |
| Hotel Name | Text | Name of the hotel | Hilton Garden Inn Downtown |
| Destination | Text | City/location | New York, NY |
| Check-in | Date | Arrival date | 2025-12-15 |
| Check-out | Date | Departure date | 2025-12-18 |
| Nights | Number | Number of nights | 3 |
| Booking.com Price | Currency | Price from Booking.com | $450 |
| Hotels.com Price | Currency | Price from Hotels.com | $425 |
| Expedia Price | Currency | Price from Expedia | $440 |
| Best Price | Currency | Lowest price | $425 |
| Best Platform | Text | Cheapest platform | Hotels.com |
| Savings | Currency | Potential savings | $25 |
| Rating | Number | Average rating | 8.5 |
| Reviews | Number | Total reviews | 1,247 |

🛠 Step-by-Step Setup

Import Workflow: Copy the JSON → n8n → Workflows → + Add → Import from JSON
Configure Scrape.do API:
Endpoint: https://api.scrape.do/
Parameter: token=YOUR_SCRAPEDO_TOKEN
Add render=true for JavaScript-heavy booking sites
Add country=US (or target country) for localized results
Configure Google Sheets:
Create a sheet with two tabs: Search Parameters (input), Price Comparison (output)
Set up Google Sheets OAuth2 credentials in n8n
Replace placeholders: YOUR_GOOGLE_SHEET_ID and YOUR_GOOGLE_SHEETS_CREDENTIAL_ID
Configure Platform URLs:
Update base URLs for Booking.com, Hotels.com, Expedia in HTTP Request nodes
Customize search parameters based on platform URL structure
Run & Test:
Add test data in Search Parameters tab
Execute workflow → Check results in Price Comparison tab

🧰 How to Customize

Add more platforms**: Include Agoda, Trivago, or direct hotel websites by adding new HTTP Request nodes
Price alerts**: Add conditional logic to send email/Slack notification when price drops below threshold
Historical tracking**: Store daily snapshots to track price trends over time
Filtering**: Add filters for amenities (pool, gym, parking) or star ratings
Batch Size**: Adjust "Process Hotels in Batches" based on API rate limits
Rate Limiting**: Insert Wait nodes (20–30 seconds) between platform requests
Currency conversion**: Add currency API integration for multi-currency comparison
Scheduling**: Add Schedule Trigger to run automatically (daily/weekly)

📊 Use Cases

Travel Planning**: Find the best hotel deals for upcoming trips
Price Monitoring**: Track price changes for specific hotels over time
Agency Operations**: Automate price research for client bookings
Market Analysis**: Monitor competitor pricing in hospitality market
Deal Alerts**: Get notified when prices drop below target threshold
Budget Planning**: Compare costs across multiple destinations

📈 Performance & Limits

Single Hotel (3 platforms)**: ~30–45 seconds (depends on Scrape.do response)
Batch of 10 hotels**: 8–12 minutes typical
Large Sets (50+ hotels)**: 45–90 minutes depending on API credits & batching
API Calls**: 3 Scrape.do requests per hotel (one per platform)
Reliability**: 90%+ extraction success, 95%+ price accuracy

🧩 Troubleshooting

API error** → Check YOUR_SCRAPEDO_TOKEN and API credits on Scrape.do dashboard
No hotels loaded* → Verify Google Sheet ID & tab name = *Search Parameters**
Permission denied** → Re-authenticate Google Sheets OAuth2 in n8n
Empty prices** → Check if Scrape.do rendered JavaScript (render=true)
Parsing errors** → Booking sites change HTML structure; update CSS selectors in Extract nodes
Workflow timeout** → Reduce batch size or add more Wait nodes between requests
Wrong currency** → Add country parameter to Scrape.do request for localized pricing

🤝 Support & Community

n8n Forum**: https://community.n8n.io
n8n Docs**: https://docs.n8n.io
Scrape.do Dashboard**: https://dashboard.scrape.do
Scrape.do Documentation**: https://scrape.do/docs

🎯 Final Notes

This workflow provides a powerful foundation for automated hotel price comparison across multiple booking platforms using Scrape.do and Google Sheets.

You can extend it with:
Real-time price alerts via email/Slack
Historical price tracking and trend analysis
Integration with travel planning dashboards
Automated booking when price threshold is met
Multi-destination comparison for trip planning

Pro Tip: Schedule this workflow to run daily to catch early-bird discounts and flash sales automatically!

Nodes Used (3)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
HTTP Request
n8n-nodes-base.httpRequest