RESO Property entity set
The RESO Property entity set. Supports the OData system query options $select (choose fields, or * for every entitlement-visible field), $filter (restrict rows), $top (page size), $skip (offset) / $skiptoken (opaque continuation via @odata.nextLink), $count (include the total via @odata.count), and $orderby (sort), per the RESO Web API 2.0 contract. $expand inlines the Media and OpenHouse sibling collections (page size is capped at 500 when used). The Realty extension placekey restricts the collection to every source listing attached to one canonical property. Responses carry the OData-Version: 4.0 header.
Row access is entitlement-scoped: the feed returns only records within your entitlement. The field catalog is fixed by the EDMX at $metadata. Errors use the OData error envelope — an error object carrying code and message — rather than the JSON API's flat contract.
Under $count=true the full match count is returned in both @odata.count and @odata.totalCount; on keyset ($skiptoken) pages the count stays the full total, not the remaining rows. C1 emits @odata.count as the page size; this API keeps the OData-standard total and mirrors it in @odata.totalCount for C1-portability. Collection responses always carry a group array (empty until $apply=groupby aggregation is offered).
Authorization
gatewayApiKey Customer API key, verified by the edge authorizer before any route runs. Unauthorized requests are rejected at the edge boundary.
In: header
Query Parameters
Return every entitled source listing attached to this canonical Placekey.
1 <= length <= 256Comma-separated fields to return, or * for every entitlement-visible field
RESO/OData expression over the complete Property field catalog
Comma-separated stable ordering; ListingKey is appended as a tie-breaker
Page size from 0 through 1000 (500 when $expand is used)
0 <= value <= 1000100Compatibility offset paging up to 10,000 rows; use $skiptoken from @odata.nextLink for deeper traversal
0 <= value <= 10000Opaque continuation copied from @odata.nextLink
length <= 2048Comma-separated sibling collections to inline. Allowed values: Media, OpenHouse. Capped at $top 500 when present.
Include the total matching row count in @odata.count
Omit null-valued properties from each entity
Use case-insensitive matching for supported text filters
Response Body
application/json
curl -X GET "https://example.com/reso/odata/Property"{ "@odata.context": "https://api.example.invalid/reso/odata/$metadata#Property", "@odata.count": 1, "@odata.totalCount": 1, "value": [ { "ListingKey": "130720008079957678492", "ListingId": "A1234567", "OriginatingSystemName": "ExampleMLS", "StandardStatus": "Active", "ListPrice": 895000, "ModificationTimestamp": "2026-07-22T14:30:00Z" } ], "group": [], "@realty.buildId": "reso-property-20260722-1430", "@realty.asOf": "2026-07-22T14:30:00Z"}