Stayingapi rate parity monitor
Skill stayingapi/travel-skills/skills/stayingapi-rate-parity-monitor
Watch how your own listing's rate shows across OTAs on a schedule and flag any platform underselling the market median. Powered by the StayingAPI REST API / MCP server.From its SKILL.md
npx -y skills add stayingapi/travel-skills --skill stayingapi-rate-parity-monitorAssembled 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 file declares
Copied from the file, not written here
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.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Cross-OTA rate-parity monitor → parity-exception digest
Rate parity erodes quietly: one OTA quietly undersells the rate you want your property to hold, and you only find out when direct bookings dry up. This monitor calls the flagship price-compare endpoint for your property on a schedule, ranks every OTA offer, measures each against the StayingAPI-computed median, and posts a parity-exception digest — which platforms are below the median, by how much, and the total spread — so a revenue manager can act on a paper trail instead of a hunch.
- 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
- Point it at your property + a target stay — Give the workflow your property name (plus an optional location to disambiguate), the check-in / check-out dates and occupancy to monitor, and a currency.
- Pull every OTA rate for the property — On each scheduled run it calls GET /v1/price-compare, which resolves the one property and returns every OTA offer for those dates plus StayingAPI-computed min and median aggregates.
- Flag the parity exceptions — The transform ranks the offers, measures each against the median, and flags any OTA sitting below it — the platforms undercutting the rate you want to hold — and computes the overall spread.
- Deliver the parity digest — A digest (median, spread, each OTA with its delta vs. median, and the flagged exceptions) is posted to Slack — swap the last node for email or a Google Sheet to keep a running parity log.
When to use this
The user is a host, property manager or revenue manager who wants to know whether their own
property is being undersold on any OTA — a rate-parity problem — rather than shopping for the
cheapest deal. 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,currency). - Call
GET /v1/price-compare. - Rank
data.offers[]bytotalPrice. Compare each againstdata.median(or the host's stated target/direct rate if they gave you one). Flag every OTA below that reference — those are the parity exceptions — and report the spread (max - min).
Reading the result
Report, per exception: the OTA, its totalPrice, the delta vs. the reference, and the url.
Lead with the count of exceptions and the largest gap. If meta.partial is true, note which
platforms are missing from meta.platformResults[].
Scheduling
This is a monitor: run it on a cadence (daily is typical) and deliver a recurring digest, so parity drift is caught the day it appears rather than at month-end.
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 below = data.offers.filter((o) => o.totalPrice < data.median);
console.log(below.length, 'OTA(s) below median', data.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/rate-parity-monitor
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.