Query properties with OData
Filter, project, order, and page through the complete entitled Property collection
The Property collection is the flexible integration surface for listing search, ListingKey lookup, synchronization, and bulk traversal. “All properties” means every record allowed by your entitlement, returned one page at a time.
Start with a compact query
GET /reso/odata/Property?$select=ListingKey,ListingId,OriginatingSystemName,StandardStatus,ListPrice&$filter=StandardStatus eq 'Active'&$top=100&$ignorenulls=true
x-api-key: YOUR_API_KEY{
"@odata.context": "https://api.example.invalid/reso/odata/$metadata#Property",
"value": [
{
"ListingKey": "130720008079957678492",
"ListingId": "A1234567",
"OriginatingSystemName": "ExampleMLS",
"StandardStatus": "Active",
"ListPrice": 725000
}
],
"@odata.nextLink": "https://api.example.invalid/reso/odata/Property?...&$skiptoken=OPAQUE"
}Follow the returned @odata.nextLink exactly until it is absent. Do not build, decode, or edit $skiptoken yourself.
Find a specific listing
Return every entitled listing record attached to one canonical property.
placekey is a Realty collection extension and composes with the standard
OData options.
GET /reso/odata/Property?placekey=223-227@5vg-82n-pgk&$select=ListingKey,ListingId,OriginatingSystemName,StandardStatus,ListPrice,ModificationTimestamp&$orderby=ModificationTimestamp descGET /reso/odata/Property?$filter=ListingKey eq '130720008079957678492'Pair ListingId with its originating system because listing numbers are not
globally unique.
GET /reso/odata/Property?$filter=OriginatingSystemName eq 'ExampleMLS' and ListingId eq 'A1234567'GET /reso/odata/Property?$filter=UniversalPropertyId eq 'example-value'GET /reso/odata/Property?$filter=ListingKey in ('key-1','key-2','key-3')Supported query options
| Option | Purpose | Contract |
|---|---|---|
$select | Return only named fields | Every name must exist in the 946-field multi-source catalog. |
$filter | Restrict records | Comparisons, boolean logic, in, has, text, collection, and geospatial functions. |
$orderby | Stable ordering | ListingKey asc is appended as a deterministic tie-breaker. |
$top | Page size | Default 100, maximum 1,000; maximum 500 with $expand. |
$skip | Compatibility offset paging | Maximum 10,000; use the $skiptoken from @odata.nextLink for deeper traversal and never combine the two. |
$skiptoken | Continuation paging | Opaque state returned in @odata.nextLink. |
$count | Include total count | Set $count=true. |
$ignorenulls | Omit null-valued properties | Set $ignorenulls=true for sparse responses. |
$ignorecase | Case-insensitive text matching | Applies to supported text comparisons. |
placekey | Find all listings for one property | Realty extension; accepts one canonical Placekey and still supports $select, $filter, paging, and count. |
One property can have many listings
GET /v1/properties/{id} returns the current canonical property record. Use
the OData collection with placekey when you need every listing associated
with that identity, including historical, active, sale, lease, and records
from multiple originating systems visible to your entitlement.