Journey Docs
Public APIRates

Get Property Rates

Search available property rates with standard public pricing

POST/public/reservations/rates

Overview

Returns available property rates with standard public pricing. This endpoint searches for hotel rates based on check-in/check-out dates, guest count, and optionally filters by specific room IDs.

Authentication

No authentication required. This is a public endpoint.

Request Body

strapiPropertyIdbodystringrequired

Strapi property Document ID

checkInbodystringrequired

Check-in date (ISO format: YYYY-MM-DD). Cannot be in the past.

checkOutbodystringrequired

Check-out date (ISO format: YYYY-MM-DD). Must be at least 1 day after check-in.

adultsbodynumberrequired

Number of adults (minimum: 1, maximum: 20)

childrenbodynumber

Number of children (minimum: 0, maximum: 10)

strapiRoomIdsbodystring[]

Array of Strapi room IDs (documentId or id) to filter rates. If provided, only rates for these rooms will be returned.

Request

curl -X POST "https://api.journey.com/v1/public/reservations/rates" \
  -H "Content-Type: application/json" \
  -d '{
    "strapiPropertyId": "fkihstwpqlezcm1ogi31yu8f",
    "checkIn": "2026-06-01",
    "checkOut": "2026-06-03",
    "adults": 2,
    "children": 0,
    "strapiRoomIds": ["k87cr02ph4s17msgcndg3yxz", "vqthp53n6303puuzhlgezob8"]
  }'

Response

Returns property rates for the specified dates and criteria.

ratesarrayrequired

Array of available room rates

array items
roomIdstringrequired

Room identifier

roomNamestringrequired

Display name for the room type

roomDescriptionstring

Detailed room description

maxOccupancynumberrequired

Maximum number of guests allowed

dailyRatesarrayrequired

Array of daily rate information

daily rate items
datestringrequired

Date for this rate (YYYY-MM-DD)

ratenumberrequired

Nightly rate in cents (USD)

availablebooleanrequired

Whether this date is available for booking

restrictionsobject

Stay restrictions for this date

restrictions object
minNightsnumber

Minimum number of nights required

maxNightsnumber

Maximum number of nights allowed

closedForArrivalboolean

Whether arrivals are closed for this date

closedForDepartureboolean

Whether departures are closed for this date

totalCostnumberrequired

Total cost for the entire stay in cents (USD)

averageNightlyRatenumberrequired

Average nightly rate in cents (USD)

amenitiesstring[]

List of room amenities

imagesarray

Room images

image items
urlstringrequired

Image URL

thumbnailUrlstring

Thumbnail image URL

altstring

Alt text for the image

typestring

Image type (hero, gallery, floor_plan)

propertyInfoobject

Basic property information

property info
idstringrequired

Property document ID

namestringrequired

Property name

addressobject

Property address information

address
streetstring

Street address

citystring

City name

statestring

State or province

countrystring

Country name

postalCodestring

Postal/ZIP code

searchCriteriaobjectrequired

Echo of the search parameters

search criteria
checkInstringrequired

Check-in date used for search

checkOutstringrequired

Check-out date used for search

adultsnumberrequired

Number of adults

childrennumber

Number of children

nightsnumberrequired

Number of nights calculated

Response

