Endpoint reference
Listing
Full listing detail — amenities, photos, host, and optional live price.
/v1/listing/{platform}/{id}Full listing detail — amenities, photos, host, and optional live price.
Live calls are asynchronous — you poll for the result
stay_test_ key) and from live cache hits. A live (stay_live_) call that has to scrape returns HTTP 202 with a data.jobId instead of blocking. Poll GET /v1/jobs/{jobId} (always free) until data.status is completed, then read the payload below from data.result (not data); the reconstructed meta — credits, platformResults, warnings — sits at the top level. Jobs usually finish in tens of seconds but can run several minutes (240s+), so budget your wait. The @stayingapi/sdk auto-polls a 202 to completion and hands you this exact synchronous-looking envelope — the simplest way to consume the API. See the response envelope for all three shapes.Full normalized detail for one listing: amenities (canonical taxonomy), photos, host, geo, ratings, and — when you pass dates — an embedded live price. The detail body is cached 24 h; any embedded live price is cached at the 1 h price TTL and composed at read time, so a stale price never rides on fresh detail.
Parameters
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
platformpath | enum | Yes | — | vrbo | booking | airbnb | google. |
idpath | string | Yes | — | Platform-native listing id (case-sensitive, verbatim from source). |
checkIn | date | No | — | Pairs with checkOut; presence embeds a best-effort live price (may be null; the call still bills). |
checkOut | date | No | — | Must be after checkIn. |
adults | integer | No | 2 | ≥ 1 (only used with dates). |
children | integer | No | 0 | ≥ 0. |
childAges[] | integer[] | No | — | Length must equal children. |
currency | string | No | USD | ISO-4217. |
Request & response
GET /v1/listing/booking/abramovic2?checkIn=2026-07-13&checkOut=2026-07-20&adults=2
Host: api.stayingapi.com
Authorization: Bearer stay_live_…{
"data": {
"id": "stays_booking_abramovic2",
"platform": "booking",
"platformListingId": "abramovic2",
"name": "Apartments Abramović",
"propertyType": "apartment",
"location": { "lat": 43.51, "lng": 16.44, "city": "Split", "country": "HR" },
"guestRating": 9.1, "ratingScale": 10, "reviewCount": 142,
"maxOccupancy": 4, "bedrooms": 2, "bathrooms": 1,
"amenities": ["pool", "kitchen", "air_conditioning", "wifi"],
"images": ["https://…"],
"host": { "name": "Marko", "isSuperhost": false },
"price": { "currency": "USD", "nightlyPrice": 303, "totalPrice": 2122, "nights": 7 }
},
"meta": {
"requestId": "req_li…",
"platforms": ["booking"],
"cached": false, "partial": false,
"creditsCharged": 3, "currency": "USD", "pagination": null,
"platformResults": [
{ "platform": "booking", "status": "ok", "creditsCharged": 3, "cached": false, "count": 1 }
],
"warnings": []
}
}Code samples
The same call in every language that matters — all returning the identical unified schema.
curl -sS "https://api.stayingapi.com/v1/listing/booking/abramovic2?checkIn=2026-07-13&checkOut=2026-07-20&adults=2" \
-H "Authorization: Bearer $STAYINGAPI_KEY"Try it
Run this endpoint against the deterministic sandbox right now — a real 200, zero credits, no sign-up. The credit cost of the equivalent live call is 3 credits.
/v1/listing//Runs against the deterministic Booking sandbox fixture — a real 200, zero credits.
Run the call to see a live, deterministic sandbox response.
curl -sS "https://api.stayingapi.com/v1/listing//" \
-H "Authorization: Bearer $STAYINGAPI_KEY"Workflows using this
Ready-made automations built on /v1/listing/{platform}/{id} — an importable n8n workflow + a portable AI-agent skill each.
- Property availability watch → alert — Watch a listing over a date window and get alerted the moment a wanted date becomes available.
- Cross-OTA rate-parity monitor → parity-exception digest — Watch how your own listing's rate shows across OTAs on a schedule and flag any platform underselling the market median.
- STR market scan → Google Sheet dataset — Scan a short-term-rental market — discover listings across platforms, price the top N for your dates, and append a normalized row-per-listing dataset to a Google Sheet.
- Review-intelligence digest → weekly reputation report — Pull normalized reviews for a property on a schedule and deliver a weekly digest — average rating, recurring themes, and the latest complaints to act on.
- Competitor rate & availability benchmark → report — Benchmark your listing’s rate and availability against a defined comp-set and get a weekly position report.
- Agent-native scouting via MCP — Connect StayingAPI as a Claude/Cursor MCP connector and scout stays, compare prices and check availability conversationally — no keys pasted.
- Portfolio price & occupancy feed — A daily digest across a saved set of listings — price, rating and recent reviews per listing in one report.
Notes & gotchas
The embedded price is best-effort
Airbnb price re-verification
A listing’s name can differ from the search name