Home/Developers

API Documentation

Build custom availability displays with real-time property and unit data.

Introduction

The Rent IQ Availability API provides real-time access to property and unit availability data. Use it to build custom availability displays, search interfaces, and integrations for rental apartment websites.

All endpoints return JSON responses with pre-formatted display values (like rent) and raw values (like rent_numeric) for filtering and sorting.

Base URL

https://api.rentiq.com/api/v1/

Authentication

No authentication required. All availability endpoints are public.

The API uses CORS with origin reflection, meaning any website can make requests directly from the browser. No API keys needed.

Rate Limits & Caching

Rate Limits

LimitValue
Requests per IP500 per 15 minutes
ResponseHTTP 429 with message when exceeded

Caching

API responses are cached for 1 hour. When availability data is updated in Rent IQ, caches are automatically invalidated.

For real-time accuracy: Data reflects what's in the Rent IQ dashboard, updated within seconds of changes.

Filtering

Filter available units server-side using query parameters. All filters use AND logic—units must match all specified criteria.

Unit Filters

These parameters work on all endpoints that return available units.

bedroomsnumber

Exact bedroom count (e.g., 2)

min_bedroomsnumber

Minimum number of bedrooms

max_bedroomsnumber

Maximum number of bedrooms

min_rentnumber

Minimum rent amount

max_rentnumber

Maximum rent amount

available_beforestring

Units available by date (YYYY-MM-DD)

available_nowboolean

Only units available immediately (true/false)

has_denboolean

Filter by den (true/false)

min_sqftnumber

Minimum square footage

max_sqftnumber

Maximum square footage

Geographic Filters

These parameters work on organization-level endpoints for map-based searches.

min_latnumber

Bounding box south latitude (-90 to 90)

max_latnumber

Bounding box north latitude (-90 to 90)

min_lngnumber

Bounding box west longitude (-180 to 180)

max_lngnumber

Bounding box east longitude (-180 to 180)

citystring

Filter by city name (case-insensitive exact match)

Example: Filtered Request

bash
GET https://api.rentiq.com/api/v1/properties/prop_RcXoDugMVpB9/units/available?bedrooms=2&max_rent=2500&available_now=true

Returns only 2-bedroom units under $2,500/month that are available immediately.

Map Integration

Build interactive map-based property searches using the geographic filtering parameters. The API returns latitude and longitude for each property, and accepts bounding box coordinates to filter results to a map viewport.

Bounding Box Filtering

When users pan or zoom a map, fetch only properties within the visible area:

map-integration.js
// Update results when map viewport changes
map.on('moveend', async () => {
const bounds = map.getBounds();
const response = await fetch(
`https://api.rentiq.com/api/v1/properties-by-organization/summit-properties/all-with-available-units?` +
`min_lat=${bounds.getSouth()}&max_lat=${bounds.getNorth()}&` +
`min_lng=${bounds.getWest()}&max_lng=${bounds.getEast()}`
);
const data = await response.json();
// Clear existing markers and add new ones
markers.forEach(m => m.remove());
markers = data.properties.map(property => {
return new mapboxgl.Marker()
.setLngLat([property.longitude, property.latitude])
.setPopup(new mapboxgl.Popup().setHTML(`
<h3>${property.name}</h3>
<p>${property.total_available_units} units available</p>
`))
.addTo(map);
});
});

Combining Filters with Map Search

Combine geographic and unit filters for powerful search experiences:

filtered-map-search.js
// Search for 2+ bedroom units under $2,500 in the current map view
async function searchUnits(bounds, filters) {
const params = new URLSearchParams({
min_lat: bounds.getSouth(),
max_lat: bounds.getNorth(),
min_lng: bounds.getWest(),
max_lng: bounds.getEast(),
...filters
});
const response = await fetch(
`https://api.rentiq.com/api/v1/properties-by-organization/summit-properties/units/available?${params}`
);
return response.json();
}
// Usage
const results = await searchUnits(map.getBounds(), {
min_bedrooms: 2,
max_rent: 2500
});
console.log(`Found ${results.units.length} matching units`);

Recommended Endpoints for Maps

  • Property markers with unit counts: Use /all-with-available-units
  • Flat unit list for search results: Use /units/available

Property Endpoints

