Cross-OTA price comparison · REST + MCP · self-serve
The rental price comparison API that doesn’t exist anywhere else.
Every scraper gives you one site at a time and leaves the comparison to you. StayingAPI’s /v1/price-compare returns one property’s price across every OTA — Booking, Expedia, Vrbo, Airbnb, and Google — in a single call, with a computed lowest (min) and median rate, in one schema.
One call → every OTA + computed min/median · 300 credits free, no card · failed or empty calls cost 0 credits
GET /v1/price-compare
?name=D-Resort Sibenik
&location=Sibenik, HR
&checkIn=2026-07-13&checkOut=2026-07-20
&adults=2&children=2{
"data": {
"property": "D-Resort Sibenik",
"checkIn": "2026-07-13", "checkOut": "2026-07-20",
"currency": "EUR", "min": 2870, "median": 2910,
"offers": [
{ "ota": "google_hotels", "totalPrice": 2870, "currency": "EUR",
"url": "https://www.google.com/travel/hotels/.../prices" },
{ "ota": "booking.com", "totalPrice": 2910, "currency": "EUR",
"url": "https://www.booking.com/hotel/hr/d-resort-sibenik.html" },
{ "ota": "expedia", "totalPrice": 3025, "currency": "EUR",
"url": "https://www.expedia.com/...D-Resort-Sibenik..." }
]
},
"meta": {
"platforms": ["google"], "cached": false, "creditsCharged": 5, "currency": "EUR",
"platformResults": [{ "platform": "google", "status": "ok", "count": 3 }],
"pagination": null
}
}Show, don’t sell
One property, every OTA — with the lowest and median computed for you.
This is an actual /v1/price-compare response. Give it a property and dates; get back each OTA’s total price plus a server-computed lowest (min) and median rate — apples-to-apples, one currency, one schema. No incumbent returns this.
property + checkIn/checkOutThe compared property and the exact stay window every price is for.
offers[].otaThe source OTA for each price — google_hotels, booking.com, expedia, and more.
offers[].totalPriceTotal stay price per OTA in one currency, so the comparison is apples-to-apples.
minThe computed lowest total across every OTA — the cheapest bookable rate.
medianThe computed median total — a robust “fair price” signal that ignores outliers.
meta.creditsCharged22 credits per successful price-compare call — and 0 on a failed or empty call.
Google Hotels is the cross-OTA backbone, so a single call resolves the property and pulls each OTA’s bookable total for your exact dates. You read min for the cheapest rate and median for a robust “fair price” signal — no stitching together per-site scrapers, no reconciling three different output shapes. The same call works for hotels and short-term rentals.
Self-serve access
Instant access. No partner application. No sales call.
Building cross-OTA price comparison the hard way means integrating a different gated or per-site source for every OTA, then normalizing and reconciling the results yourself. StayingAPI is self-serve: sign up, get a key, and make your first price-compare call in under five minutes.
100 free credits — no credit card
Enough to build and test cross-OTA price comparison against real responses before you decide anything.
stay_test_ sandbox at zero cost
Deterministic price-compare fixtures wire up your integration before you ever spend a credit.
One schema for every OTA
Add or drop an OTA without touching your code — the offers array shape never changes.
- 1Get your free key
- 2curl the /v1/price-compare example
- 3Ship
The trust wedge
Reliability you can build a price-comparison product on.
A price-comparison feature that silently returns stale or partial numbers is worse than none. We run a product — monitoring, multi-source failover, retries, and caching behind one contract — so the compare you show is one you can stand behind.
99.9% monthly uptime SLA
Committed on the StayingAPI response envelope and published on a public status page. Multi-source failover, retries, and caching sit behind one contract.
Failed calls cost 0 credits
A blocked or unreachable OTA returns a typed upstream_unavailable (or meta.partial when some OTAs succeeded) and we charge nothing — not the pay-per-attempt model of raw scrapers.
Honest partial results, surfaced in meta
If one OTA is briefly unreachable, you get the OTAs that succeeded plus a meta.partial flag — never a silently-wrong min. The SLA covers our envelope; upstream degradation is surfaced, not hidden.
Runnable in five minutes
curl it, import the SDK, or hand it to your agent.
Every sample calls /v1/price-compare and is copy-paste runnable against your free key, generated from @stayingapi/sdk so it never drifts from the live API.
curl -s -G "https://api.stayingapi.com/v1/price-compare" \
-H "Authorization: Bearer stay_test_YOUR_KEY" \
--data-urlencode "name=D-Resort Sibenik" \
--data-urlencode "location=Sibenik, HR" \
--data-urlencode "checkIn=2026-07-13" \
--data-urlencode "checkOut=2026-07-20" \
--data-urlencode "adults=2" \
--data-urlencode "children=2"
# One call → every OTA's total, plus computed min & median. stay_test_ is $0.The MCP tab adds StayingAPI’s native server (Streamable HTTP, OAuth 2.1 / PKCE) to Claude, Cursor, or n8n — then the agent calls compare_prices({ name: "D-Resort Sibenik", checkIn: "2026-07-13", checkOut: "2026-07-20" }) and reads offers, min, and median straight from the result.
The honest comparison
Cross-OTA price comparison: raw scraper, SERP scraper, analytics tool, or StayingAPI?
| Capability | StayingAPI | Raw scraper / RapidAPI | Google-SERP scraper (SerpApi / DataForSEO) | STR analytics (AirROI / AirDNA) |
|---|---|---|---|---|
| Cross-OTA compare in one call | Yes — every OTA + computed min/median | No — one site per scraper, you assemble | Raw SERP listings, no normalized compare | No — analytics, not live rates |
| Computed min / median | Yes — server-side, in every response | No — you compute it | No | No |
| Coverage | Hotels and short-term rentals | One platform per scraper | Google Hotels SERP only | Airbnb / Vrbo only (STR) |
| Output schema | One unified offers[] schema | Different shape per scraper | SERP-shaped JSON | Analytics-specific |
| Access | Self-serve, free key in minutes | Self-serve, but per-scraper | Self-serve (SERP credits) | $10 min (AirROI) / ~$50k, sales-gated (AirDNA) |
| Reliability | 99.9% SLA, status page, failover | None (~86% success, no SLA) | SERP-dependent | Vendor-dependent |
| Failed-call billing | Free — 0 credits | You pay per attempt | You pay per SERP call | n/a |
| Agent-native (MCP) | First-class MCP + OAuth + Connectors | Bolt-on per scraper | No | No |
| Pricing | Predictable credits + free tier | Pay-per-result | Pay-per-SERP-call | PAYG / enterprise contract |
The honest read: raw scrapers and SERP APIs give you inputs — one site or one SERP at a time — and leave the comparison, normalization, and outlier handling to you; analytics tools answer “how did this market perform,” not “what’s the cheapest rate right now.” StayingAPI returns the finished cross-OTA answer — every OTA plus a computed min/median, for hotels and short-term rentals, in one schema, with an SLA.
Built for real work
What developers and agents build on cross-OTA price comparison.
Not “scrape prices” — the outcomes a specific reader recognizes, with every OTA’s rate and a computed min/median in one feed.
Meta-search & best-rate widgets
Show the cheapest rate for a property across every OTA and deep-link straight to it — one /v1/price-compare call per property, no per-OTA integration to maintain.
Cheapest-rate reports for clients
The travel or retreat agency that stopped checking four sites by hand now runs one call per property and hands the client a ranked, sourced cheapest-rate table.
Market-rate & price-drift intelligence
Track how min and median move for a property or destination across a date range to build a real-time competitive-pricing view.
Rate-parity monitoring
Watch a property’s rate across every OTA for the same dates and flag parity gaps where one channel is undercutting the others.
Price-drop alerts & automation
Schedule a /v1/price-compare poll and fire a Slack, email, or Telegram alert when the min drops below a threshold — shippable from /workflows in minutes.
Price-aware planning agents
Give your AI agent a dependable compare tool: “cheapest rate for D-Resort Šibenik, July 13–20” → real cross-OTA prices with min/median via the native MCP server.
Answers
Rental price comparison API — frequently asked questions
The questions developers actually search — answered in full, with FAQ structured data for rich results.
Ready-made workflows
Automate it — no code required
Importable n8n workflows and portable AI-agent skills built on this data. Grab one and ship, or browse the whole catalog.
Compare every OTA in one call.
300 credits, no credit card. Get each OTA’s price plus a computed min/median in your first call, in under five minutes.
One call → every OTA + min/median · failed calls cost 0 credits · native MCP included