Skip to content
StayingAPI

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

REST APINative MCPClaude & agents
One unified schema across Airbnb · Booking.com · Vrbo · Google Hotels
price-compare
Request
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"
Response
{
  "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 }
}

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.

99.9%Monthly uptime SLACommitted on the StayingAPI response envelope, backed by a public status page.
0 creditsFor failed or bad dataEmpty, blocked, or upstream-degraded calls are never charged. You pay for answers.
Core-4Airbnb · Booking · Vrbo · GoogleHotels and short-term rentals together — both halves of the map, one API.
1 schemaEvery platform, every endpointThe same normalized JSON everywhere. Write your code once, point it anywhere.
Native MCP serverOAuth 2.1 / PKCECursor paginationTyped SDK + Zod schemaPredictable credits

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 / platform

One 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.

Cross-platform discoveryMarket scansInvestment & arbitrageTravel agents
Request
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"
Response
{
  "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 }
}
AI Agent

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,vrbo

Found 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?

Flagship · cross-OTA

/v1/price-compare

22 credits / call

The 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.

Cross-OTA rate shoppingMeta-search appsPrice-watch automationsBooking agents
Request
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"
Response
{
  "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 }
}
AI Agent

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-20

Cheapest 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 range

Ask whether a known listing is bookable for a date window — per-night availability, minimum-stay, and check-in / check-out flags, normalized across platforms.

Availability monitoringCalendar syncBooking alertsItinerary planning
Request
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"
Response
{
  "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 }
}
AI Agent

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-20

Yes — 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 / call

Pull the full normalized record for one property — type, capacity, ratings, amenity taxonomy, host, and images — with live price embedded when you pass dates.

Listing detail pagesPortfolio benchmarkingEnrichmentUnderwriting
Request
curl https://api.stayingapi.com/v1/listing/booking/abramovic2 \
  -H "Authorization: Bearer stay_live_..."
Response
{
  "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 }
}
AI Agent

Pull full details for Apartments Abramović 2.

GET /v1/listing/booking/abramovic2

Here’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 5

Normalized guest reviews with rating, scale, trip type, language, and owner responses — paginated, and billed per returned review with a 5-credit per-platform minimum.

Sentiment analysisReputation monitoringTrust signalsResearch
Request
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"
Response
{
  "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 }
  }
}
AI Agent

What do recent guests say about the pool?

GET /v1/reviews?platform=airbnb&listingId=42307961&sort=recent

Recent reviews are strongly positive — the pool comes up by name.

  • “Beautiful home with a reliable pool filter for the children.” — family stay · ★★★★★

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.

REST APIapi.stayingapi.com

Call 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"
Any HTTP clientcURLPostman
Read the API reference
Native MCP servermcp.stayingapi.com

Connect 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"
    }
  }
}
ClaudeCursorn8nConnectors
Set up the MCP server
Agent Skills & SDK@stayingapi/sdk

A 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'],
});
TypeScriptNode.jsAgent skills
Browse the SDK

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"

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.

CapabilityStayingAPIRaw scrapersSTR-analyticsOfficial APIs
Self-serve, no approvalYesYes$10 min / gatedNo
Hotels + short-term rentalsYeshalfSTR onlyhotels only
One unified schemaYesNoNoNo
Live availability + priceYesYesanalytics onlyYes
Cross-OTA price-compareYesNoNoNo
99.9% uptime SLAYesNovariesvaries
Failed calls cost 0 creditsYesNoNoNo
Agent-native MCPYesbolt-onNorare

Honest by design — we acknowledge the scraper, then win on trust, schema, coverage, and agents.

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.

$0no card
Get your free key

No credit card required

  • 300 one-time complimentary credits (valid 90 days)
  • Sandbox fixtures, zero spend
  • 30 requests / min

Starter

Indie & small integrations.

$19/mo
Start with Starter
  • 1,900 credits / month
  • 60 requests / min
  • All Core-4 platforms
  • REST + MCP + SDK
Most popular

Pro

Production apps & agents.

$99/mo
Go Pro
  • 9,900 credits / month
  • 120 requests / min
  • Priority routing
  • Failed calls always free

Scale

High-volume workloads.

$499/mo
Choose Scale
  • 49,900 credits / month
  • 300 requests / min
  • Lowest realized $/credit
  • Top-ups valid 30+ days

Enterprise

Custom

Volume credit pricing, a contractual SLA with service credits, priority support, invoicing & annual terms, and optional EU data residency — for agencies, property managers, and OTAs.

Talk to sales

What a credit buys

EndpointCost
GET /v1/search5 credits+
GET /v1/price-compare30 credits
GET /v1/availability5 credits+
GET /v1/listing/{platform}/{id}3 credits
GET /v1/price3 credits
GET /v1/reviews5 credits+
GET /v1/jobs/{jobId}0 credits

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