These endpoints return data for a single property.

Get Available Units

GET/properties/{public_id}/units/available

Returns all available units for a property with optional sorting.

Path Parameters

public_idstring

Property identifier (format: prop_XXXXXXXXXX)

Query Parameters

sortstringdefault: unit_type

Sort order: unit_type or suite_number

Example Request

bash
GET https://api.rentiq.com/api/v1/properties/prop_RcXoDugMVpB9/units/available?sort=unit_type

Example Response

json
{
"units": [
{
"id": "unt_q9zmVHPufZGr",
"suite_number": "110",
"indoor_square_feet": 700,
"outdoor_square_feet": 50,
"unit_size": "700 sf",
"floorplan_url": "https://cdn.rentiq.com/.../1br-fp-1.webp",
"unit_type": "1 Bedroom",
"bedrooms": 1,
"bathrooms": 1,
"has_den": false,
"availability": "Available Nov 28, 2025",
"available_date": "2025-11-28",
"rent": "$2,100 / month",
"rent_numeric": 2100
}
]
}

Response Fields

idstring

Unit identifier

suite_numberstring

Unit/suite number

indoor_square_feetnumber

Interior square footage

outdoor_square_feetnumber

Balcony/outdoor square footage (nullable)

unit_sizestring

Formatted square footage (e.g., "700 sf")

floorplan_urlstring

URL to floorplan image (nullable)

unit_typestring

Display name (e.g., "1 Bedroom", "2 Bedroom + Den")

bedroomsnumber

Number of bedrooms

bathroomsnumber

Number of bathrooms

has_denboolean

Whether unit has a den

availabilitystring

Human-readable availability ("Available Now" or "Available [Date]")

available_datestring

ISO date (YYYY-MM-DD) for filtering/sorting

rentstring

Formatted rent (e.g., "$2,100 / month")

rent_numericnumber

Numeric rent value for filtering/sorting

Get Unit Types

GET/properties/{public_id}/unit-types

Returns unit types with availability summary and starting rents.

Path Parameters

public_idstring

Property identifier (format: prop_XXXXXXXXXX)

Example Request

bash
GET https://api.rentiq.com/api/v1/properties/prop_RcXoDugMVpB9/unit-types

Example Response

json
{
"unit_types": [
{
"unit_type": "0br",
"display_name": "Studio",
"unit_type_for_url": "studio",
"has_availability": false,
"availability": "No availability"
},
{
"unit_type": "1br",
"display_name": "1 Bedroom",
"unit_type_for_url": "1-bedroom",
"has_availability": true,
"availability": "from $2,150"
}
]
}

Response Fields

unit_typestring

Internal unit type code

display_namestring

Human-readable name

unit_type_for_urlstring

URL-safe slug for routing

has_availabilityboolean

Whether any units are available

availabilitystring

Starting rent or "No availability"

Get Units by Floorplan

GET/properties/{public_id}/units/available-by-floorplan

Returns available units grouped by floorplan.

Path Parameters

public_idstring

Property identifier

Query Parameters

sortstringdefault: square_feet

Sort order: square_feet or floorplan_name

Example Request

bash
GET https://api.rentiq.com/api/v1/properties/prop_RcXoDugMVpB9/units/available-by-floorplan

Example Response

json
{
"floorplans": [
{
"id": "flp_WdjdauSXUJCd",
"name": "1br-fp-1-jpg-1735483198492.webp",
"display_name": "1br-fp-1.jpg",
"floorplan_url": "https://cdn.rentiq.com/.../1br-fp-1.webp",
"square_feet": 700,
"available_unit_count": 2,
"units": [
{
"id": "unt_q9zmVHPufZGr",
"suite_number": "110",
"indoor_square_feet": 700,
"unit_type": "1 Bedroom",
"rent": "$2,100 / month",
"rent_numeric": 2100
}
]
}
]
}
Note: Units nested within floorplans do not include floorplan_url since it's already provided at the floorplan level.

Get Floorplan Starting Rents

GET/properties/{public_id}/floorplans/starting-rents

Returns floorplans with starting rent information.

Path Parameters

public_idstring

Property identifier

Example Request

bash
GET https://api.rentiq.com/api/v1/properties/prop_RcXoDugMVpB9/floorplans/starting-rents

