VOOZH about

URL: https://apify.com/dapper_rotorcraft/multi-ota-price-comparator

⇱ Multi-OTA Hotel Price Comparator Β· Apify


πŸ‘ Multi-OTA Hotel Price Comparator avatar

Multi-OTA Hotel Price Comparator

Pricing

from $2.00 / 1,000 results

Go to Apify Store

Multi-OTA Hotel Price Comparator

Search one or more locations across multiple OTAs (Booking.com, Hotels.com, Expedia, Agoda, Vrbo, Airbnb, Google Travel...) and normalize the prices into a single, currency-comparable dataset with the best price per hotel.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

πŸ‘ ossama

ossama

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Compare hotel prices for one or more locations across 7+ travel platforms at once β€” Booking.com, Hotels.com, Expedia, Agoda, Vrbo, Airbnb and Google Travel β€” and get a single, currency-normalized dataset with the best price per hotel and the cross-platform savings.

What does Multi-OTA Hotel Price Comparator do?

For every location you enter (e.g. London, Manchester, Birmingham), the Actor queries each selected platform, normalizes every offer into one schema, converts all prices into your chosen currency, and groups the same hotel across platforms so you can instantly see which OTA is cheapest. You get, per offer: hotel name, room/property type, price (per-night and whole-stay), currency, converted price, rating (always on /10), review count, coordinates, images (with captions), badges and amenities. Per hotel, you get the best price, the price spread and the percentage you can save by booking on the right platform.

🧠 How it works. The big OTAs block direct scraping with commercial anti-bot systems. Instead of fighting that, this Actor subcontracts the scraping to maintained Apify Store actors (e.g. voyager/booking-scraper, 3.8M runs) via Actor.call(), and focuses on the genuinely hard part: a correct, currency-aware cross-platform comparison.

Which platforms are supported?

PlatformKeyStatus
Booking.combookingβœ… Verified (real prices live)
Hotels.comhotels_comβœ… Verified (real prices live)
Expediaexpediaβœ… Verified (real prices live)
Agodaagodaβœ… Verified (real prices live)
Vrbovrboβœ… Verified (real prices live)
Airbnbairbnbβœ… Verified (rich output)
Google Travelgoogle_travelβœ… Verified (real prices live)
Trip.comtrip_com⚠️ Best-effort β€” free Store actors don't serve hotel data
Trivagotrivago⚠️ Best-effort β€” very slow, no date support

Pick any subset, or leave the platform list empty to query all of them. Non-working platforms are skipped cleanly (a warning in the log, never a crash).

⚠️ Free tier note. The Airbnb scraper requests ~4 GB. On the free plan (8 GB total), run Airbnb alone or with concurrency=1 to avoid the memory cap.

How much will it cost?

You only pay Apify platform usage plus whatever the subcontracted Store actors charge per run/result (billed to whoever runs this Actor). A typical single-location, few-platform run costs only a few cents. Heavier platforms (residential proxy, more results) cost more β€” tune maxResultsPerPlatform and the platform list to control spend.

Input

  • locationQueries (required) β€” list of locations to search, e.g. ["London", "Manchester", "Birmingham"]. Each is searched and compared separately.
  • checkIn / checkOut (required) β€” YYYY-MM-DD.
  • platforms β€” subset to query, or empty for all.
  • General search options β€” locale, currency, priceMin, priceMax, minBeds, minBedrooms, minBathrooms, adults, children, infants, pets. (Platforms apply the options they support; e.g. beds/infants/pets are Airbnb.)
  • maxResultsPerPlatform, concurrency, debugDumpHtml.

Input example

{
"locationQueries":["Marrakech"],
"checkIn":"2026-07-10",
"checkOut":"2026-07-12",
"platforms":["booking","agoda","expedia","google_travel"],
"adults":2,
"currency":"EUR"
}

Output

Two outputs:

  1. Default dataset β€” one row per offer per platform, normalized. Each offer is enriched with price_per_night, price_total_stay, price_total_converted (in your currency), latitude/longitude, images, badges, amenities...
  2. Comparison β€” written to the Key-Value Store under COMPARISON (grouped by location β†’ list of hotels) and to a dataset named comparison (one row per hotel). Each hotel group has: the offers, platforms_found, the best_price, the price_spread and max_savings_pct (how much you save by picking the right platform).

Output example (one normalized offer)

{
"source_platform":"airbnb",
"location_query":"Prague",
"hotel_name":"Lovely Apartment Heart in Old Town",
"room_type":"entire_home",
"address":"Apartment in Prague",
"latitude":50.090172,
"longitude":14.417268,
"check_in":"2026-07-10",
"check_out":"2026-07-12",
"adults":2,
"price_amount":679,
"price_currency":"USD",
"price_is_total_stay":true,
"price_qualifier":"total",
"price_per_night":339.5,
"price_total_stay":679,
"price_total_converted":679,
"price_currency_converted":"USD",
"rating":9.9,
"review_count":663,
"badges":["Guest favorite"],
"subtitles":["Free cancellation"],
"amenities":[],
"images":[
{"url":"https://a0.muscache.com/im/.../a.jpg","captions":[]},
{"url":"https://a0.muscache.com/im/.../b.jpg","captions":["4 beds","3 bedrooms"]}
],
"url":"https://www.airbnb.com/rooms/1686130"
}

