Stayingapi cross ota price comparison
Skill stayingapi/travel-skills/skills/stayingapi-cross-ota-price-comparison
Portable AI-agent skills (SKILL.md) for accommodation search, availability, pricing, cross-OTA comparison & reviews via StayingAPI. Works with Claude, MCP and more. MIT-0.
npx -y skills add stayingapi/travel-skills --skill stayingapi-cross-ota-price-comparisonAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Compare one property across booking platforms and report the cheapest rate, with savings vs. the median. Powered by the StayingAPI REST API / MCP server.
The file declares its own license as Proprietary — see https://stayingapi.com/terms. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.8 KB, as published. Nobody here has run it
Multi-source price comparison → cheapest-rate report
Given a property (or a search) plus dates and occupancy, fetch prices across booking platforms and produce a cheapest-rate report — the trusted, ToS-clean replacement for the fragile "hotel price comparison via scraping" templates. It calls the flagship cross-OTA endpoint, sorts every offer, picks the cheapest, and computes the savings against the StayingAPI-computed median.
- Base URL:
https://api.stayingapi.com/v1(REST) · MCP:https://mcp.stayingapi.com/mcp - Auth:
Authorization: Bearer stay_live_…(free sandbox:stay_test_…). - Get a free key (no card): https://stayingapi.com/signup · Full machine contract: https://api.stayingapi.com/openapi.json
Steps
- Provide the property and dates — Give the workflow a property name (plus an optional location to disambiguate), check-in / check-out dates, occupancy and a currency.
- Call the flagship price-compare endpoint — The workflow calls GET /v1/price-compare, which resolves one property and returns every OTA offer for the dates — plus StayingAPI-computed min and median aggregates.
- Pick the cheapest and compute savings — It sorts the offers by total price, selects the cheapest, and computes the savings versus the median so you see both the best deal and how good it is.
- Deliver the cheapest-rate report — A formatted report (cheapest OTA, price, savings, the full offer list and the credits charged) is posted to Slack — swap the last node for email, Telegram, Discord or a Google Sheet.
When to use this
The user wants the cheapest price for a known stay, or a comparison of OTA offers for one
property. Reach for the flagship price-compare endpoint — it resolves one property and returns
every OTA offer for the dates, plus StayingAPI-computed min and median.
How to do it
- Resolve the property with one of
name,googleHotelId, orlocation(+checkIn,checkOut, optionaladults/children/childAges,currency). - Call
GET /v1/price-compare. - Sort
data.offers[]bytotalPriceascending; the first is the cheapest. Report it with itsurland the savings vs.data.median(data.median - cheapest.totalPrice).
Alternative: search fan-out
For "cheapest across a set of listings in an area," call GET /v1/search to discover
candidates, then GET /v1/price per top candidate, and compare the quotes.
Partial failures
Check meta.partial and meta.platformResults[] — a platform may fail while others succeed;
report what you have and note any meta.warnings[].
Example — REST
curl -sS "https://api.stayingapi.com/v1/price-compare?name=Hotel%20X%20Sibenik&location=Sibenik,HR&checkIn=2026-07-13&checkOut=2026-07-20¤cy=EUR" \
-H "Authorization: Bearer $STAYINGAPI_KEY"
Example — @stayingapi/sdk
import { StayingApiClient } from '@stayingapi/sdk';
const scout = new StayingApiClient({ apiKey: process.env.STAYINGAPI_KEY });
const { data } = await scout.priceCompare({
name: 'Hotel X Sibenik',
location: 'Sibenik, HR',
checkIn: '2026-07-13',
checkOut: '2026-07-20',
currency: 'EUR',
});
const cheapest = [...data.offers].sort((a, b) => a.totalPrice - b.totalPrice)[0];
console.log('cheapest', cheapest.ota, cheapest.totalPrice, '· saves', data.median - cheapest.totalPrice);
MCP (no key pasted into the agent)
On an MCP-capable runtime, connect the StayingAPI server at https://mcp.stayingapi.com/mcp (OAuth 2.1 + PKCE) and use:
compare_prices— compare one property across OTAs with computed min + median.
Async & partial failures
A live call that has to scrape returns 202 + a jobId; poll GET /v1/jobs/{jobId} (free)
until data.status is completed, then read data.result. The @stayingapi/sdk auto-polls.
On a fan-out, check meta.partial and meta.platformResults[] — report what succeeded and note
any meta.warnings[].
Credit awareness
Costs are per-endpoint and metered by result (v3). Failed, empty and blocked calls are never
billed, and sandbox (stay_test_) calls are always free. The exact, current costs live only in
https://stayingapi.com/pricing and the machine-readable https://api.stayingapi.com/openapi.json — read them there, don't assume.
Get your free key → https://stayingapi.com/signup · Docs: https://stayingapi.com/docs · Workflow: https://stayingapi.com/workflows/cross-ota-price-comparison