Example Response

json
{
"floorplans": [
{
"id": "flp_WdjdauSXUJCd",
"name": "1br-fp-1-jpg-1735483198492.webp",
"display_name": "1br-fp-1.jpg",
"floorplan_url": "https://cdn.rentiq.com/.../1br-fp-1.webp",
"starting_rent": 2100,
"starting_rent_formatted": "$2,100 / month",
"unit_count": 2,
"unit_type": "1 Bedroom",
"square_feet": 700
}
]
}

Organization Endpoints

These endpoints return data across all properties in an organization. Useful for portfolio websites, map views, and multi-property search.

All Properties with Available Units

GET/properties-by-organization/{organization_slug}/all-with-available-units

Returns all properties in an organization with their available units. Includes latitude/longitude for map-based displays.

Path Parameters

organization_slugstring

Organization identifier (URL slug)

Query Parameters

sortstringdefault: unit_type

Sort order for units: unit_type or suite_number

Example Request

bash
GET https://api.rentiq.com/api/v1/properties-by-organization/summit-properties/all-with-available-units

Example Response

json
{
"properties": [
{
"id": "prop_RcXoDugMVpB9",
"slug": "riverview-residences",
"name": "Riverview Residences",
"address": "177 St. George Street, Toronto, ON",
"city": "Toronto",
"latitude": 43.6711115,
"longitude": -79.4009454,
"images": [
{
"url": "https://cdn.rentiq.com/.../photo1.webp",
"width": 1920,
"height": 1080
}
],
"total_available_units": 4,
"available_units": [...]
}
]
}

All Properties with Starting Rents

GET/properties-by-organization/{organization_slug}/all-with-starting-rents

Returns all properties with unit type pricing summary. Great for property listing pages.

Path Parameters

organization_slugstring

Organization identifier

Example Request

bash
GET https://api.rentiq.com/api/v1/properties-by-organization/summit-properties/all-with-starting-rents

Example Response

json
{
"properties": [
{
"id": "prop_RcXoDugMVpB9",
"name": "Riverview Residences",
"address": "177 St. George Street Toronto, ON M5R 2M5",
"city": "Toronto",
"unit_types": [
{
"unit_type": "1br",
"display_name": "1 Bedroom",
"unit_type_for_url": "1-bedroom",
"has_availability": true,
"available_count": 2,
"starting_rent": 2100,
"starting_rent_formatted": "from $2,100"
}
]
}
]
}

All Properties (Minimal)

GET/properties-by-organization/{organization_slug}/all

Returns basic property information with minimal payload. Optimized for dropdowns, navigation, and form autofill.

Path Parameters

organization_slugstring

Organization identifier

Example Request

bash
GET https://api.rentiq.com/api/v1/properties-by-organization/summit-properties/all

Example Response

json
{
"properties": [
{
"id": "prop_RcXoDugMVpB9",
"slug": "riverview-residences",
"name": "Riverview Residences",
"address": "177 St. George Street, Toronto, ON",
"street_address": "177 St. George Street",
"city": "Toronto",
"province_state": "ON",
"postal_zip_code": "M5R 2M5"
}
]
}

All Units (Flat List)

GET/properties-by-organization/{organization_slug}/units/available

Returns a flat list of all available units across all properties. Ideal for search interfaces and map-based displays where you need units with their property information attached.

Path Parameters

organization_slugstring

Organization identifier (URL slug)

Query Parameters

sortstringdefault: unit_type

Sort order: unit_type or suite_number

bedroomsnumber

Exact bedroom count

min_rentnumber

Minimum rent

max_rentnumber

Maximum rent

min_lat / max_lat / min_lng / max_lngnumber

Bounding box for map filtering

citystring

Filter by city (case-insensitive)

Example Request

bash
GET https://api.rentiq.com/api/v1/properties-by-organization/summit-properties/units/available?bedrooms=2&max_rent=2500

Example Response

