Install
openclaw skills install hotel-price-finderCompare hotel prices across Booking.com, Agoda, Trip.com in real-time. Free multi-OTA price comparison with direct booking links. No API key required.
openclaw skills install hotel-price-finderCompare real-time hotel prices across Booking.com, Agoda, Trip.com and more. No API key required.
Activate when user asks about hotel search, price comparison, cheapest booking site, or accommodation recommendations.
Extract: destination (required), checkIn/checkOut (required, YYYY-MM-DD), adults (default 2), rooms (default 1), currency (default USD), maxBudget, limit (default 10). If dates missing, ask the user.
Xotelo uses TripAdvisor keys (g{number}). For unlisted cities, call:
curl -s "https://data.xotelo.com/api/search?q=DESTINATION&limit=5"
Common keys: Seoul=g294197, Busan=g297884, Jeju=g983296, Tokyo=g298184, Osaka=g298566, Kyoto=g298564, Bangkok=g293916, Phuket=g293920, Singapore=g294265, Bali=g294226, Kuala Lumpur=g298570, Hong Kong=g294217, Taipei=g293913, Da Nang=g298085, Ho Chi Minh=g293925, Hanoi=g293924, Cebu=g294261, Manila=g298573, Paris=g187147, London=g186338, New York=g60763
curl -s "https://www.agoda.com/api/cronos/search/GetUnifiedSuggestResult/3/1/1/0/en-us/?searchText=DESTINATION&origin=US" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Extract ObjectId where PageTypeId == 5 and SearchType == 1.
Common IDs: Seoul=14690, Busan=17172, Tokyo=5085, Osaka=9590, Bangkok=9395, Singapore=4064, Bali=17193, Hong Kong=16808
curl -s "https://data.xotelo.com/api/list?location_key=${LOCATION_KEY}&limit=${LIMIT}"
Returns per hotel: name, key, review_summary.rating (out of 5), review_summary.count, price_ranges.minimum/maximum, geo, image, url.
curl -s "https://data.xotelo.com/api/rates?hotel_key=${HOTEL_KEY}&chk_in=${CHECK_IN}&chk_out=${CHECK_OUT}¤cy=${CURRENCY}"
Returns per OTA: code, name, rate (before tax), tax. Add 1s delay between requests.
Xotelo doesn't provide booking URLs. Build them per OTA (URL-encode hotel name as {H}):
| OTA Code | Booking URL |
|---|---|
| BookingCom | https://www.booking.com/searchresults.html?ss={H}&checkin={CHECK_IN}&checkout={CHECK_OUT}&group_adults={ADULTS}&no_rooms={ROOMS} |
| Agoda | https://www.agoda.com/search?q={H}&city={AGODA_CITY_ID}&checkIn={CHECK_IN}&checkOut={CHECK_OUT}&los={LOS}&rooms={ROOMS}&adults={ADULTS} |
| CtripTA | https://www.trip.com/hotels/list?keyword={H}&checkin={CHECK_IN}&checkout={CHECK_OUT} |
| HotelsCom | https://www.hotels.com/search.do?q={H}&checkin={CHECK_IN}&checkout={CHECK_OUT} |
| Expedia | https://www.expedia.com/Hotel-Search?destination={H}&d1={CHECK_IN}&d2={CHECK_OUT}&adults={ADULTS}&rooms={ROOMS} |
curl -s "https://data.xotelo.com/api/heatmap?hotel_key=${HOTEL_KEY}¤cy=${CURRENCY}"
If APIFY_API_KEY is set, use for Agoda-specific deep search:
curl -s -X POST "https://api.apify.com/v2/acts/knagymate~fast-agoda-scraper/runs?token=${APIFY_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"city":"'"${DESTINATION}"'","checkIn":"'"${CHECK_IN}"'","checkOut":"'"${CHECK_OUT}"'","rooms":'"${ROOMS}"',"adults":'"${ADULTS}"',"currency":"'"${CURRENCY}"'","maxItems":15}'
Poll .data.status until SUCCEEDED, then fetch from .data.defaultDatasetId.
## 🏨 Hotel Search: [Destination]
📅 [CheckIn] → [CheckOut] ([N] nights) | 👤 [Adults] | 🛏️ [Rooms] room(s)
### #1 [Hotel Name] ⭐ [Rating]/5 ([Reviews] reviews)
| OTA | Rate | Tax | Total | Book |
|-----|------|-----|-------|------|
| **Agoda** | $280 | $53 | **$333 ← Best** | [Book](url) |
| Trip.com | $347 | $34 | $381 | [Book](url) |
💡 Save $82 by booking on Agoda vs Booking.com!
Rules: Sort OTAs cheapest first. Mark best deal. Show savings. Always include booking links. Include Agoda full search URL at bottom.
chk_in is invalid → dates may be too far out, try within 1 year