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_token
Getting an Access Token
Get authentication token
post
Obtain an access token using your credentials
Body
usernamestringRequired
Your API username
passwordstring · passwordRequired
Your API password
Responses
200
Successful authentication
application/json
400
Invalid request
application/json
post
/v1/token
Account Resources, Settings, and Permission
You can view account settings and permissions on the account/resources endpoint.
Get account resources
get
Retrieve resources and permissions for the account
Authorizations
Responses
200
Successful response
application/json
401
Unauthorized
application/json
get
/v1/account/resources
MLS Profiles
You can get mls profiles (including logos, disclaimers, and basic compliance elements).
Get MLS profiles
get
Retrieve profiles for active MLSes (including logos, disclaimers, and basic compliance elements).
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Responses
200
Successful response
application/json
401
Unauthorized
application/json
get
/v1/listings/mls_profiles
API Resources
The base URL for all listings API requests is:
Property Resource
Get property listings
get
Retrieve property listings with support for OData query options
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
$filterstringOptional
OData filter expression
Example: contains(PropertyType, 'Lease') or StandardStatus eq 'Active'
$selectstringOptional
Select specific fields
Example: ListingId,BedroomsTotal
$orderbystringOptional
Order results by specified fields (append 'desc' for descending order)
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 timestamps
PreferredMedia - (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.
Syntax:
Parameters:
field - The search field to query (e.g., RawAddressSearchText, KeywordSearchText)
search terms - The text to search for (as a string)
min_matches (optional) - Required number of matching terms. For example, 2 means at least 2 of the tokenized search terms must match. To require all terms to match, use a large number like 1000 (values exceeding the token count are automatically capped).
Default behavior when min_matches is omitted:
RawAddressSearchText: Matches if at least 40% of terms match
All other fields: Strict matching (all terms must match)
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.
Example:
Agent and Office Search:
Search for properties by agent, co-agent, office, or co-office names using search.text on the following fields:
ListAgentSearchText - Listing agent names
BuyerAgentSearchText - Buyer agent names
ListOfficeSearchText - Listing office names
BuyerOfficeSearchText - Buyer office names
Example:
Keyword Search:
Search across listing remarks and descriptions using the KeywordSearchText field.
Fields included in search: ListingId, Appliances, ArchitecturalStyle, Heating, Cooling, InteriorFeatures, ParkingFeatures, PropertySubType, WaterfrontFeatures, View, PublicRemarks
Example:
Sorting by Relevance:
To sort results by the best match (using BM25), use:
Complete Example:
Internal Non-RESO Fields:
Useful fields derived internally that extend beyond the RESO standard:
anyprop_OriginalEntryTimestamp - Derived OriginalEntryTimestamp based on internal data
anyprop_DaysOnMarketReferenceTimestamp - Derived date used to calculate DaysOnMarket. The DaysOnMarket value is computed as: Current Time - anyprop_DaysOnMarketReferenceTimestamp. Available as a $filter field.
Media Resource
Get media resources
get
Retrieve media resources with support for OData query options
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
$filterstringOptional
OData filter expression
Example: Order eq 1
$selectstringOptional
Select specific fields
Example: MediaKey,Order
$orderbystringOptional
Order results by specified fields (append 'desc' for descending order)
Example: ModificationTimestamp desc
$topinteger · max: 25000Optional
Limit the number of results
Default: 10
$skipintegerOptional
Skip number of results
Default: 0
$ignorenullsbooleanOptional
Ignore null fields and omit them from the results
Default: falseExample: true
$applystringOptional
Allows groups and aggregates data by specified fields
GET /v1/listings/mls_profiles HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"profiles": {
"agsmls": {
"originating_system_name": "agsmls",
"originating_system_full_name": "aspen glenwood mls",
"disclaimer": "Copyright {{current_year}} Aspen Glenwood MLS. Information is provided exclusively for consumers' personal, non-commercial use and may not be used for any purpose other than to identify prospective properties consumers may be interested in purchasing. This information is deemed reliable but is not guaranteed accurate by the MLS.",
"mls_logo": "https://photos.anpcdn.com/assets/listings/mls-logo/agsmls-logo.png",
"current_year": "2025",
"required_update_frequency": "12 hours",
"required_update_frequency_hours": "12"
},
"chsmls": {
"originating_system_name": "chsmls",
"originating_system_full_name": "CHS Regional MLS",
"disclaimer": "Copyright {{current_year}} CHS Regional MLS. Information is provided exclusively for consumers' personal, non-commercial use and may not be used for any purpose other than to identify prospective properties consumers may be interested in purchasing. This information is deemed reliable but is not guaranteed accurate by the MLS.",
"mls_logo": "https://photos.anpcdn.com/assets/listings/mls-logo/chsmls-logo.png",
"current_year": "2025",
"required_update_frequency": "24 hours",
"required_update_frequency_hours": "24"
}
}
}
https://api.anyprop.com/v1/listings/data
GET /v1/listings/data/Property HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
# Search for addresses containing "100 Gold" (defaults to 40% match)
$filter=search.text(RawAddressSearchText,'100 Gold')
# Search for properties on Main Street (require all terms)
$filter=search.text(RawAddressSearchText,'Main Street',1000)
# Search for properties with listing agent "John Smith" (strict match)
$filter=search.text(ListAgentSearchText,'John Smith')
# Search for properties with buyer agent "Jane Doe"
$filter=search.text(BuyerAgentSearchText,'Jane Doe')
# Search for properties with listing office "Acme Realty"
$filter=search.text(ListOfficeSearchText,'Acme Realty')
# Search for properties mentioning "pool" and "renovated" (strict match)
$filter=search.text(KeywordSearchText,'pool renovated')
# Search for properties with at least one of these terms
$filter=search.text(KeywordSearchText,'waterfront dock boat',1)
$orderby=relevance desc
# Search for "100 Gold" and sort by best match
$filter=search.text(RawAddressSearchText,'100 Gold')&$orderby=relevance desc
GET /v1/listings/data/Media HTTP/1.1
Host: api.anyprop.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*