json
{
"units": [
{
"id": "unt_q9zmVHPufZGr",
"suite_number": "110",
"property_id": "prop_RcXoDugMVpB9",
"property_name": "Riverview Residences",
"property_slug": "riverview-residences",
"property_address": "177 St. George Street, Toronto, ON",
"city": "Toronto",
"latitude": 43.6711115,
"longitude": -79.4009454,
"indoor_square_feet": 850,
"unit_size": "850 sf",
"unit_type": "2 Bedroom",
"bedrooms": 2,
"bathrooms": 1,
"has_den": false,
"availability": "Available Now",
"available_date": "2025-01-15",
"rent": "$2,300 / month",
"rent_numeric": 2300
}
]
}

Response Fields

idstring

Unit identifier

suite_numberstring

Unit/suite number

property_idstring

Property identifier

property_namestring

Property name

property_slugstring

Property URL slug

property_addressstring

Formatted property address

citystring

Property city

latitudenumber

Property latitude

longitudenumber

Property longitude

indoor_square_feetnumber

Interior square footage

unit_sizestring

Formatted square footage (e.g., "700 sf")

unit_typestring

Display name (e.g., "1 Bedroom")

bedroomsnumber

Number of bedrooms

bathroomsnumber

Number of bathrooms

has_denboolean

Whether unit has a den

availabilitystring

Human-readable availability

available_datestring

ISO date (YYYY-MM-DD)

rentstring

Formatted rent (e.g., "$2,100 / month")

rent_numericnumber

Numeric rent value

Note: Supports all unit filters and geographic filters. Each unit includes its property details, making this ideal for search results where you need to display property info alongside unit details.

Error Handling

HTTP Status Codes

CodeMeaning
200Success
400Bad request (invalid parameters)
404Property or organization not found
429Rate limit exceeded
500Server error

Error Response Format

json
{
"message": "Invalid property ID format"
}

Common Errors

"Invalid property ID format"

Cause: Property ID doesn't match prop_XXXXXXXXXX pattern

Solution: Verify the property ID from your Rent IQ dashboard

"Property not found"

Cause: Property ID is valid format but doesn't exist

Solution: Check if property is active in Rent IQ

"Organization not found"

Cause: Organization slug doesn't exist

Solution: Verify the organization slug

"Invalid sort parameter"

Cause: Sort value not in allowed list

Solution: Use documented sort values

Code Examples

Ready-to-use code examples for common platforms. All examples include error handling and use the data.units response format.

Note: These examples use demo identifiers (prop_RcXoDugMVpB9 and summit-properties). Replace these with your actual property ID and organization slug from your Rent IQ dashboard.

fetch-units.js
// Fetch available units for a property
async function getAvailableUnits(propertyId) {
const response = await fetch(
`https://api.rentiq.com/api/v1/properties/${propertyId}/units/available`
);
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
const data = await response.json();
return data.units;
}
// Usage
const units = await getAvailableUnits('prop_RcXoDugMVpB9');
console.log(`Found ${units.length} available units`);

Server-Side Filtering Example

Use query parameters for efficient server-side filtering:

search-units.js
// Search for units with server-side filtering
async function searchUnits(propertyId, filters) {
const params = new URLSearchParams();
if (filters.bedrooms) params.set('bedrooms', filters.bedrooms);
if (filters.maxRent) params.set('max_rent', filters.maxRent);
if (filters.availableNow) params.set('available_now', 'true');
if (filters.hasDen) params.set('has_den', 'true');
const response = await fetch(
`https://api.rentiq.com/api/v1/properties/${propertyId}/units/available?${params}`
);
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
const data = await response.json();
return data.units;
}
// Find 2-bedroom units under $2,500/month available now
const results = await searchUnits('prop_RcXoDugMVpB9', {
bedrooms: 2,
maxRent: 2500,
availableNow: true
});
console.log(`Found ${results.length} matching units`);

Getting Started

For Rent IQ Customers

Your property IDs and organization slug are available in your Rent IQ dashboard:

  1. 1. Log in to your Rent IQ dashboard
  2. 2. Navigate to Properties
  3. 3. Property ID is shown in the URL or property details
  4. 4. Organization slug is your account's URL identifier

For Agency Partners

Contact your Rent IQ account representative or the property manager to obtain:

  1. 1. Property IDs for properties you're building for
  2. 2. Organization slug for portfolio-wide integrations

Support

Technical questions: support@rentiq.com

Partnership inquiries: partners@rentiq.com

Need Help With Your Integration?

Our team can help you get started with custom implementations.

Contact Us