{
  "rates": [
    {
      "roomId": "k87cr02ph4s17msgcndg3yxz",
      "roomName": "Ocean View Suite",
      "roomDescription": "Spacious suite with panoramic ocean views, private balcony, and premium amenities",
      "maxOccupancy": 4,
      "dailyRates": [
        {
          "date": "2026-06-01",
          "rate": 45000,
          "available": true,
          "restrictions": {
            "minNights": 2,
            "maxNights": 14,
            "closedForArrival": false,
            "closedForDeparture": false
          }
        },
        {
          "date": "2026-06-02",
          "rate": 45000,
          "available": true,
          "restrictions": {
            "minNights": 2,
            "maxNights": 14,
            "closedForArrival": false,
            "closedForDeparture": false
          }
        }
      ],
      "totalCost": 90000,
      "averageNightlyRate": 45000,
      "amenities": [
        "Ocean View",
        "Private Balcony",
        "King Bed",
        "Mini Fridge",
        "Coffee Maker",
        "High-Speed WiFi"
      ],
      "images": [
        {
          "url": "https://cdn.journey.com/rooms/ocean-suite-hero.jpg",
          "thumbnailUrl": "https://cdn.journey.com/rooms/ocean-suite-hero-thumb.jpg",
          "alt": "Ocean View Suite with balcony",
          "type": "hero"
        },
        {
          "url": "https://cdn.journey.com/rooms/ocean-suite-bathroom.jpg",
          "thumbnailUrl": "https://cdn.journey.com/rooms/ocean-suite-bathroom-thumb.jpg",
          "alt": "Suite bathroom with marble finishes",
          "type": "gallery"
        }
      ]
    },
    {
      "roomId": "vqthp53n6303puuzhlgezob8",
      "roomName": "Standard King Room",
      "roomDescription": "Comfortable king room with modern amenities and city views",
      "maxOccupancy": 2,
      "dailyRates": [
        {
          "date": "2026-06-01",
          "rate": 25000,
          "available": true,
          "restrictions": {
            "minNights": 1,
            "maxNights": 14,
            "closedForArrival": false,
            "closedForDeparture": false
          }
        },
        {
          "date": "2026-06-02",
          "rate": 25000,
          "available": true,
          "restrictions": {
            "minNights": 1,
            "maxNights": 14,
            "closedForArrival": false,
            "closedForDeparture": false
          }
        }
      ],
      "totalCost": 50000,
      "averageNightlyRate": 25000,
      "amenities": [
        "City View",
        "King Bed",
        "Work Desk",
        "High-Speed WiFi",
        "Coffee Maker"
      ],
      "images": [
        {
          "url": "https://cdn.journey.com/rooms/standard-king-hero.jpg",
          "thumbnailUrl": "https://cdn.journey.com/rooms/standard-king-hero-thumb.jpg",
          "alt": "Standard King Room with city view",
          "type": "hero"
        }
      ]
    }
  ],
  "propertyInfo": {
    "id": "fkihstwpqlezcm1ogi31yu8f",
    "name": "Journey Beach Resort",
    "address": {
      "street": "123 Ocean Drive",
      "city": "Miami Beach",
      "state": "Florida",
      "country": "United States",
      "postalCode": "33139"
    }
  },
  "searchCriteria": {
    "checkIn": "2026-06-01",
    "checkOut": "2026-06-03",
    "adults": 2,
    "children": 0,
    "nights": 2
  }
}

Use Cases

Rate Comparison

const compareRates = async (propertyId, dates, guests) => {
  const rates = await getPropertyRates({
    strapiPropertyId: propertyId,
    checkIn: dates.checkIn,
    checkOut: dates.checkOut,
    adults: guests.adults,
    children: guests.children
  });
  
  // Sort by total cost
  const sortedRates = rates.rates.sort((a, b) => a.totalCost - b.totalCost);
  
  return sortedRates.map(rate => ({
    roomName: rate.roomName,
    totalCost: rate.totalCost / 100, // Convert to dollars
    averageNightly: rate.averageNightlyRate / 100,
    maxOccupancy: rate.maxOccupancy,
    savings: sortedRates[0].totalCost === rate.totalCost ? 0 : 
            (rate.totalCost - sortedRates[0].totalCost) / 100
  }));
};

Availability Checking

const checkAvailability = (rates) => {
  return rates.rates.map(rate => {
    const unavailableDates = rate.dailyRates
      .filter(day => !day.available)
      .map(day => day.date);
    
    const hasRestrictedDates = rate.dailyRates
      .some(day => day.restrictions?.closedForArrival || day.restrictions?.closedForDeparture);
    
    return {
      roomName: rate.roomName,
      isFullyAvailable: unavailableDates.length === 0,
      unavailableDates,
      hasRestrictions: hasRestrictedDates,
      totalCost: rate.totalCost
    };
  }).filter(rate => rate.isFullyAvailable);
};

Rate Calendar View

const formatRateCalendar = (rates) => {
  const calendar = {};
  
  rates.rates.forEach(rate => {
    rate.dailyRates.forEach(day => {
      if (!calendar[day.date]) {
        calendar[day.date] = [];
      }
      
      calendar[day.date].push({
        roomName: rate.roomName,
        roomId: rate.roomId,
        rate: day.rate / 100, // Convert to dollars
        available: day.available,
        restrictions: day.restrictions
      });
    });
  });
  
  return calendar;
};

Validation

Date Validation

  • Check-in date must be in YYYY-MM-DD format
  • Check-in date cannot be in the past
  • Check-out date must be at least 1 day after check-in
  • Maximum stay length is typically 30 days

Guest Count Validation

  • Adults: minimum 1, maximum 20
  • Children: minimum 0, maximum 10
  • Total guests should not exceed room capacity

Room ID Validation

  • Room IDs must be valid Strapi document IDs
  • Invalid room IDs will be filtered out silently
  • If no valid room IDs provided, all rooms are returned

Rate Information

Pricing

  • All rates returned in USD cents (multiply by 0.01 for dollars)
  • Rates include base room cost only
  • Taxes and fees calculated separately at booking
  • Subject to availability and rate restrictions

Rate Types

  • Standard Public Rates: Available to all users without authentication
  • Member Rates: Require authentication (see member endpoints)
  • Promotional Rates: May have specific terms and conditions

On this page