List Properties
Retrieve your full property catalog from every connected PMS in a single, normalized API call.
When to use this endpoint
- Sync your property catalog into your own database
- Build a property picker or search dropdown for a booking widget
- Populate a calendar view with all available listings
- Generate a property directory or portfolio page
Need property details?
GET /v1/properties/:id to fetch a single property with full details including custom fields, photos, and amenities.List properties
/v1/propertiescurl "https://api.repull.dev/v1/properties?limit=20&status=ACTIVE" \ -H "Authorization: Bearer sk_test_YOUR_KEY"
Query parameters
limitintegerDefault: 50Maximum number of results to return.
offsetintegerDefault: 0Number of results to skip for pagination.
statusstringFilter by property status.
ACTIVE INACTIVE DRAFTResponse format
Returns a paginated array of property objects.
{
"data": [
{
"id": "123",
"name": "Oceanview Villa",
"publicName": "Stunning Oceanview Villa",
"status": "ACTIVE",
"address": {
"line1": "123 Beach Rd",
"city": "Malibu",
"state": "CA",
"country": "US",
"postalCode": "90265"
},
"location": {
"latitude": 34.025,
"longitude": -118.779
},
"bedrooms": 3,
"bathrooms": 2,
"maxGuests": 8,
"thumbnail": "https://images.example.com/villa-123.jpg",
"currency": "USD",
"createdAt": "2026-01-15T10:00:00Z"
}
],
"pagination": {
"total": 12,
"limit": 50,
"offset": 0,
"hasMore": false
}
}Response fields
idstringUnique property identifier.
namestringInternal property name.
publicNamestringGuest-facing display name.
statusstringCurrent status: ACTIVE, INACTIVE, or DRAFT.
addressobjectProperty address.
locationobjectGeographic coordinates.
bedroomsintegerNumber of bedrooms.
bathroomsintegerNumber of bathrooms.
maxGuestsintegerMaximum occupancy.
thumbnailstringnullableURL of the primary listing photo.
currencystringDefault currency for this property (ISO 4217).
createdAtstringISO 8601 timestamp when the property was created.
Filtering examples
Active properties only
curl "https://api.repull.dev/v1/properties?status=ACTIVE" \ -H "Authorization: Bearer sk_test_YOUR_KEY"
Paginate through all properties
curl "https://api.repull.dev/v1/properties?limit=10&offset=10" \ -H "Authorization: Bearer sk_test_YOUR_KEY"
Pagination
Results are paginated using limit and offset. The response includes a pagination object with the total count and whether more results exist.
// Page through all properties
let offset = 0;
const limit = 20;
let hasMore = true;
while (hasMore) {
const { data, pagination } = await repull.properties.list({ limit, offset });
for (const property of data) {
await syncProperty(property);
}
hasMore = pagination.hasMore;
offset += limit;
}API Reference
See the complete Properties API Reference for all endpoints including get, create, and update.