REALTY-DATA.
Property APIGuides

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 desc
GET /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

OptionPurposeContract
$selectReturn only named fieldsEvery name must exist in the 946-field multi-source catalog.
$filterRestrict recordsComparisons, boolean logic, in, has, text, collection, and geospatial functions.
$orderbyStable orderingListingKey asc is appended as a deterministic tie-breaker.
$topPage sizeDefault 100, maximum 1,000; maximum 500 with $expand.
$skipCompatibility offset pagingMaximum 10,000; use the $skiptoken from @odata.nextLink for deeper traversal and never combine the two.
$skiptokenContinuation pagingOpaque state returned in @odata.nextLink.
$countInclude total countSet $count=true.
$ignorenullsOmit null-valued propertiesSet $ignorenulls=true for sparse responses.
$ignorecaseCase-insensitive text matchingApplies to supported text comparisons.
placekeyFind all listings for one propertyRealty 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.

Integration recipes

On this page