REST · MCP · built for AI agents
Availability, search & price — one call, every platform.
The booking platforms have no usable public APIs, and scrapers are single-platform and untrusted. StayingAPI returns live availability, search, and cross-OTA price in one schema — across Airbnb, Booking.com, Vrbo, and Google Hotels.
300 credits free · no credit card · failed calls cost 0 credits
curl -G https://api.stayingapi.com/v1/price-compare \
-H "Authorization: Bearer stay_live_..." \
--data-urlencode "name=D-Resort Sibenik" \
--data-urlencode "checkIn=2026-07-13" \
--data-urlencode "checkOut=2026-07-20" \
--data-urlencode "currency=EUR"{
"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 },
{ "ota": "booking.com", "totalPrice": 2910 },
{ "ota": "expedia", "totalPrice": 3025 }
]
},
"meta": { "platforms": ["google"], "cached": false, "creditsCharged": 22 }
}Reliability you can build on
The guarantees scrapers can’t make
No invented user counts — just the commitments we stand behind: a real SLA, no charge for bad data, the Core-4 covered, and one schema for all of it.
One API, every answer
Five endpoints. The same schema. Show, don’t sell.
Every endpoint returns the unified { data, meta } envelope — paired here with the real request and the agent conversation it powers.
/v1/search
per result · min 5 / platformOne fan-out call discovers properties across every platform and returns them in the same schema — Airbnb and Booking.com fields are identical, so you parse one shape, not four.
curl -G https://api.stayingapi.com/v1/search \
-H "Authorization: Bearer stay_live_..." \
--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" \
--data-urlencode "amenities=pool" \
--data-urlencode "platforms=airbnb,booking"{
"data": [
{
"id": "stays_airbnb_42307961",
"platform": "airbnb",
"name": "Seafront villa near Sibenik with pool",
"propertyType": "villa",
"guestRating": 4.92, "ratingScale": 5, "reviewCount": 86,
"maxOccupancy": 8, "bedrooms": 4, "bathrooms": 3,
"amenities": ["pool", "kitchen", "wifi", "air_conditioning"],
"host": { "name": "Ana", "isSuperhost": true },
"price": { "currency": "EUR", "nightlyPrice": 375, "totalPrice": 2625 }
},
{
"id": "stays_booking_abramovic2",
"platform": "booking",
"name": "Apartments Abramovic 2",
"propertyType": "apartment",
"guestRating": 9.4, "ratingScale": 10, "reviewCount": 318,
"maxOccupancy": 6, "bedrooms": 2, "bathrooms": 2,
"amenities": ["kitchen", "wifi", "air_conditioning", "sea_view"],
"host": { "name": "Apartments Abramovic", "isSuperhost": null },
"price": { "currency": "EUR", "nightlyPrice": 303, "totalPrice": 2122 }
}
],
"meta": { "platforms": ["airbnb", "booking"], "cached": false, "creditsCharged": 10 }
}Find a villa with a pool near Šibenik for Jul 13–20, 2 adults + 2 kids.
GET /v1/search?location=Šibenik&amenities=pool&platforms=airbnb,booking,vrboFound 23 pool villas across 3 platforms. Top matches:
- Seafront villa near Šibenik — €375/night · sleeps 8 · Superhost (Airbnb)
- Apartments Abramović 2 — €303/night · 9.4/10 · 318 reviews (Booking.com)
Identical fields on every platform — want me to total the price for your dates?
/v1/price-compare
22 credits / callThe flagship. Resolve one property and get every OTA’s total price for your dates in a single call — with the lowest and median rate computed for you, across both hotels and rentals.
curl -G https://api.stayingapi.com/v1/price-compare \
-H "Authorization: Bearer stay_live_..." \
--data-urlencode "name=D-Resort Sibenik" \
--data-urlencode "checkIn=2026-07-13" \
--data-urlencode "checkOut=2026-07-20" \
--data-urlencode "currency=EUR"{
"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 },
{ "ota": "booking.com", "totalPrice": 2910 },
{ "ota": "expedia", "totalPrice": 3025 }
]
},
"meta": { "platforms": ["google"], "cached": false, "creditsCharged": 22 }
}What’s the cheapest way to book D-Resort Šibenik for those dates?
GET /v1/price-compare?name=D-Resort Šibenik&checkIn=2026-07-13&checkOut=2026-07-20Cheapest is Google Hotels at €2,870 — €155 under Expedia.
- min €2,870 · median €2,910 across 3 OTAs
- Google Hotels €2,870 · Booking.com €2,910 · Expedia €3,025
min and median are computed server-side — no client-side math.
/v1/availability
from 5 credits · by date rangeAsk whether a known listing is bookable for a date window — per-night availability, minimum-stay, and check-in / check-out flags, normalized across platforms.
curl -G https://api.stayingapi.com/v1/availability \
-H "Authorization: Bearer stay_live_..." \
--data-urlencode "platform=airbnb" \
--data-urlencode "listingId=42307961" \
--data-urlencode "startDate=2026-07-13" \
--data-urlencode "endDate=2026-07-20"{
"data": [
{
"platform": "airbnb",
"listingId": "42307961",
"dates": [
{ "date": "2026-07-13", "available": true, "minNights": 7, "checkIn": true, "bookable": true },
{ "date": "2026-07-14", "available": true, "minNights": 7, "checkIn": false, "bookable": true },
{ "date": "2026-07-20", "available": true, "minNights": 7, "checkOut": true, "bookable": true }
]
}
],
"meta": { "platforms": ["airbnb"], "cached": true, "creditsCharged": 5 }
}Is the seafront villa free for the whole week of Jul 13?
GET /v1/availability?platform=airbnb&listingId=42307961&startDate=2026-07-13&endDate=2026-07-20Yes — every night from Jul 13 to 20 is available.
- Check-in open Jul 13 · check-out Jul 20
- 7-night minimum — your dates clear it
/v1/listing/{platform}/{id}
3 credits / callPull the full normalized record for one property — type, capacity, ratings, amenity taxonomy, host, and images — with live price embedded when you pass dates.
curl https://api.stayingapi.com/v1/listing/booking/abramovic2 \
-H "Authorization: Bearer stay_live_..."{
"data": {
"id": "stays_booking_abramovic2",
"platform": "booking",
"name": "Apartments Abramovic 2",
"propertyType": "apartment",
"location": { "city": "Sibenik", "region": "Sibenik-Knin", "country": "HR" },
"starRating": 4, "guestRating": 9.4, "ratingScale": 10, "reviewCount": 318,
"maxOccupancy": 6, "bedrooms": 2, "bathrooms": 2,
"amenities": ["kitchen", "wifi", "air_conditioning", "parking_free", "balcony", "sea_view"]
},
"meta": { "platforms": ["booking"], "cached": false, "creditsCharged": 3 }
}Pull full details for Apartments Abramović 2.
GET /v1/listing/booking/abramovic2Here’s the full record:
- 2 bed · 2 bath · sleeps 6 · 4★ · 9.4/10 (318 reviews)
- Sea view · balcony · free parking · A/C · kitchen · Wi-Fi
/v1/reviews
per review · min 5Normalized guest reviews with rating, scale, trip type, language, and owner responses — paginated, and billed per returned review with a 5-credit per-platform minimum.
curl -G https://api.stayingapi.com/v1/reviews \
-H "Authorization: Bearer stay_live_..." \
--data-urlencode "platform=airbnb" \
--data-urlencode "listingId=42307961" \
--data-urlencode "sort=recent"{
"data": [
{
"platform": "airbnb",
"listingId": "42307961",
"reviewId": "airbnb-42307961-review-001",
"rating": 5, "ratingScale": 5,
"text": "Beautiful home with a reliable pool filter for the children.",
"author": "Guest family", "date": "2026-05-22", "tripType": "family",
"language": "en", "ownerResponse": "It was a pleasure hosting your family."
}
],
"meta": {
"platforms": ["airbnb"], "cached": false, "creditsCharged": 100,
"pagination": { "limit": 20, "hasMore": true }
}
}What do recent guests say about the pool?
GET /v1/reviews?platform=airbnb&listingId=42307961&sort=recentRecent reviews are strongly positive — the pool comes up by name.
- “Beautiful home with a reliable pool filter for the children.” — family stay · ★★★★★
Three ways to integrate
Call it however your stack works
The same unified data over a REST endpoint, a native MCP server for agents, or a typed SDK — one credit balance behind all three.
api.stayingapi.comCall any endpoint with a Bearer key. Predictable JSON in one schema, cursor pagination, and idempotent reads — from any language.
curl -G https://api.stayingapi.com/v1/search \
-H "Authorization: Bearer stay_live_..." \
--data-urlencode "location=Sibenik, HR" \
--data-urlencode "platforms=airbnb,booking"mcp.stayingapi.comConnect Claude, Cursor, or n8n to live accommodation data over Streamable HTTP — OAuth 2.1, seven read-only tools, billed against one credit balance.
{
"mcpServers": {
"stayingapi": {
"url": "https://mcp.stayingapi.com",
"transport": "http"
}
}
}@stayingapi/sdkA typed client and drop-in agent skills. Bearer auth, retries, pagination, and async-job polling handled — returning the unified data + meta envelope.
import { StayingApiClient } from '@stayingapi/sdk';
const scout = new StayingApiClient({
apiKey: process.env.STAYINGAPI_KEY,
});
const { data } = await scout.search({
location: 'Sibenik, HR',
platforms: ['airbnb', 'booking'],
});Prefer code? The same /v1/search call — in whatever your stack speaks.
curl -s -G "https://api.stayingapi.com/v1/search" \
-H "Authorization: Bearer stay_live_..." \
--data-urlencode "location=Sibenik, HR" \
--data-urlencode "checkIn=2026-07-13" \
--data-urlencode "checkOut=2026-07-20" \
--data-urlencode "adults=2" \
--data-urlencode "platforms=airbnb,booking"Why StayingAPI
The empty seam, filled
Raw scrapers give you data but no schema or SLA. STR-analytics APIs cover half the map. Official APIs are partner-gated. We’re the one product in the middle.
One schema, every platform
Raw scrapers give you a different output shape per scraper. We normalize Airbnb, Booking, Vrbo, and Google into one documented schema — the moat over assembling it yourself.
Reliability you can build on
A product we own and stand behind: monitoring, multi-source failover, caching, a public status page, a 99.9% uptime SLA — and no charge for failed or bad-data calls.
Agent-native by design
A first-class MCP server, OAuth, importable workflows, and a typed SDK. Agents are first-class users — not a scraper with MCP bolted on after the fact.
| Capability | StayingAPI | Raw scrapers | STR-analytics | Official APIs |
|---|---|---|---|---|
| Self-serve, no approval | Yes | Yes | $10 min / gated | No |
| Hotels + short-term rentals | Yes | half | STR only | hotels only |
| One unified schema | Yes | No | No | No |
| Live availability + price | Yes | Yes | analytics only | Yes |
| Cross-OTA price-compare | Yes | No | No | No |
| 99.9% uptime SLA | Yes | No | varies | varies |
| Failed calls cost 0 credits | Yes | No | No | No |
| Agent-native MCP | Yes | bolt-on | No | rare |
Honest by design — we acknowledge the scraper, then win on trust, schema, coverage, and agents.
Transparent, credit-based pricing
Start free. Pay only for answers.
300 credits free, no card. Then a plan that fits — and failed or bad-data calls never cost a credit on any tier.
Free
Evaluate the whole API.
No credit card required
- 300 one-time complimentary credits (valid 90 days)
- Sandbox fixtures, zero spend
- 30 requests / min
Starter
Indie & small integrations.
- 1,900 credits / month
- 60 requests / min
- All Core-4 platforms
- REST + MCP + SDK
Pro
Production apps & agents.
- 9,900 credits / month
- 120 requests / min
- Priority routing
- Failed calls always free
Scale
High-volume workloads.
- 49,900 credits / month
- 300 requests / min
- Lowest realized $/credit
- Top-ups valid 30+ days
Enterprise
CustomVolume credit pricing, a contractual SLA with service credits, priority support, invoicing & annual terms, and optional EU data residency — for agencies, property managers, and OTAs.
What a credit buys
| Endpoint | Cost | Notes |
|---|---|---|
GET /v1/search | 5 credits+ | per result · min 5 / platform |
GET /v1/price-compare | 30 credits | per call · flagship |
GET /v1/availability | 5 credits+ | by date range · min 5 |
GET /v1/listing/{platform}/{id} | 3 credits | flat · per call |
GET /v1/price | 3 credits | flat · per call |
GET /v1/reviews | 5 credits+ | per review · min 5 |
GET /v1/jobs/{jobId} | 0 credits | polling is always free |
1 credit ≈ $0.01 nominal · cheaper inside a plan bundle. Launch defaults — see full pricing for current tiers.
Get your free key — no card
300 credits, the full API, the sandbox, and the native MCP server. First successful call in under five minutes.
No credit card · failed calls cost 0 credits