UtahRealEstate.com

Data Services

Log In

Query Options

Query Options

$select

The $select query option can be used to request limited fields in the results set.

https://resoapi.utahrealestate.com/reso/odata/Property?$select=ListingKey,ListPrice,YearBuilt

GET /reso/odata/Property?$select=ListingKey,ListPrice,YearBuilt HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Response:

{
    "@odata.context": "$metadata#Property(ListPrice,YearBuilt,ListingKey)",
    "value": [
        {
            "ListPrice": 222500.0,
            "YearBuilt": 1964,
            "ListingKey": "543141"
        },
        {
            "ListPrice": 265000.0,
            "YearBuilt": 1977,
            "ListingKey": "549289"
        },
        {
            "ListPrice": 450000.0,
            "YearBuilt": 1956,
            "ListingKey": "1622752"
        },
        ..........

$filter

Each resource can be filtered on various fields and data types using the $filter query option.

Properties with more than 3 bedrooms (Number):

https://resoapi.utahrealestate.com/reso/odata/Property?$filter=BedroomsTotal gt 3

GET /reso/odata/Property?$filter=BedroomsTotal%20gt%203 HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Properties in the price range 300,000 - 500,000 (Decimal):

https://resoapi.utahrealestate.com/reso/odata/Property?$filter=ListPrice ge 300000 and ListPrice le 500000

GET /reso/odata/Property?$filter=ListPrice%20ge%20300000%20and%20ListPrice%20le%20500000 HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Properties that have air conditioning (Boolean):

https://resoapi.utahrealestate.com/reso/odata/Property?$filter=CoolingYN eq true

GET /reso/odata/Property?$filter=CoolingYN%20eq%20true HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Properties listed since a given date (Date):

https://resoapi.utahrealestate.com/reso/odata/Property?$filter=ListingContractDate gt 2018-01-01

GET /reso/odata/Property?$filter=ListingContractDate%20gt%202018-01-01 HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Properties updated since a given date (Timestamp):

https://resoapi.utahrealestate.com/reso/odata/Property?$filter=ModificationTimestamp gt 2019-09-01T01:00:00Z

GET /reso/odata/Property?$filter=ModificationTimestamp%20gt%202019-09-01T01:00:00Z HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Properties with Active status (Single Lookup):

https://resoapi.utahrealestate.com/reso/odata/Property?$filter=StandardStatus has Odata.Models.StandardStatus'Active'

GET /reso/odata/Property?$filter=StandardStatus%20has%20Odata.Models.StandardStatus'Active' HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Properties with certain exterior features ExteriorFeatures (Multi Lookup):

https://resoapi.utahrealestate.com/reso/odata/Property?$filter=ExteriorFeatures%20has%20Odata.Models.ExteriorFeatures'Balcony'

GET /reso/odata/Property?$filter=ExteriorFeatures%20has%20Odata.Models.ExteriorFeatures'Balcony' HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

$top and $skip

The web API has a limit on how many records can be pulled at once. Currently, the limit is set to 200 records per request.

The $top and $skip query options can be used to offset the result set.

For example, to get the 600 most recent listings, make 3 requests using $top and $skip:

https://resoapi.utahrealestate.com/reso/odata/Property?$orderby=ModificationTimestamp desc&$top=200

https://resoapi.utahrealestate.com/reso/odata/Property?$orderby=ModificationTimestamp desc&$top=200&$skip=200

https://resoapi.utahrealestate.com/reso/odata/Property?$orderby=ModificationTimestamp desc&$top=200&$skip=400

GET /reso/odata/Property?$orderby=ModificationTimestamp%20desc&$top=200 HTTP/1.1
GET /reso/odata/Property?$orderby=ModificationTimestamp%20desc&$top=200&$skip=200 HTTP/1.1
GET /reso/odata/Property?$orderby=ModificationTimestamp%20desc&$top=200&$skip=400 HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Using the $skip option to paginate over large data sets can be time consuming. Especially when ordering by a non numeric, or non indexed field. As the $skip value gets larger, query response time may slow down. If paginating through a large data set, it is advised to order by the primary key, or an indexed field. For example, if replicating the entire Property resource, ordering by ListingKeyNumeric would be the fastest. See the Replication section for more information.

$count

The total number of records for a given resource can be included in the result set by using the $count option.

https://resoapi.utahrealestate.com/reso/odata/Property?$count=true

GET /reso/odata/Property?$count=true HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Response:

{
    "@odata.context": "$metadata#Property",
    "@odata.count": 1731072,
    "value": [
        {
        ..........

$expand

The web API can return related resources with each record using the $expand query option.

For example, to get all images for each property in addition to the data:

https://resoapi.utahrealestate.com/reso/odata/Property?$expand=Media

GET /reso/odata/Property?$expand=Media HTTP/1.1
Host: https://resoapi.utahrealestate.com
Authorization: YourBearerToken

Response:

"{
    "@odata.context": "$metadata#Property",
    value": [
        {
            "ListingKeyNumeric": 1723791,
            "AssociationFee": 0,
            "RoomsTotal": 18,
            ..........
            "Media": [
                {
                    "Order": 1,
                    "ResourceRecordKeyNumeric": 1723791
                    "ResourceRecordID": "1723791",
                    "ResourceRecordKey": "1723791",
                    "LongDescription": "",
                    "MediaURL": "https://.....jpg",
                    ..........