# Properties

## GET /properties

> Search for properties within a specified radius of a location, with optional filters for amenities, star ratings, property type, and deals etc.\
> \
> \*\*Key Features:\*\*\
> \- Location-based search using latitude, longitude, and radius\
> \- Support for deal codes and deal-only filtering\
> \- Guest group allocation to match rooms with occupancy requirements\
> \- Optional filters for breakfast, free cancellation, swimming pool, and more\
> \- Sorting by distance or property name\
> \- Multi-language content support\
> \
> \*\*Response:\*\*\
> Returns an array of properties with their best available rates. Each property includes one or more room options with pricing. If deal codes are specified, the best available deal room rate for each supported deal code will also be provided. Properties without available inventory for the specified dates will be excluded.\
> \
> \*\*Note:\*\*\
> Results are paginated. Properties are sorted by distance (nearest first) by default.

```json
{"openapi":"3.0.0","info":{"title":"Channels Plus Channel API","version":"0.0.1"},"paths":{"/properties":{"get":{"operationId":"listProperties","description":"Search for properties within a specified radius of a location, with optional filters for amenities, star ratings, property type, and deals etc.\n\n**Key Features:**\n- Location-based search using latitude, longitude, and radius\n- Support for deal codes and deal-only filtering\n- Guest group allocation to match rooms with occupancy requirements\n- Optional filters for breakfast, free cancellation, swimming pool, and more\n- Sorting by distance or property name\n- Multi-language content support\n\n**Response:**\nReturns an array of properties with their best available rates. Each property includes one or more room options with pricing. If deal codes are specified, the best available deal room rate for each supported deal code will also be provided. Properties without available inventory for the specified dates will be excluded.\n\n**Note:**\nResults are paginated. Properties are sorted by distance (nearest first) by default.","parameters":[{"$ref":"#/components/parameters/SmApiId"},{"$ref":"#/components/parameters/SmApiKey"},{"name":"page","description":"The page number of the results to fetch","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"perPage","description":"The number of results per page. Must be a multiple of 10 (10, 20, 30, etc.). Use smaller values for faster response times, larger values to reduce API calls. Default: 20, Maximum: 100.","in":"query","schema":{"type":"integer","minimum":0,"maximum":100,"default":20,"multipleOf":10}},{"name":"latitude","description":"Latitude coordinate for the center of the search area. Used with longitude and radius to define a geospatial search circle. Valid range: -90 to 90 degrees.","required":true,"in":"query","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"longitude","description":"Longitude coordinate for the center of the search area. Used with latitude and radius to define a geospatial search circle. Valid range: -180 to 180 degrees.","required":true,"in":"query","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"radius","description":"The search radius in kilometers around the specified latitude and longitude. Properties within this distance from the center point will be included in results. Results are sorted by distance (nearest first) by default. Minimum: 15km, Maximum: 100km, Default: 15km.","in":"query","schema":{"type":"number","default":15,"minimum":15,"maximum":100}},{"name":"checkin","description":"The arrival date. Must be within 500 days in the future and in the format yyyy-mm-dd.","required":true,"in":"query","schema":{"type":"string","format":"date"}},{"name":"checkout","description":"The departure date. Must be later than checkin. Must be between 1 and 30 days after checkin. Must be within 500 days in the future and in the format yyyy-mm-dd.","required":true,"in":"query","schema":{"type":"string","format":"date"}},{"name":"rooms","description":"Specify exact occupancy for each room to get the pricing and availability. Provide an array of room objects with specific adult and child counts for each room.\n\n**Important Notes:**\n- Use this parameter for precise room allocation (e.g., Room 1: 2 adults + 1 child, Room 2: 2 adults)\n- **Mutually exclusive** with totalAdults/totalChildren/totalRooms parameters\n- Minimum 1 room, maximum 10 rooms\n\n**Example:** `[{\"adults\": 2, \"children\": 1}, {\"adults\": 2, \"children\": 0}]` for 2 rooms with different occupancies","in":"query","schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","additionalProperties":false,"properties":{"adults":{"type":"integer","minimum":0,"maximum":65535,"description":"Number of adults in this specific room"},"children":{"type":"integer","minimum":0,"maximum":65535,"description":"Number of children in this specific room"}},"required":["adults","children"]}}},{"name":"totalAdults","description":"Specify total adults across all rooms when exact per-room allocation is not needed. Must be used together with `totalRooms`. The system will distribute guests across rooms.\n\n**Use Case:** When you know the total guest count but not the specific room allocation.\n\n**Example:** `totalAdults=4, totalChildren=2, totalRooms=2` could match any room configuration that accommodates 4 adults and 2 children across 2 rooms.\n\n**Mutually exclusive** with the `rooms` parameter.","in":"query","schema":{"type":"integer","minimum":0}},{"name":"totalChildren","description":"Total number of children across all rooms. Must be used with `totalRooms`. **Mutually exclusive** with the `rooms` parameter.","in":"query","schema":{"type":"integer","minimum":0}},{"name":"totalRooms","description":"Total number of rooms needed. Must be used with `totalAdults` and/or `totalChildren`. The system will find room configurations that can accommodate the total guest count. **Mutually exclusive** with the `rooms` parameter.","in":"query","schema":{"type":"integer","minimum":1,"maximum":10}},{"name":"sortBy","description":"Specify the sorting criteria for the results.","in":"query","schema":{"type":"string","enum":["distance","name"],"default":"distance"}},{"name":"sortDirection","description":"Specify the sorting direction for the results.","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"minStarRating","description":"Minimum star rating for properties in the results.","in":"query","schema":{"type":"number","enum":[1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6]}},{"name":"maxStarRating","description":"Maximum star rating for properties in the results.","in":"query","schema":{"type":"number","enum":[1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6]}},{"name":"propertyType","description":"Filter results to only include properties of a specific type. Common property types include: Hotel, Resort, Apartment, Guest House, Hostel, Motel, Villa, Bed & Breakfast, etc. This field is case-sensitive and must match the exact property type string configured in the system.","in":"query","schema":{"type":"string","maxLength":255}},{"name":"swimmingPoolAvailable","description":"Only return rates for properties that have a swimming pool.","in":"query","schema":{"type":"boolean"}},{"name":"breakfastIncluded","description":"Only return rates with breakfast included.","in":"query","schema":{"type":"boolean"}},{"name":"freeCancellation","description":"Only return rates with free cancellation periods.","in":"query","schema":{"type":"boolean"}},{"name":"dealCodes","description":"Return deal rates for properties participating in the specified deals. Provide one or more deal codes to include deal-specific pricing in the response. The API will validate that deals are active and applicable for the requested stay period.\n\n**Important Notes:**\n- When deal codes are provided, the response includes both standard rates and deal rates for each property\n- Each property may support different deal codes\n- Deal rates appear in the `prices` array within each room, with the `dealCode` field populated\n- Standard (non-deal) rates will have `dealCode` as null","in":"query","schema":{"type":"array","items":{"type":"string"}}},{"name":"dealOnly","description":"When set to true, only return properties that have active rates for the specified deal codes. Properties without the deal or without available deal inventory will be excluded from results. This parameter requires dealCodes to be specified.","in":"query","schema":{"type":"boolean"}},{"name":"language","description":"Specify the preferred language for returned content (property descriptions, room types, amenities). Falls back to the property's default language if the requested language is not available. Supported: de (German), en (English), es (Spanish), fr (French), id (Indonesian), it (Italian), pt (Portuguese), th (Thai).","in":"query","schema":{"type":"string","enum":["de","en","es","fr","id","it","pt","th"]}},{"name":"excludeSelfRated","in":"query","description":"Exclude self-rated properties from the response. Self-rated properties have star ratings assigned by the property owner rather than an official rating authority. Set to `true` to only include officially rated properties.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"successful","headers":{"ratelimit-policy":{"schema":{"type":"string"},"description":"Shows the number of request allowed per number of seconds window. e.g. '100;w=60' means 100 request in a 60 seconds window."},"ratelimit-limit":{"schema":{"type":"integer"},"description":"The number of requests allowed per window"},"ratelimit-remaining":{"schema":{"type":"integer"},"description":"The number of requests left for the time window."},"ratelimit-reset":{"schema":{"type":"integer"},"description":"The number of seconds left for the window to reset"}},"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"uuid":{"type":"string","description":"Unique identifier for the property."},"name":{"type":"string","description":"The name of the property."},"propertyType":{"$ref":"#/components/schemas/TranslationText","description":"The type of the property with language information."},"description":{"$ref":"#/components/schemas/TranslationText","description":"A description of the property with language information."},"address":{"type":"string","description":"The address of the property."},"suburb":{"type":"string","description":"The suburb where the property is located."},"state":{"type":"string","description":"The state or region where the property is located."},"country":{"type":"string","description":"The country where the property is located."},"email":{"type":"string","description":"The contact email for the property."},"phoneNumber":{"type":"string","description":"The contact phone number for the property."},"language":{"type":"string","maxLength":16,"description":"The primary language used by the property."},"latitude":{"type":"number","description":"The latitude coordinate of the property."},"longitude":{"type":"number","description":"The longitude coordinate of the property."},"checkinStartTime":{"type":"string","minLength":1,"maxLength":10,"description":"The earliest time guests can check in."},"checkinEndTime":{"type":"string","minLength":1,"maxLength":10,"description":"The latest time guests can check in."},"checkoutEndTime":{"type":"string","minLength":1,"maxLength":10,"description":"The latest time guests must check out."},"starRating":{"$ref":"#/components/schemas/StarRatings","description":"The star rating of the property."},"currency":{"type":"string","description":"The currency of the price"},"photo":{"$ref":"#/components/schemas/Photo","description":"A photo representing the property."},"amenities":{"type":"array","description":"Amenities that are available at this property","items":{"$ref":"#/components/schemas/TranslationText"}},"acceptedCardTypes":{"type":"array","description":"Credit card types accepted for payment at this property. Card type codes: AX (American Express), DN (Diners), DS (Discover), JC (JCB), MC (Mastercard), CU (China UnionPay), VI (Visa). When confirming a reservation, the card type provided must be in this list.","items":{"type":"string","enum":["AX","DN","DS","JC","MC","CU","VI"]},"minItems":1},"totalCommissionPercentage":{"type":"number","description":"The total commission percentage for bookings at this property. This represents the combined commission split between SiteMinder and the channel partner. Formula: `totalCommissionPercentage = siteminderCommissionPercentage + channelCommissionPercentage`"},"siteminderCommissionPercentage":{"type":"number","description":"SiteMinder's portion of the total commission percentage."},"channelCommissionPercentage":{"type":"number","description":"The channel partner's portion of the total commission percentage."},"rooms":{"type":"array","description":"Available rooms and their details.","items":{"type":"object","additionalProperties":false,"properties":{"roomRateUuid":{"type":"string","description":"Unique identifier for this room rate."},"roomTypeName":{"$ref":"#/components/schemas/TranslationText","description":"The name of the room type with language information."},"roomTypeDescription":{"$ref":"#/components/schemas/TranslationText","description":"A description of the room type with language information."},"ratePlanName":{"type":"string","description":"The name of the rate plan for this room. For Internal use only, not to be displayed to guests."},"breakfastIncluded":{"type":"boolean","description":"Indicates whether breakfast is included in the rate."},"roomArea":{"type":"string","description":"room area from room type with the unit of measurement","nullable":true},"photo":{"$ref":"#/components/schemas/Photo","description":"A photo of the room."},"amenities":{"type":"array","description":"Amenities that are available at this property","items":{"$ref":"#/components/schemas/TranslationText"}},"views":{"type":"array","description":"Views available from this room type (e.g., ocean view, city view, garden view, mountain view). Multiple views may be listed if the room type offers different view options. Each view is provided with language-specific translations.","items":{"$ref":"#/components/schemas/TranslationText"}},"bedConfigurations":{"type":"array","description":"Available bed configurations for this room type. Common bed types include: King, Queen, Double, Twin, Single, Sofa Bed, Bunk Bed. A room may have multiple bed types (e.g., 1 King + 1 Sofa Bed). Each bed type is provided with language-specific translations.","items":{"type":"object","additionalProperties":false,"properties":{"bedCode":{"$ref":"#/components/schemas/TranslationText","description":"The type of bed (e.g., \"King\", \"Queen\", \"Twin\") with language information."},"quantity":{"type":"number","minimum":1,"description":"The number of beds of this type in the room (e.g., 2 for \"2 Twin beds\")."}}}},"adults":{"type":"integer","description":"The number of adults this rate is for."},"children":{"type":"integer","description":"The number of children this rate is for."},"cancellationPolicy":{"$ref":"#/components/schemas/CancelationPolicy","description":"The cancellation policy for this room rate."},"prices":{"type":"array","description":"The pricing options for this room, including any applicable deals.","items":{"type":"object","additionalProperties":false,"properties":{"totalPrice":{"type":"number","minimum":0,"description":"The total price for the stay."},"dealCode":{"type":"string","description":"The code of any deal applied to this price."},"totalCommissionPercentage":{"type":"number","description":"The total commission percentage for this specific rate."},"siteminderCommissionPercentage":{"type":"number","description":"SiteMinder's portion of the commission for this rate."},"channelCommissionPercentage":{"type":"number","description":"The channel partner's portion of the commission for this rate."}},"required":["totalPrice","totalCommissionPercentage","siteminderCommissionPercentage","channelCommissionPercentage"]}},"rateType":{"type":"string","enum":["sell","net"],"description":"Indicates whether this is a sell rate or net rate."},"lowInventory":{"type":"boolean","description":"Indicates whether this room type has low inventory available. When `true`, only a few rooms remain for the specified dates, signaling scarcity to encourage booking. Use this flag to display urgency messaging (e.g., \"Only 2 rooms left!\") to guests."}},"required":["roomRateUuid","roomTypeName","ratePlanName","breakfastIncluded","adults","children","cancellationPolicy","rateType","prices","lowInventory"]}},"specialConditions":{"$ref":"#/components/schemas/SpecialConditions","description":"Special conditions that apply to this property."},"selfRated":{"type":"boolean","description":"Indicates if the rating is self-rated"}},"required":["uuid","name","address","state","country","phoneNumber","language","latitude","longitude","currency","checkinStartTime","checkoutEndTime","acceptedCardTypes","totalCommissionPercentage","siteminderCommissionPercentage","channelCommissionPercentage","rooms","specialConditions"]}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimitError"},"500":{"$ref":"#/components/responses/ServerError"}}}}},"components":{"parameters":{"SmApiId":{"name":"x-sm-api-id","description":"The api id for channel","required":true,"in":"header","schema":{"type":"string"}},"SmApiKey":{"name":"x-sm-api-key","description":"The api key for channel","required":true,"in":"header","schema":{"type":"string"}}},"schemas":{"TranslationText":{"type":"object","additionalProperties":false,"description":"Represents multilingual text content with language information. Used for property descriptions, amenities, room types, and other user-facing content.","properties":{"text":{"type":"string","description":"The translated text content in the specified language."},"language":{"type":"string","description":"ISO 639-1 language code indicating the language of the text. Supported languages: de (German), en (English), es (Spanish), fr (French), id (Indonesian), it (Italian), pt (Portuguese), th (Thai)."}},"required":["text","language"]},"StarRatings":{"type":"number","enum":[1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6]},"Photo":{"type":"object","additionalProperties":false,"properties":{"url":{"type":"string","format":"uri","description":"The photo url"},"captions":{"type":"string","description":"The photo's captions"}},"required":["url"]},"CancelationPolicy":{"type":"object","additionalProperties":false,"description":"Defines the cancellation policy for a reservation or rate. Policies can be either non-refundable or allow free cancellation up to a specified number of days before check-in.","properties":{"policyType":{"type":"string","enum":["non-refundable","free-cancellation"],"description":"The type of cancellation policy. 'non-refundable' means no refund will be provided regardless of when cancellation occurs. 'free-cancellation' allows cancellation without penalty up to the specified number of days before check-in."},"freeCancellationUntilDays":{"type":"number","nullable":true,"description":"Number of days before check-in when free cancellation is allowed. Only applicable when policyType is 'free-cancellation'. Null for non-refundable policies. For example, a value of 7 means guests can cancel up to 7 days before check-in without penalty."}},"required":["policyType"]},"SpecialConditions":{"type":"object","additionalProperties":false,"nullable":true,"description":"Special conditions or exemptions that apply to a property. These conditions may affect pricing, taxation, or booking requirements.","properties":{"taxExemptions":{"type":"array","description":"Array of tax exemptions applicable to this property. Tax exemptions affect how taxes are calculated and displayed in the booking flow.","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","enum":["is-nz-gst-opt-out"],"description":"The name/type of the tax exemption. 'is-nz-gst-opt-out' indicates the property has opted out of New Zealand GST collection."}},"required":["name"]}}},"required":["taxExemptions"]},"Error":{"type":"object","required":["errors"],"properties":{"errors":{"minItems":1,"type":"array","description":"An array of error objects, for most errors, this array would only contain one error object. An errors array must contain at least one error object.","items":{"type":"object","required":["code"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"meta":{"type":"object"}}}}}}},"responses":{"BadRequest":{"description":"Invalid request","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The specified resource was not found","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimitError":{"description":"The number of requests for the last 5 minutes window has reached the limit for the given channel","headers":{"ratelimit-policy":{"schema":{"type":"string"},"description":"Shows the number of request allowed per number of seconds window. e.g. '100;w=60' means 100 request in a 60 seconds window."},"ratelimit-limit":{"schema":{"type":"integer"},"description":"The number of requests allowed per window"},"ratelimit-remaining":{"schema":{"type":"integer"},"description":"The number of requests left for the time window."},"ratelimit-reset":{"schema":{"type":"integer"},"description":"The number of seconds left for the window to reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServerError":{"description":"Unexpected error occurred","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}
```

{% hint style="success" icon="sparkles" %}

## Still have questions?

Use the <i class="fa-gitbook-assistant">:gitbook-assistant:</i> **Ask** button at the top of the page to chat with our AI assistant — it can help you navigate the guide, understand requirements, and troubleshoot issues.

If you need more support, visit [Integration Support](/integration-support/integration-support.md).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.siteminder.com/channels-plus-api/reference/properties.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
