Skip to content
ScoutingAPI
Docs

Search

Cross-platform property discovery, merged into one schema.

GET/v1/search

Cross-platform property discovery, merged into one schema.

Credits5 credits / platform
Cache TTL30 minutes
ReturnsProperty[]
ShapeFan-out

Discover properties matching a location, dates, occupancy and filters across one or more platforms. Results from every requested platform are normalized to the same Property shape and merged into a single, cursor-paginated list. This is the breadth / funnel endpoint — and the clearest demonstration of "one schema, every platform".

Parameters

Request parameters
ParameterTypeRequiredDefaultNotes
locationstringYesPlace name ("Split, HR") or "lat,lng". Required.
checkIndateNoYYYY-MM-DD; required if checkOut given; not in the past.
checkOutdateNoYYYY-MM-DD; required if checkIn given; must be after checkIn.
adultsintegerNo2≥ 1.
childrenintegerNo0≥ 0.
childAges[]integer[]NoLength must equal children. Coarsened for Vrbo/Airbnb.
roomsintegerNo1≥ 1. Meaningful for hotel platforms.
propertyType[]enum[]Nohotel | apartment | house | villa | cottage | other.
amenities[]enum[]NoCanonical amenity taxonomy. Airbnb amenity/pool is post-filtered.
minBedroomsintegerNo≥ 0.
priceMinnumberNo≥ 0, in currency.
priceMaxnumberNo≥ priceMin.
minGuestRatingnumberNoNormalized to the response ratingScale.
platforms[]enum[]Novrbo,booking,airbnb,googleDrives fan-out + per-platform billing.
limitintegerNo201–100.
cursorstringNoOpaque base64 cursor from a previous page.
sortenumNorecommendedrecommended | price_asc | price_desc | rating_desc.
currencystringNoUSDISO-4217; pass-through + echo.

Request & response

/v1/search
Request
GET /v1/search?location=Split,HR&checkIn=2026-07-13&checkOut=2026-07-20&adults=2&platforms=airbnb,booking&limit=20
Host: api.scoutingapi.com
Authorization: Bearer scout_live_…
Accept: application/json
Response
{
  "data": [
    {
      "id": "stays_booking_abramovic2",
      "platform": "booking",
      "platformListingId": "abramovic2",
      "url": "https://www.booking.com/hotel/hr/abramovic2.html",
      "name": "Apartments Abramović",
      "propertyType": "apartment",
      "location": { "lat": 43.51, "lng": 16.44, "city": "Split", "country": "HR" },
      "starRating": null,
      "guestRating": 9.1, "ratingScale": 10, "reviewCount": 142,
      "maxOccupancy": 4, "bedrooms": 2, "bathrooms": 1,
      "amenities": ["pool", "kitchen", "air_conditioning", "wifi"],
      "host": { "name": "Marko", "isSuperhost": false },
      "price": { "currency": "USD", "nightlyPrice": 303, "totalPrice": 2122, "nights": 7 }
    }
    // … more Property objects
  ],
  "meta": {
    "requestId": "req_8sf…",
    "platforms": ["airbnb", "booking"],
    "cached": false, "partial": false,
    "creditsCharged": 8, "currency": "USD",
    "pagination": { "limit": 20, "cursor": null, "nextCursor": "eyJ…", "hasMore": true },
    "platformResults": [
      { "platform": "airbnb", "status": "ok", "creditsCharged": 4, "cached": false, "count": 18 },
      { "platform": "booking", "status": "ok", "creditsCharged": 4, "cached": true, "count": 20 }
    ],
    "warnings": []
  }
}

Code samples

The same call in every language that matters — all returning the identical unified schema.

curl -sS "https://api.scoutingapi.com/v1/search?location=Split,HR&checkIn=2026-07-13&checkOut=2026-07-20&platforms=airbnb,booking&limit=20" \
  -H "Authorization: Bearer $SCOUTINGAPI_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 5 credits / platform.

Try itsandbox · 0 credits · no sign-up
GET/v1/search

Runs against the deterministic Airbnb + Booking sandbox fixtures — a real 200, zero credits.

Response

Run the call to see a live, deterministic sandbox response.

Copy as curl
curl -sS "https://api.scoutingapi.com/v1/search" \
  -H "Authorization: Bearer $SCOUTINGAPI_KEY"

Notes & gotchas

Default sort is round-robin "recommended"

Partial fan-out never fails the request