API Version 1.4
Introduction
Welcome to the AnyProp RESO Listings API documentation. Our API provides access to real estate listing data following the Real Estate Standards Organization (RESO) Web API standards. We utilize OData (Open Data Protocol) to offer a flexible and powerful querying capability for our data resources.
Authentication
All API calls (except the token endpoint) require a Bearer token in the Authorization header:
Authorization: Bearer your_access_tokenGetting an Access Token
Account Resources, Settings, and Permission
You can view account settings and permissions on the account/resources endpoint.
MLS Profiles
You can get mls profiles (including logos, disclaimers, and basic compliance elements).
Retrieve profiles for active MLSes (including logos, disclaimers, and basic compliance elements).
Successful response
Unauthorized
API Resources
The base URL for all listings API requests is:
Property Resource
Retrieve property listings with support for OData query options
OData filter expression
contains(PropertyType, 'Lease') or StandardStatus eq 'Active'Select specific fields
ListingId,BedroomsTotalOrder results by specified fields (append 'desc' for descending order)
ModificationTimestamp descExpand related entities
Media($select=MediaKey),OpenHouse($select=OpenHouseKey)Limit the number of results
10Skip number of results
0Ignore null fields and omit them from the results
falseExample: trueAllows groups and aggregates data by specified fields
groupby((OriginatingSystemName,ListingId))Successful response
Bad request
Unauthorized
Available $filter fields:
OriginatingSystemName, ModificationTimestamp, PhotosChangeTimestamp, StandardStatus, PropertyType, ListingId, ListOfficeMlsId, ListingKey, OnMarketTimestamp, ListingContractDate, OnMarketDate, ListPrice, OriginalListPrice, CloseDate, StatusChangeTimestamp, MlsStatus, City, PostalCode, PostalCodePlus4, StateOrProvince, StreetDirPrefix, StreetDirSuffix, StreetName, StreetNumber, StreetSuffix, UnitNumber, UnparsedAddress, ListAgentFullName, ListOfficeName, CoListAgentFullName, BuyerAgentFullName, CoBuyerAgentFullName, CoListOfficeName, BuyerOfficeName, CoBuyerOfficeName, BathroomsTotalInteger, PropertySubType, BathroomsPartial, BathroomsHalf, BathroomsFull, LotSizeArea, LotSizeSquareFeet, Latitude, Longitude, GarageYN, GarageSpaces, CarportYN, CarportSpaces, PoolPrivateYN, SeniorCommunityYN, AssociationYN, NewConstructionYN, BedroomsTotal, DaysOnMarket, YearBuiltEffective, YearBuilt, PhotosCount, LivingArea, SpecialListingConditions, CountyOrParish, ListOfficeName, RawLocation, Location
$expand options:
Media- Property media (join from the Media resource)OpenHouse- Property open houses (join from the OpenHouse resource)PropertyChange- (Non-RESO) Historical change tracking for property fields with old/new values and modification timestampsPreferredMedia- (Non-RESO) Optimized expand that returns the first 2 photos by media order, with priority given to the preferred photo (much faster than expanding Media)
Geospatial Filtering:
Supported via geo.distance on RawLocation or Location. Only le comparison is accepted (distance in meters):
Text Search:
The API supports fuzzy text matching using the search.text function. This feature allows you to search for properties using partial or incomplete text across multiple fields.
Address Search:
Search for properties using partial or incomplete addresses with the RawAddressSearchText field.
Note: This performs fuzzy text matching only; it is not a geocoding service.
Syntax:
Example:
Agent and Office Search:
Search for properties by agent, co-agent, office, or co-office names using search.text on the following fields. This search encompasses both listing and buyer agents, as well as their respective co-agents and offices:
ListAgentSearchText - Listing agent names
BuyerAgentSearchText - Buyer agent names
ListOfficeSearchText - Listing office names
BuyerOfficeSearchText - Buyer office names
Syntax:
Example:
Sorting by Relevance:
To sort results by the best match, use:
Complete Example:
Media Resource
Retrieve media resources with support for OData query options
OData filter expression
Order eq 1Select specific fields
MediaKey,OrderOrder results by specified fields (append 'desc' for descending order)
ModificationTimestamp descLimit the number of results
10Skip number of results
0Ignore null fields and omit them from the results
falseExample: trueAllows groups and aggregates data by specified fields
groupby((OriginatingSystemName,ListingId))Successful response
Bad request
Unauthorized
Available $filter fields:
OriginatingSystemName, ModificationTimestamp, MediaKey, MediaStatus, Order, MediaCategory, ResourceName, ResourceRecordKey, ResourceRecordID
Member Resource
Retrieve member data with support for OData query options
OData filter expression
contains(OriginatingSystemName, 'sample')Select specific fields
MemberMlsIdOrder results by specified fields (append 'desc' for descending order)
ModificationTimestamp descLimit the number of results
10Skip number of results
0Ignore null fields and omit them from the results
falseExample: trueAllows groups and aggregates data by specified fields
groupby((OriginatingSystemName,ListingId))Successful response
Bad request
Unauthorized
Available $filter fields:
OriginatingSystemName, ModificationTimestamp, MemberMlsId, MemberFullName, MemberStatus, MemberStateOrProvince, MemberStateLicense
Office Resource
Retrieve office data with support for OData query options
OData filter expression
contains(OriginatingSystemName, 'sample')Select specific fields
OfficeMlsIdOrder results by specified fields (append 'desc' for descending order)
ModificationTimestamp descLimit the number of results
10Skip number of results
0Ignore null fields and omit them from the results
falseExample: trueAllows groups and aggregates data by specified fields
groupby((OriginatingSystemName,ListingId))Successful response
Bad request
Unauthorized
Available $filter fields:
OriginatingSystemName, ModificationTimestamp, OfficeMlsId, OfficeName, OfficeStateOrProvince, OfficeStatus
OpenHouse Resource
Retrieve open house data with support for OData query options
OData filter expression
contains(OriginatingSystemName, 'sample')Select specific fields
OfficeMlsIdOrder results by specified fields (append 'desc' for descending order)
ModificationTimestamp descLimit the number of results
10Skip number of results
0Ignore null fields and omit them from the results
falseExample: trueAllows groups and aggregates data by specified fields
groupby((OriginatingSystemName,ListingId))Successful response
Bad request
Unauthorized
Available $filter fields:
OriginatingSystemName, ModificationTimestamp, OpenHouseKey, ListingId, OpenHouseDate
Query Parameters
OData Query Support
All resources support the following OData query parameters:
$filter: Filter results using OData filter expressions$select: Select specific fields to return$top: Limit the number of results (default: 500, max: 5000)$skip: Skip a number of results for pagination
Additionally, the Property resource supports:
$expand: Include related Media and OpenHouse data
Our API supports comprehensive OData filtering capabilities:
Comparison Operators
eq: Equal tone: Not equal togt: Greater thange: Greater than or equal tolt: Less thanle: Less than or equal to
Logical Operators
and: Both conditions must be trueor: Either condition must be truenot: Negates the condition
String Functions
contains(field, 'value'): Checks if field contains the specified valuestartswith(field, 'value'): Checks if field starts with the specified valueendswith(field, 'value'): Checks if field ends with the specified value
Example complex queries:
API Grouping Results
The OData API supports data aggregation using $apply=groupby(). Note that ALL grouping is case insensitive for string fields.
Syntax
Response Schema
The grouping response contains the following:
group
groupby: Field being grouped.
count: Total groups.
buckets: Array of group results.
key: Group value.
count: Items in the group.
group: Nested grouping (for multiple fields).
Example Response
Error Handling
All errors follow the standard OData format:
Last updated