REALTY-DATA.
ApiResoOdataProperty

RESO Property entity set

GET
/reso/odata/Property

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
x-api-key<token>

Customer API key, verified by the edge authorizer before any route runs. Unauthorized requests are rejected at the edge boundary.

In: header

Query Parameters

placekey?string

Return every entitled source listing attached to this canonical Placekey.

Length1 <= length <= 256
$select?string

Comma-separated fields to return, or * for every entitlement-visible field

$filter?string

RESO/OData expression over the complete Property field catalog

$orderby?string

Comma-separated stable ordering; ListingKey is appended as a tie-breaker

$top?integer

Page size from 0 through 1000 (500 when $expand is used)

Range0 <= value <= 1000
Default100
$skip?integer

Compatibility offset paging up to 10,000 rows; use $skiptoken from @odata.nextLink for deeper traversal

Range0 <= value <= 10000
$skiptoken?string

Opaque continuation copied from @odata.nextLink

Lengthlength <= 2048
$expand?string

Comma-separated sibling collections to inline. Allowed values: Media, OpenHouse. Capped at $top 500 when present.

$count?boolean

Include the total matching row count in @odata.count

$ignorenulls?boolean

Omit null-valued properties from each entity

$ignorecase?boolean

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"}