Why the comparison is correct

  • Currencies are unified. Every offer is converted into your currency before comparison (verified live: Booking in EUR + Agoda/Expedia in USD, all compared in one currency). Live FX rates with a static fallback β€” see src/currency.py.
  • Per-night vs whole-stay is harmonized. Each offer is reduced to both a per-night and a whole-stay price according to its platform, so the best price is apples-to-apples.

Real example from a live Marrakech run: Grand Plaza Marrakech came back 23% cheaper on Google Travel than on Agoda.

How to use the scraped data

  • Monitor prices for your locations and catch the cheapest platform per hotel.
  • Track price spreads and savings opportunities across OTAs.
  • Feed competitive pricing/revenue tools, dashboards, or Google Sheets.
  • Spot emerging destinations and price trends across cities.

Architecture

.actor/ actor.json + input_schema.json
src/
main.py orchestration: validate input, loop locations Γ— platforms,
call Store actors, enrich + compare, push
params.py SearchParams (one location + dates + occupancy + filters)
normalize.py normalized schema + fuzzy matching + best-price comparison
currency.py FX rates (live + static fallback) and conversion
utils.py price/rating parsing + platform selection
adapters/
base.py StoreAdapter: build_input(params) + map_item(item, params)
booking / hotels_com / expedia / agoda / vrbo / airbnb / google_travel (βœ…)
trip_com / trivago (⚠️)
tests/ pytest on the pure logic (no network)

Adding/fixing a platform = a small adapter subclassing StoreAdapter (store_actor_id + build_input [+ map_item]) registered in src/adapters/__init__.py. Nothing else changes.

Tests

All the logic (parsing, conversion, fuzzy matching, platform selection, input building and output mapping) is pure Python, so it's testable offline:

pip install-r requirements-dev.txt
python -m pytest

64 tests cover parsing, currency conversion, per-night/whole-stay and multi-currency best-price selection, fuzzy matching, and verified output mappings for the 7 live platforms.

Run it on Apify

npminstall-g apify-cli
apify login
apify push

Integrations & API

Like any Apify Actor, this one connects to Make, Zapier, Slack, Google Sheets, Airbyte and more via Apify integrations and webhooks, and is fully driveable through the Apify API (Node apify-client, Python apify-client).

Legal

This Actor does not scrape the sites itself β€” it orchestrates public Apify Store actors and normalizes/compares their output. Stay reasonable on volume and review the terms of service of the sites and of the subcontracted actors.

You might also like

Best Hotel Price Search Engine

bhansalisoft/best-hotel-price-search-engine

BEST Hotel Price Search Engine alternative to Trivago for search best hotels with price from multiple Hotel sites like Agoda.com and Yatra.com and Booking.com.

10

Google Hotels Scraper

scrapapi/google-hotels-scraper

Google Hotels Scraper extracts hotel listings from Google Hotels search results. It collects hotel names, prices, ratings, reviews, locations, amenities, and booking links. Ideal for travel research, price monitoring, market analysis, and building hotel datasets.

Google Hotels Multi-Query Scraper & Price Comparison

jy-labs/google-hotels-multi-query-scraper

Search multiple hotel queries at once and compare prices across 30+ OTAs. Collect 5 data sections per hotel β€” Overview, Prices, Reviews, Photos, About β€” all from Google Hotels.

Hotel Price Comparison Scraper

jungle_synthesizer/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.

πŸ‘ User avatar

BowTiedRaccoon

3

Google Hotels Scraper

scrapeai/google-hotels-scraper

A scraper that extracts hotel listings from Google Travel search pages. It collects hotel names, prices, ratings, locations, amenities, and booking links from dynamic Google Hotels results for travel analysis, price comparison, and market research.

Hotel Price Comparison Scraper

parseforge/hotel-booking-sites-direct-hotel-websites-scraper

Compare hotel prices across Booking.com, Expedia, Hotels.com, Priceline, and more from a single search. Collect nightly rates, guest ratings, star ratings, amenities, photos, and provider comparisons for any destination. Perfect for travel market research and rate intelligence.

Booking.com Hotels Scraper

codingfrontend/booking-com-hotels-scraper

Scrape hotel listings from Booking.com search results. Extracts hotel name, price, rating, review count, location, and star rating.

πŸ‘ User avatar

Coding Frontned

2

Expedia Hotels 4.0

jupri/expedia-hotels

πŸ’« All-In-One Scraper for🟑 Expedia.com πŸ”΄ Hotels.com and other hotel website variants.

Expedia Hotels Scraper

crawlerbros/expedia-hotels-scraper

Scrape hotel listings from Expedia search results. Extract hotel names, prices, ratings, reviews, neighborhoods, descriptions and images for any destination and travel dates.

54