OutReserve API

Access campgrounds, destinations, and property data to power your mobile app, travel platform, or AI integration.

The OutReserve API is designed for developers, partners, and AI platforms.

Who is this for?

The OutReserve API is designed for developers, partners, and AI platforms.

Mobile Developers

Build iOS and Android apps powered by real-time campground and destination data.

Travel Partners

Integrate OutReserve inventory into your travel platform or booking engine.

AI & MCP Platforms

Build AI-powered travel assistants and MCP integrations using our property and destination data.

New: AI Integration

Connect AI Assistants to OutReserve

Our MCP server lets AI assistants like Claude, Cursor, and Windsurf search campgrounds, check availability, and manage properties on behalf of operators.

Learn About MCP Integration
Getting Started

Getting Started

Authentication

Authentication

Every request to the OutReserve API requires a valid API key. You can pass it as a query parameter or in the Authorization header.

# Pass your key as a query parameter
GET https://outreserve.com/api/v1/stays/search?apikey=oraks_xxx&q=yosemite
# Or use the Authorization header
Authorization: Bearer oraks_xxx
Localization & Pagination

Localization & Pagination

Use the language and currency parameters to localise responses. Pagination is supported on all collection endpoints.

language e.g. en-US, de-DE (default: en-US)
currency e.g. USD, EUR (default: USD)
limit Results per page (default 25, max 100)
page Page number for paginated results
Developer updates

Follow the API changelog

Track new endpoints, response changes, deprecations, and vertical-specific API updates from the same changelog we use for partner documentation.

API productization

Build against vertical-aware contracts

Use the capabilities endpoint to discover versioned vertical names, endpoint-level feature flags, supported markets, sandbox listings, and webhook event types before showing booking, quote, comparison, or external checkout actions.

Discovery
GET /api/v1/capabilities

Returns vertical constants, supported markets, endpoint capabilities, and webhook event metadata.

Sandbox
GET /api/v1/sandbox/listings

Stable sample Stay and RV Rental listings for client tests, app fixtures, and integration demos.

Webhooks
GET /api/v1/webhooks/events

Event catalog and subscription registration for future listing-change and trip-event delivery.

Trip examples
docs/api/OUTDOOR_TRIP_EXAMPLES.md

Example flow for combining stays, RV rentals, saved trips, comparison, favorites, and external clicks.

Available Endpoints

Available Endpoints

Method Endpoint Description
GET /api/v1/search Search across supported verticals by passing vertical=stays or vertical=rv-rental.
GET /api/v1/countries List countries with active OutReserve inventory, including stay and RV rental aggregate stats.
GET /api/v1/countries/:id Retrieve a single country with geography, stay counts, and RV rental stats when available.
GET /api/v1/countries/:id/properties List every active Stay property in a country with database-backed pagination, without the search result-window limit.
GET /api/v1/countries/:id/states List states within a country, including stay and RV rental aggregate stats.
GET /api/v1/countries/:id/states/:id Retrieve a state with geography, stay counts, and RV rental stats when available.
GET /api/v1/countries/:id/states/:id/destinations List active destinations under a state or country, including stay and RV rental market stats.
GET /api/v1/countries/:id/states/:id/destinations/:id Retrieve one destination with cached stay stats, RV rental stats, and thumbnail data.
Destination filtering

Search within a destination across inventory types

Use destination_scope across Stay or RV rental search to return exact destination inventory instead of listings that are merely within the nearby radius.

assigned
Returns properties explicitly assigned to the destination.
boundary
Returns only properties whose coordinates are inside the destination's stored polygon.
assigned_or_boundary
Returns properties explicitly assigned to the destination or located inside its stored boundary.

Searches around coordinates and can return listings outside the destination boundary.

Nearby radius example (no destination_scope)
GET /api/v1/search?vertical=rv-rental&lat=51.1784&lng=-115.5708&radius=50

Uses the destination's stored boundary and ignores radius-based matching.

Strict boundary example
GET /api/v1/search?vertical=rv-rental&destination=banff-national-park&destination_scope=boundary

Destination-scoped searches ignore lat, lng, and radius. Boundary modes return destination_boundary_unavailable when the destination has no stored polygon.

Location Hierarchy

Countries, States & Destinations

Drill down through the geographic hierarchy to discover regions and popular destinations. Each resource includes property counts, RV rental counts, and (where available) pricing statistics from our cached aggregates.

GET /api/v1/countries

Returns all countries with active listings. Use the slug for further nesting.

# Example response
{
"data": [
{ "id": 1, "name": "United States", "slug": "united-states", "abbreviation": "US", "latitude": 39.5, "longitude": -98.35, "properties_count": 12480, "rv_rentals_count": 842 },
...
],
"meta": { "page": 1, "limit": 25, "total_count": 2, "total_pages": 1 }
}
GET

/api/v1/countries/:country_id/properties

Database-backed

Retrieve the complete Stay inventory for a country

Returns every active Stay property whose country matches the supplied country ID or slug, including properties that are not assigned to a destination. It uses the detailed property representation and is not subject to the Elasticsearch 10,000-result window.

  1. 1. Choose a countryUse a slug such as united-states from GET /api/v1/countries.
  2. 2. Request 100 at a timePass limit=100, the maximum supported page size.
  3. 3. Follow the metadataIncrement page until it equals meta.total_pages.
