Hydrate Properties
Bulk enrichment of property data by property IDs
/members/properties/search/hydrateOverview
Enriches multiple properties with detailed information in a single request. This endpoint is optimized for hydrating property cards with full details including pricing, availability, amenities, and media.
Use this endpoint when you have property IDs from search results and need complete property details for display.
Authentication
Requires a valid Clerk JWT token in the Authorization header.
Request Body
propertyIdsbodyarrayrequiredArray of property IDs to hydrate (maximum 50 properties per request)
datesbodyobjectCheck-in and check-out dates for pricing and availability
properties
checkInbodystringCheck-in date (YYYY-MM-DD)
checkOutbodystringCheck-out date (YYYY-MM-DD)
includeAvailabilitybodybooleanWhether to include real-time availability data (default: false)
includeReviewsbodybooleanWhether to include review summaries (default: false)
includeMediabodybooleanWhether to include full media galleries (default: false)
Response
Returns enriched property data for the requested properties.
propertiesarrayrequiredArray of hydrated property objects
property items
idnumberrequiredProperty identifier
documentIdstringrequiredProperty document identifier
namestringrequiredProperty name
descriptionstringFull property description
brandNamestringBrand or chain name
typestringrequiredProperty type
nightlyCostnumberrequiredCost per night in points
guestRatingnumberAverage guest rating (1-5 stars)
maxGuestsnumberrequiredMaximum guest capacity
addressobjectrequiredProperty location details
address
streetstringStreet address
citystringrequiredCity name
statestringState or region
countrystringrequiredCountry name
postalCodestringPostal/ZIP code
latitudenumberrequiredLatitude coordinate
longitudenumberrequiredLongitude coordinate
amenitiesarrayDetailed amenity information
amenity items
idstringrequiredAmenity identifier
namestringrequiredAmenity name
categorystringAmenity category
iconstringAmenity icon URL
mediaobjectProperty images and media (when includeMedia=true)
media
heroobjectHero/primary image
hero image
urlstringrequiredImage URL
altstringAlt text
galleryarrayAdditional property images
gallery images
urlstringrequiredImage URL
altstringAlt text
categorystringImage category (room, exterior, amenity, etc.)
availabilityobjectReal-time availability data (when includeAvailability=true)
availability
availablebooleanrequiredWhether property is available for requested dates
roomsAvailablenumberNumber of rooms available
restrictionsarrayAny booking restrictions
reviewsobjectReview summary data (when includeReviews=true)
reviews
ratingnumberrequiredAverage rating (1-5 stars)
countnumberrequiredTotal number of reviews
breakdownobjectRating breakdown by category
breakdown
cleanlinessnumberCleanliness rating
servicenumberService rating
locationnumberLocation rating
valuenumberValue rating
notFoundarrayArray of property IDs that could not be found
Example
const response = await fetch('https://api.journey.com/members/properties/search/hydrate', {
method: 'POST',
headers: {
'Authorization': `Bearer ${clerkToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
propertyIds: [123, 456, 789],
dates: {
checkIn: '2024-06-15',
checkOut: '2024-06-17'
},
includeAvailability: true,
includeReviews: true,
includeMedia: false
})
});Request
curl -X POST "https://api.journey.com/members/properties/search/hydrate" \
-H "Authorization: Bearer YOUR_CLERK_JWT" \
-H "Content-Type: application/json" \
-d '{
"propertyIds": [123, 456, 789],
"dates": {
"checkIn": "2024-06-15",
"checkOut": "2024-06-17"
},
"includeAvailability": true,
"includeReviews": true,
"includeMedia": false
}'Response
{
"properties": [
{
"id": 123,
"documentId": "prop_manhattan_boutique",
"name": "Manhattan Boutique Hotel",
"description": "A sophisticated boutique hotel in the heart of Manhattan...",
"brandName": "Journey Urban Collection",
"type": "Hotel",
"nightlyCost": 45000,
"guestRating": 4.6,
"maxGuests": 4,
"address": {
"street": "123 Fifth Avenue",
"city": "New York",
"state": "NY",
"country": "United States",
"postalCode": "10001",
"latitude": 40.7128,
"longitude": -74.0060
},
"amenities": [
{
"id": "wifi",
"name": "Free WiFi",
"category": "Technology",
"icon": "https://cdn.journey.com/icons/wifi.svg"
},
{
"id": "pool",
"name": "Rooftop Pool",
"category": "Recreation",
"icon": "https://cdn.journey.com/icons/pool.svg"
}
],
"availability": {
"available": true,
"roomsAvailable": 3,
"restrictions": []
},
"reviews": {
"rating": 4.6,
"count": 1247,
"breakdown": {
"cleanliness": 4.8,
"service": 4.5,
"location": 4.9,
"value": 4.2
}
}
}
],
"notFound": []
}Usage Notes
Performance Considerations
- Batch size: Maximum 50 properties per request
- Response time: Varies based on included data (availability checks add ~200ms)
- Caching: Property data is cached for 5 minutes, availability for 30 seconds
Best Practices
- Request only needed data - Use include flags to control response size
- Handle not found properties - Check the
notFoundarray for missing properties - Cache results - Cache hydrated data to reduce API calls
- Parallel requests - For >50 properties, make parallel requests
Related Endpoints
- Search Properties - Get property IDs for hydration