>POST https://werx.retsrabbit.com/api/oauth/access_token?
grant_type=client_credentials&
client_id=<your client id>&
client_secret=<your client secret>
DATA RABBIT API DOCUMENTATION
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
>
Data Rabbit API is a robust real estate data solution designed to make working with real estate data easy and predictable for the average agent, broker, and developer.
Author: APC
API Version :
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
.
,
https://werx.retsrabbit.com/api
>https://werx.retsrabbit.com/api/datasystem
GETTING STARTED
https://werx.retsrabbit.com/api/datasystem
>
The Data Rabbit API is organized to conform to the OData v
,
{ "@odata.context": "api/$metadata", "ID": 1, "Name": "Rets Rabbit", "SeviceURI": "/api/v2", "DateTimeStamp": "2016-06-06 7:06pm", "Transport": 1.4, "DataDictionaryVersion": 1.4, "Resources": [ { "Name": "Property", "ResourcePath": "/api/v2/property", "Description": "RESO Standard Property Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] }, { "Name": "Media", "ResourcePath": "/api/v2/media", "Description": "RESO Standard Media Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] } ] }
.
,
https://werx.retsrabbit.com/api
standard. It is meant to be compliant with the RESO Web API standards (http://www.reso.org/reso-web-api/).
The Data Rabbit API is organized around REST. We designed the API so it will have predictable, resource-oriented URLs and use HTTP response codes for all responses (even errors). All responses will be returned as JSON, including errors.
Standard Data Rabbit API endpoint
,
https://werx.retsrabbit.com/api
> >
https://werx.retsrabbit.com/api/datasystem
Getting an access token
https://werx.retsrabbit.com/api/datasystem
>
We use oAuth
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
.
,
https://werx.retsrabbit.com/api
for authentication and authorization. To get an access code, send a POST request to /oauth/access_token.
Standard API endpoint
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
>
All requests must be made over SSL (https). KEEP YOUR CLIENT ID & SECRET PRIVATE, do not share with anyone. After sending the request you should get an access token back.
Getting the access_token back in a request
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
>
Once you have the access token, you must include it in the request when calling the API. You can include it in the URL or pass it along in the header.
In the examples below, assume access_token is being passed
>https://werx.retsrabbit.com/api/datasystem
Getting the resources available in the API
https://werx.retsrabbit.com/api/datasystem
>
A component of the RESO Web API standard is an endpoint describing the resources and endpoints available in the API. This can be retrieved using the datasystem endpoint.
,
https://werx.retsrabbit.com/api/datasystem
>
The response will contain the number of Resources you can access via the API, the RESO Web API versions support as well as other information about the API.
,
{ "@odata.context": "api/$metadata", "ID": 1, "Name": "Rets Rabbit", "SeviceURI": "/api/v2", "DateTimeStamp": "2016-06-06 7:06pm", "Transport": 1.4, "DataDictionaryVersion": 1.4, "Resources": [ { "Name": "Property", "ResourcePath": "/api/v2/property", "Description": "RESO Standard Property Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] }, { "Name": "Media", "ResourcePath": "/api/v2/media", "Description": "RESO Standard Media Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] } ] }
> >Getting Metadata for a Resource
https://werx.retsrabbit.com/api/datasystem
https://werx.retsrabbit.com/api/datasystem
>
Next, you’ll want to look up the metadata for a Resource. The metadata will contain information about the response fields & data a resource will return. For example, you can retrieve the metadata for a property resource using the following endpoint:
,
https://werx.retsrabbit.com/api/v2/property/$metadata
>
You’ll see an XML response of fields available when you query for either a collection or individual properties. Our output will largely follow the RESO Data Dictionary standard, which is an industry-wide data schema under adoption by MLSs in the United States.
Example Response:
,
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx
xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema
xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Retsrabbit.Models.Property">
<Property Name="AboveGradeFinishedArea" Type="numeric"/>
<Property Name="AboveGradeFinishedAreaSource" Type="character varying"/>
<Property Name="AboveGradeFinishedAreaUnits" Type="character varying"/>
<Property Name="AccessCode" Type="character varying"/>
<Property Name="AccessibilityFeatures" Type="text"/>
<Property Name="AdditionalParcelsDescription" Type="character varying"/>
<Property Name="AdditionalParcelsYN" Type="boolean"/>
<Property Name="AnchorsCoTenants" Type="text"/>
<Property Name="Appliances" Type="text"/>
<Property Name="ApprovalStatus" Type="character varying"/>
<Property Name="ArchitecturalStyle" Type="text"/>
<Property Name="AssociationAmenities" Type="text"/>
<Property Name="AssociationFee" Type="numeric"/>
...
</Schema>
</edmx:DataServices>
</edmx:Edmx>
> >Properties
{
"access_token":"<your access token>",
"token_type":"bearer",
"expires":<timestamp>,
"expires_in":3600
}
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
>
Now that you’ve retrieved the metadata, you can interact with the Data Rabbit API® server to search for properties.
>https://werx.retsrabbit.com/api/datasystem
GET A SINGLE PROPERTY
https://werx.retsrabbit.com/api/datasystem
>
A single property can be returned using the following
,
GET /v2/property(ListingId)
>
Where ListingId
is the unique id (or MLS number) of the property on the RETS server. The response will be a single JSON object containing the property & the fields as defined in the metadata.
Get a listing for ‘
,
GET /v2/property(ListingId)
,
{ "@odata.context": "api/$metadata", "ID": 1, "Name": "Rets Rabbit", "SeviceURI": "/api/v2", "DateTimeStamp": "2016-06-06 7:06pm", "Transport": 1.4, "DataDictionaryVersion": 1.4, "Resources": [ { "Name": "Property", "ResourcePath": "/api/v2/property", "Description": "RESO Standard Property Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] }, { "Name": "Media", "ResourcePath": "/api/v2/media", "Description": "RESO Standard Media Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] } ] }
,
{ "@odata.context": "api/v2/$metadata#property/$entity", "id": 2067, "ListingKey": "200", "ListingId": "74958", "StandardStatus": "Active", "MlsStatus": null, "ApprovalStatus": null, "ListingContractDate": "2016-04-12", ... "listing": { "server_hash": "86f93cfc06ceb49d6c837916857cef7d", "mls_id": "74958", "rets_class": "Listing", "active": true, "lat": null, "long": null, "geo_partial": false, "photos": [ { "id": 914, "mls_id": "74958", "filename": "74958_Photo_1.jpg", "url": "https://s3.amazonaws.com/rets-rabbit-bucket2/86f93cfc06ceb49d6c837916857cef7d/74958_Photo_1.jpg" }, ... ] } }
,
https://werx.retsrabbit.com/api/v2/property/$metadata
,
GET /v2/property(74958)
’
,
GET /v2/property(74958)
>
Response
,
{ "@odata.context": "api/v2/$metadata#property/$entity", "id": 2067, "ListingKey": "200", "ListingId": "74958", "StandardStatus": "Active", "MlsStatus": null, "ApprovalStatus": null, "ListingContractDate": "2016-04-12", ... "listing": { "server_hash": "86f93cfc06ceb49d6c837916857cef7d", "mls_id": "74958", "rets_class": "Listing", "active": true, "lat": null, "long": null, "geo_partial": false, "photos": [ { "id": 914, "mls_id": "74958", "filename": "74958_Photo_1.jpg", "url": "https://s3.amazonaws.com/rets-rabbit-bucket2/86f93cfc06ceb49d6c837916857cef7d/74958_Photo_1.jpg" }, ... ] } }
>
The complex value listing
is for Data Rabbit API specific information which also includes an array for photos. If you’d like to exclude photos from the response, see the $select
option (under Limiting results to specific field values in this section).
>Running a Search{
"access_token":"<your access token>",
"token_type":"bearer",
"expires":<timestamp>,
"expires_in":3600
}
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
> >Filtering by a field value
https://werx.retsrabbit.com/api/datasystem
https://werx.retsrabbit.com/api/datasystem
>
Filtering properties by field values can be accomplished using the $filter
option. All the names in the $filter
option are case-sensitive and match the name of the fields provided by the property resource.
The following expression passed to $filter
will get properties where the Listing Agent’s last name (field ListAgentLastName) is ‘DOE’ (case sensitive):
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
https://werx.retsrabbit.com/api
>
Example Response:
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
>
value
is an array that will contain the results of the query, each item in the array represents a property. @odata.count
and @retsrabbit.total_results
will give you the # of results in the value array in the response and the number of records actually in the Data Rabbit API® database. This is useful for pagination, see the Pagination section for more details.
>https://werx.retsrabbit.com/api/datasystem
Filtering by multiple field values
https://werx.retsrabbit.com/api/datasystem
>
You can combine expressions together with or
and and
to perform more complex searches.
Getting properties for Listing Agent matching JOHN DOE:
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
>
You can get properties where the listing agent’s last name is either ‘Smith’ or ‘Doe’:
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
https://werx.retsrabbit.com/api/datasystem
> >”Not equals” filtering
https://werx.retsrabbit.com/api/datasystem
https://werx.retsrabbit.com/api/datasystem
>
Using ne
(not equals) it’s possible to filter properties that don’t contain a value:
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
{ "@odata.context": "api/$metadata", "ID": 1, "Name": "Rets Rabbit", "SeviceURI": "/api/v2", "DateTimeStamp": "2016-06-06 7:06pm", "Transport": 1.4, "DataDictionaryVersion": 1.4, "Resources": [ { "Name": "Property", "ResourcePath": "/api/v2/property", "Description": "RESO Standard Property Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] }, { "Name": "Media", "ResourcePath": "/api/v2/media", "Description": "RESO Standard Media Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] } ] }
> >
https://werx.retsrabbit.com/api/datasystem
Filtering by wildcards
https://werx.retsrabbit.com/api/datasystem
>
You can do wildcard or case insensitive searches by using the following special functions with the $filter
option. All of the functions are case-insensitive.
Get all properties whose listing agent’s first name starts with ‘joh’
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
https://werx.retsrabbit.com/api/v2/property/$metadata
>
Get all properties whose listing agent’s first name ends with ‘ohn’
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx
xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema
xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Retsrabbit.Models.Property">
<Property Name="AboveGradeFinishedArea" Type="numeric"/>
<Property Name="AboveGradeFinishedAreaSource" Type="character varying"/>
<Property Name="AboveGradeFinishedAreaUnits" Type="character varying"/>
<Property Name="AccessCode" Type="character varying"/>
<Property Name="AccessibilityFeatures" Type="text"/>
<Property Name="AdditionalParcelsDescription" Type="character varying"/>
<Property Name="AdditionalParcelsYN" Type="boolean"/>
<Property Name="AnchorsCoTenants" Type="text"/>
<Property Name="Appliances" Type="text"/>
<Property Name="ApprovalStatus" Type="character varying"/>
<Property Name="ArchitecturalStyle" Type="text"/>
<Property Name="AssociationAmenities" Type="text"/>
<Property Name="AssociationFee" Type="numeric"/>
...
</Schema>
</edmx:DataServices>
</edmx:Edmx>
>
Get all properties whose listing agent’s first name contains the string ‘oh’
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
GET /v2/property(ListingId)
>
Matching on upper or lower case
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
GET /v2/property(74958)
> >Searching by numeric range
https://werx.retsrabbit.com/api/datasystem
https://werx.retsrabbit.com/api/datasystem
>
In addition to using eq
you can also use gt
(greater than), lt
(less than), ge
(greater than or equals) and le
(less than or equals) operators to perform searches on dates and number values.
Properties with a listing price less than $
,
https://werx.retsrabbit.com/api/v2/property/$metadata
,
https://werx.retsrabbit.com/api
K
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
{ "@odata.context": "api/v2/$metadata#property/$entity", "id": 2067, "ListingKey": "200", "ListingId": "74958", "StandardStatus": "Active", "MlsStatus": null, "ApprovalStatus": null, "ListingContractDate": "2016-04-12", ... "listing": { "server_hash": "86f93cfc06ceb49d6c837916857cef7d", "mls_id": "74958", "rets_class": "Listing", "active": true, "lat": null, "long": null, "geo_partial": false, "photos": [ { "id": 914, "mls_id": "74958", "filename": "74958_Photo_1.jpg", "url": "https://s3.amazonaws.com/rets-rabbit-bucket2/86f93cfc06ceb49d6c837916857cef7d/74958_Photo_1.jpg" }, ... ] } }
>
Properties with a listing price between $
,
https://werx.retsrabbit.com/api/v2/property/$metadata
,
https://werx.retsrabbit.com/api
K & $
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
,
https://werx.retsrabbit.com/api
K
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
>
Properties with a listing price greater than $
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
,
https://werx.retsrabbit.com/api
K
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
> >
https://werx.retsrabbit.com/api/datasystem
Filtering by Date
https://werx.retsrabbit.com/api/datasystem
>
You can also use the year
, month
, day
, date
, time
, hour
, minute
and second
functions to filter properties by date and time.
Properties listed in the year
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx
xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema
xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Retsrabbit.Models.Property">
<Property Name="AboveGradeFinishedArea" Type="numeric"/>
<Property Name="AboveGradeFinishedAreaSource" Type="character varying"/>
<Property Name="AboveGradeFinishedAreaUnits" Type="character varying"/>
<Property Name="AccessCode" Type="character varying"/>
<Property Name="AccessibilityFeatures" Type="text"/>
<Property Name="AdditionalParcelsDescription" Type="character varying"/>
<Property Name="AdditionalParcelsYN" Type="boolean"/>
<Property Name="AnchorsCoTenants" Type="text"/>
<Property Name="Appliances" Type="text"/>
<Property Name="ApprovalStatus" Type="character varying"/>
<Property Name="ArchitecturalStyle" Type="text"/>
<Property Name="AssociationAmenities" Type="text"/>
<Property Name="AssociationFee" Type="numeric"/>
...
</Schema>
</edmx:DataServices>
</edmx:Edmx>
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
>
Properties listed before
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx
xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema
xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Retsrabbit.Models.Property">
<Property Name="AboveGradeFinishedArea" Type="numeric"/>
<Property Name="AboveGradeFinishedAreaSource" Type="character varying"/>
<Property Name="AboveGradeFinishedAreaUnits" Type="character varying"/>
<Property Name="AccessCode" Type="character varying"/>
<Property Name="AccessibilityFeatures" Type="text"/>
<Property Name="AdditionalParcelsDescription" Type="character varying"/>
<Property Name="AdditionalParcelsYN" Type="boolean"/>
<Property Name="AnchorsCoTenants" Type="text"/>
<Property Name="Appliances" Type="text"/>
<Property Name="ApprovalStatus" Type="character varying"/>
<Property Name="ArchitecturalStyle" Type="text"/>
<Property Name="AssociationAmenities" Type="text"/>
<Property Name="AssociationFee" Type="numeric"/>
...
</Schema>
</edmx:DataServices>
</edmx:Edmx>
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api/datasystem
>
Properties listed in June
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx
xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema
xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Retsrabbit.Models.Property">
<Property Name="AboveGradeFinishedArea" Type="numeric"/>
<Property Name="AboveGradeFinishedAreaSource" Type="character varying"/>
<Property Name="AboveGradeFinishedAreaUnits" Type="character varying"/>
<Property Name="AccessCode" Type="character varying"/>
<Property Name="AccessibilityFeatures" Type="text"/>
<Property Name="AdditionalParcelsDescription" Type="character varying"/>
<Property Name="AdditionalParcelsYN" Type="boolean"/>
<Property Name="AnchorsCoTenants" Type="text"/>
<Property Name="Appliances" Type="text"/>
<Property Name="ApprovalStatus" Type="character varying"/>
<Property Name="ArchitecturalStyle" Type="text"/>
<Property Name="AssociationAmenities" Type="text"/>
<Property Name="AssociationFee" Type="numeric"/>
...
</Schema>
</edmx:DataServices>
</edmx:Edmx>
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
{ "@odata.context": "api/$metadata", "ID": 1, "Name": "Rets Rabbit", "SeviceURI": "/api/v2", "DateTimeStamp": "2016-06-06 7:06pm", "Transport": 1.4, "DataDictionaryVersion": 1.4, "Resources": [ { "Name": "Property", "ResourcePath": "/api/v2/property", "Description": "RESO Standard Property Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] }, { "Name": "Media", "ResourcePath": "/api/v2/media", "Description": "RESO Standard Media Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] } ] }
> >Sorting
https://werx.retsrabbit.com/api/datasystem
https://werx.retsrabbit.com/api/datasystem
>
You can sort listings using the $orderby
option. Just specify the field and the direction of the sort.
Sorting by ListPrice
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api/v2/property/$metadata
> >Pagination
https://werx.retsrabbit.com/api/datasystem
https://werx.retsrabbit.com/api/datasystem
>
You can limit results and paginate through records from the API using the $top
and $skip
options.
If you want to limit results to
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
https://werx.retsrabbit.com/api
at a time set the $top
parameter to
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
https://werx.retsrabbit.com/api
and $skip
to
,
https://werx.retsrabbit.com/api
.
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx
xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema
xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Retsrabbit.Models.Property">
<Property Name="AboveGradeFinishedArea" Type="numeric"/>
<Property Name="AboveGradeFinishedAreaSource" Type="character varying"/>
<Property Name="AboveGradeFinishedAreaUnits" Type="character varying"/>
<Property Name="AccessCode" Type="character varying"/>
<Property Name="AccessibilityFeatures" Type="text"/>
<Property Name="AdditionalParcelsDescription" Type="character varying"/>
<Property Name="AdditionalParcelsYN" Type="boolean"/>
<Property Name="AnchorsCoTenants" Type="text"/>
<Property Name="Appliances" Type="text"/>
<Property Name="ApprovalStatus" Type="character varying"/>
<Property Name="ArchitecturalStyle" Type="text"/>
<Property Name="AssociationAmenities" Type="text"/>
<Property Name="AssociationFee" Type="numeric"/>
...
</Schema>
</edmx:DataServices>
</edmx:Edmx>
>
If you want to get the next set of results, change the $skip
parameter to
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
,
POST https://werx.retsrabbit.com/api/oauth/access_token? grant_type=client_credentials& client_id=<your client id>& client_secret=<your client secret>
.
You can use the @retsrabbit.total_results
and @odata.count
fields in the response to determine how many “pages” of results to show in your pagination control.
Notice: We no longer return total_results
by default in the api responses. To request the total results for a request you must pass one of the following two flags to the $select clause.
- total_results: returns the exact number of total results.
- estimated_results: returns an estimated number of results.
In most cases we suggest the use of the estimated_results
flag as it can dramatically decrease the round trip time of an API call sometimes by more than
,
https://werx.retsrabbit.com/api/v2/property/$metadata
,
https://werx.retsrabbit.com/api
%.
>https://werx.retsrabbit.com/api/datasystem
Limiting results to specific field values
https://werx.retsrabbit.com/api/datasystem
>
Occasionally you don’t want to return all of the data available for a resource. You can use the $select
option to limit the fields that are returned for a request. The Rets Rabbit specific object ‘listing’ will always be displayed (excluding photos
, if you want photos
to be displayed, pass photos in the $select
option).
Active listings in ‘Columbus’, show only the ListingKey, ListPrice, and StandardStatus fields
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
GET /v2/property(ListingId)
>
Response
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
GET /v2/property(74958)
> >Caching
https://werx.retsrabbit.com/api/datasystem
https://werx.retsrabbit.com/api/datasystem
>
We cache all api requests for faster response times. There are some cases where you may want to make sure you are not receiving stale data (although our caches have a fairly low ttl,
,
{ "@odata.context": "api/$metadata", "ID": 1, "Name": "Rets Rabbit", "SeviceURI": "/api/v2", "DateTimeStamp": "2016-06-06 7:06pm", "Transport": 1.4, "DataDictionaryVersion": 1.4, "Resources": [ { "Name": "Property", "ResourcePath": "/api/v2/property", "Description": "RESO Standard Property Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] }, { "Name": "Media", "ResourcePath": "/api/v2/media", "Description": "RESO Standard Media Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] } ] }
,
https://werx.retsrabbit.com/api/v2/property/$metadata
min). We now have a flag you can pass in the $select clause of a request called no_cache
. This basically tells the API to ignore looking up a cached version of this request ensuring you receive an up-to-date response.
>Media{
"access_token":"<your access token>",
"token_type":"bearer",
"expires":<timestamp>,
"expires_in":3600
}
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
>
If you’d like to retrieve just the available photos for a property outside of a normal property lookup or search you can use the Media endpoint.
Getting the media for property ‘
,
GET /v2/property(ListingId)
,
{ "@odata.context": "api/$metadata", "ID": 1, "Name": "Rets Rabbit", "SeviceURI": "/api/v2", "DateTimeStamp": "2016-06-06 7:06pm", "Transport": 1.4, "DataDictionaryVersion": 1.4, "Resources": [ { "Name": "Property", "ResourcePath": "/api/v2/property", "Description": "RESO Standard Property Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] }, { "Name": "Media", "ResourcePath": "/api/v2/media", "Description": "RESO Standard Media Resource", "DateTimeStamp": "2016-06-06 7:06pm", "TimeZoneOffset": 0, "Localizations": [] } ] }
,
{ "@odata.context": "api/v2/$metadata#property/$entity", "id": 2067, "ListingKey": "200", "ListingId": "74958", "StandardStatus": "Active", "MlsStatus": null, "ApprovalStatus": null, "ListingContractDate": "2016-04-12", ... "listing": { "server_hash": "86f93cfc06ceb49d6c837916857cef7d", "mls_id": "74958", "rets_class": "Listing", "active": true, "lat": null, "long": null, "geo_partial": false, "photos": [ { "id": 914, "mls_id": "74958", "filename": "74958_Photo_1.jpg", "url": "https://s3.amazonaws.com/rets-rabbit-bucket2/86f93cfc06ceb49d6c837916857cef7d/74958_Photo_1.jpg" }, ... ] } }
,
https://werx.retsrabbit.com/api/v2/property/$metadata
,
GET /v2/property(74958)
’
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
{ "@odata.context": "api/v2/$metadata#property/$entity", "id": 2067, "ListingKey": "200", "ListingId": "74958", "StandardStatus": "Active", "MlsStatus": null, "ApprovalStatus": null, "ListingContractDate": "2016-04-12", ... "listing": { "server_hash": "86f93cfc06ceb49d6c837916857cef7d", "mls_id": "74958", "rets_class": "Listing", "active": true, "lat": null, "long": null, "geo_partial": false, "photos": [ { "id": 914, "mls_id": "74958", "filename": "74958_Photo_1.jpg", "url": "https://s3.amazonaws.com/rets-rabbit-bucket2/86f93cfc06ceb49d6c837916857cef7d/74958_Photo_1.jpg" }, ... ] } }
>
Example Response
,
https://werx.retsrabbit.com/api/datasystem
,
https://werx.retsrabbit.com/api
> >
{
"access_token":"<your access token>",
"token_type":"bearer",
"expires":<timestamp>,
"expires_in":3600
}
Support
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
>
Send an email to support@apcdata.net for any questions or issues.
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
,
{ "access_token":"<your access token>", "token_type":"bearer", "expires":<timestamp>, "expires_in":3600 }
,
https://werx.retsrabbit.com/api
APC Data Analytics, LLC All rights reserved.