# Request
curl "https://outreserve.com/api/v1/countries/united-states/properties?page=1&limit=100"
-H "Authorization: Bearer YOUR_API_KEY"
# Response (abridged)
{
"data": [{
"uuid": "prop_xxx", "name": "Example Campground",
"location": { "country_id": 1, "state_id": 5, "destination_id": null },
"units": [...], "amenities": [...], "images": [...]
}],
"meta": { "page": 1, "limit": 100, "total_count": 10909, "total_pages": 110 }
}

GET /api/v1/countries/united-states/states

States are scoped to a country. Rich stats include benchmark occupancy and ADR when available.

# Example response (abridged)
{
"data": [{
"name": "California", "slug": "california", "abbreviation": "CA",
"description": "Home to Yosemite, Big Sur and world-class RV parks...",
"has_outline": true,
"stats": { "properties_count": 3120, "benchmark_occupancy_pct": 0.684, ... },
"rv_rentals_stats": { "rentals_count": 842, "average_nightly_rate": 156.75, "classes": [...] }
}], "meta": { ... }}
}

GET /api/v1/countries/united-states/states/california/destinations

Destinations are ordered by popularity (property count + featured flag). Includes cached nightly rate ranges.

# Single destination example
GET /api/v1/countries/united-states/states/california/destinations/yosemite-national-park
{
"data": {
"name": "Yosemite National Park", "slug": "yosemite-national-park", "category": "national-park",
"featured": true, "properties_count": 87, "rv_rentals_count": 34,
"average_nightly_rate": 89.5, "lowest_nightly_rate": 45, "highest_nightly_rate": 320,
"rv_rentals_stats": { "rentals_count": 34, "average_nightly_rate": 149.25, "popular_make_models": [...] }
}
}

All location endpoints support ?page=2&limit=50 and return the standard data + meta envelope for collections.

RV Rental API

Search and Display RV Rentals

RV rental endpoints are designed for Canadian peer-to-peer trip planning, destination market context, and listing detail experiences. RV rental API data is not available for United States inventory; unsupported markets return a clear API error instead of an empty success response.

Destination planning

Pull RV rentals near a destination and combine results with RV class, sleeps, rate, delivery, pet, drive type, delivery radius, and feature filters. Include dates to receive rental-only trip estimates and minimum-stay fit; confirm final availability with the provider.

Listing detail

Retrieve one RV rental with media, specifications, make/model taxonomy, ratings, rate data, and provider links.

Trip matching

Use RV data next to campground search to build Stay + RV trip flows as bundle-ready inventory expands.

# Search RV rentals
GET /api/v1/rv-rentals/search?country=canada&state=british-columbia&destination=vancouver&rv_drive_type=drivable&sleeps_min=4&start_date=2026-08-01&end_date=2026-08-05
# Destination-scoped shortcut
GET /api/v1/countries/canada/states/british-columbia/destinations/vancouver/rv-rentals
# Listing detail and unsupported market
GET /api/v1/rv-rentals/listings/8007bc74-ddfb-4851-8656-077f1446105b
# Unsupported country response
HTTP/1.1 422 Unprocessable Content
{ "error": "RV rental API data is currently available for Canadian destinations only. United States RV rentals are not available through this API." }
Availability Alerts

Monitor Properties for Availability

Create alerts to monitor campgrounds and RV parks for open dates. Get notified via webhook when sites become available for your desired dates and unit type.

Note: For API key authentication, user_uuid is optional. If omitted, the alert is created as an API-only alert tied to your API key. Save the returned uuid to check status later.

# 1. Create an availability alert
POST /api/v1/stays/availability_alerts
{
"property_uuid": "prop_xxx",
"start_date": "2026-06-15",
"end_date": "2026-06-20",
"unit_type": "rv",
"webhook_url": "https://your-site.com/webhook"
}
# Optional: add "user_uuid" to associate with a user
# 2. POST Response - Save this UUID
{
"data": {
"alert": {
"uuid": "alt_abc123xyz",
"property_uuid": "prop_xxx",
"status": "pending",
"start_date": "2026-06-15",
"end_date": "2026-06-20"
}
}
}
# Use this uuid for GET requests to check status
# 3. Check alert status (using saved UUID)
GET /api/v1/stays/availability_alerts/alt_abc123xyz
# Response includes live availability status:
{
"data": {
"alert": { ... },
"live_status": {
"property_available": true,
"matching_units_count": 3,
"matching_units": [...],
"checked_at": "2026-05-20T21:35:00Z"
}
}
}

Webhook Payload

When availability opens, we send a signed webhook to your configured URL:

# Webhook event payload
{
"type": "availability.opened",
"data": {
"alert_uuid": "alt_xxx",
"property_name": "Yosemite Pines",
"user_uuid": "usr_xxx",
"booking_url": "https://outreserve.com/..."
},
"timestamp": "2026-05-20T21:35:00Z"
}

Verify the signature using your webhook_secret with HMAC-SHA256.

Affiliates & Partnerships

Affiliates & Partnerships

Join our affiliate and partnership programme to earn commissions by integrating OutReserve into your platform, app, or content.

  • Competitive commission rates on every booking referred through your integration.
  • Real-time reporting and analytics dashboard for your referrals.
  • Dedicated partner support and co-marketing opportunities.

Interested in becoming a partner? Contact us at [email protected]

Up to 10%
commission on referred bookings

Frequently Asked Questions About our API

Have a question, found a bug, or need help getting started? We are here to help.

Request an API Key

Request an API Key

Fill in the form below and our team will review your request. You will receive your API key within 2 business days.

Have a question, found a bug, or need help getting started? We are here to help. [email protected]