pricewin-price-comparison

Compare live hotel room rates across Booking.com, Agoda, Traveloka, and OpenTravel for specific dates — which OTA is cheapest for the same property, per-room prices, and free-cancellation terms. Use when comparing hotel prices, checking room rates for a named hotel, asking which site is cheaper, or finding the best rate for given check-in/check-out dates.

npx skills add https://github.com/price-win/pricewin-skills-hub --skill pricewin-price-comparison

Requires the pricewin MCP server. This skill issues no network calls of its own.

Price Comparison

MCP server: pricewin. Compares live rates across Booking.com, Agoda, Traveloka (crawled) plus OpenTravel (direct API).

Comparison is something you do over the returned sources — there is no server-side compare call. Pick the entry point by what the user gave you:

User gave youTool
A city — "compare hotel prices in Da Nang"search_hotels_livepoll_search_results
A named hotel — "is Mercure Danang cheaper on Agoda or Booking?"get_ota_hotel_detail
A hotel already known to be OpenTravel direct (source: "OPENTRAVEL_DIRECT", has propertyId)get_hotel_detail

City-wide comparison

search_hotels_live returns IMMEDIATELY with a sessionId — it does not return hotels.

  1. search_hotels_live — required: city, checkIn, checkOut (YYYY-MM-DD). Optional: adults (default 2), rooms, area, hotelName, priceMin, priceMax, language
  2. Wait 5s → poll_search_results(sessionId, nights)
  3. While status is pending or partial: wait 5s and poll again — up to 18 times (90s)
  4. Present as soon as status == "partial" with hotels; keep polling silently and refine

Then compare per hotel across its sources. See pricewin-hotel-search for the full dedupe + presentation contract — do not restate it differently here.

Single named hotel

get_ota_hotel_detail — for one specific Booking.com/Agoda hotel the user named.

  • Required: checkIn, checkOut. Pass hotelName + city + queryText (verbatim user text) whenever known
  • Do NOT call search_hotels_live for a named hotel — that returns a whole-city list
  • Live crawl, ~20–60s. Say nothing about "loading" until it actually returns
  • Speed-up: if a prior search already gave you prices.booking.url, pass it as propertyUrl to skip name resolution
  • If it returns not-found under load, retry once

Returns rooms, prices, facilities, photos, reviews for that property.

OpenTravel direct properties

get_hotel_detail — only for results with source: "OPENTRAVEL_DIRECT".

  • Pass propertyId (UUID from opentravelResults[].propertyId) when available
  • hotelName + city is a fallback only for a property already confirmed as OpenTravel direct
  • Required: checkIn, checkOut. Optional: adults, children, language
  • Returns room types with roomTypeId and ratePlanId — these are what make a property bookable

⚠️ Router rule: have a propertyIdget_hotel_detail. Name only → get_ota_hotel_detail.

Cancellation terms

For OpenTravel rate plans only: get_cancellation_policy(propertyId, ratePlanId, checkInDate) → non-refundable flag, free-cancellation window, refund %, and the computed deadline.

ratePlanId comes from get_hotel_detailroomTypes[].ratePlanId. Pass checkInDate or you get no deadline. OTA hotels have no structured policy — quote whatever the crawl returned.

Presenting a comparison

  • Rank purely by price. No source gets priority, OpenTravel included
  • Show the cheapest source first, then the others underneath: Agoda $X · Booking $Y · OpenTravel $Z
  • Savings vs the next-cheapest source: (next - cheapest) / next * 100 → "Save Z%"
  • When the gap is small, prefer the free-cancellation option and say why
  • All prices USD unless the tool says otherwise. No conversion

Tool inputs and response fields: reference.md.

Security & data handling

Documentation only — no code, no dependencies, no network calls of its own. The only data sent is the comparison query (city or hotel name, dates, guests, plus queryText — the user's message verbatim), to PriceWin's hosted MCP server https://mcp.price.win/mcp (no credentials, no account). No PII, and this skill cannot book or pay for anything. Full disclosure — operator, backend provenance, exact fields per tool — in SECURITY.md.

More skills from price-win

pricewin-deal-finder
price-win
Hotel price comparison & deals across Booking, Agoda, Google Hotels, and OpenTravel for given travel dates and guest count. Use for hotel prices, deals, or comparing OTA rates.
pricewin-hotel-deal-finder
price-win
Find the cheapest hotel deal by comparing live prices across Booking.com, Agoda, Google Hotels, and OpenTravel for any city worldwide and any travel dates — one command returns ranked best-value, cheapest, and quality picks with direct booking links, all normalized to USD. Use whenever someone asks for hotel prices, hotel deals, the cheapest room or rate, best hotel rates, a hotel price comparison, or which OTA is cheaper — e.g. 'is Booking or Agoda cheaper for Tokyo', 'find me a hotel in...
pricewin-hotel-search
price-win
Search hotels live across Agoda + Booking.com + Traveloka + OpenTravel with realtime pricing for specific dates. Use when user wants hotel prices for travel dates, comparing OTAs, or finding rooms.
researchweb-scrapingapi
pricewin-flight-search
price-win
Search live flight fares for a route and date across Agoda, Trip.com, and Traveloka — one-way or round-trip, any cabin, with airline, times, stops, duration, and a direct booking link. Use when the user wants flight prices, plane or air tickets, cheap flights or airfare between two cities, comparing airlines for travel dates, or planning the flying leg of a trip.
researchweb-scraping
pricewin-booking-assistant
price-win
Recommend hotel rooms and complete a real booking end to end — reserve an OpenTravel direct property with a payment link (bank QR, card, or PayPal), check payment status, resend an expired link, or cancel a booking. Falls back to direct Booking.com/Agoda/Traveloka links for OTA-only hotels. Use when booking or reserving a hotel, getting room recommendations, paying for a stay, checking a confirmation code, or cancelling a reservation.