Collapse Drawer
Expand Drawer

Getting Started

*Please be advised that CoreLogic is switching the Trestle™ API URL to a new URL

Old: https://api-prod.corelogic.com
New: https://api-trestle.corelogic.com

The Old URL will continue to work until February 6th 2024.

Base URL

https://api-trestle.corelogic.com

Introduction

Trestle’s RETS is based on and compliant with the RETS 1.8 specification and the RESO Data Dictionary standard. Although the RETS specification is no longer being updated by RESO, Trestle continues to provide data access via RETS for customers who do not wish to or cannot switch to WebAPI.

Libraries and Tools

RETS is a very mature protocol, and as such, there are many libraries and tools that you can use. The information provided on the rest of this page will help you get started if you've never used RETS before or if you're trying to modify an existing RETS client to work with Trestle.

CoreLogic offers RETS Connector as an easy tool to help you get up and running, pulling bulk RETS data easily and quickly.

Authentication

Trestle RETS offers two forms of authentication: basic authentication and OAuth2.

info icon

Trestle does NOT support digest authentication

Per RETS standard, Trestle provides a login endpoint. This endpoint provides some details in the returned data about the RETS service; however, Trestle is session-less, which means that you do not need to authenticate at the login endpoint before using the other RETS end points (Search, GetObject, etc.).

Basic

GET /trestle/odata/Property?$top=1000 HTTP/1.1
Host: api-trestle.corelogic.com
Authorization: Basic Y2xpZW50X2lkX2dvZXNfaGVyZTpjbGllbnRfc2VjcmV0X2dvZXNfaGVyZQ==
HttpClient client = new HttpClient();
var userpwd = Encoding.ASCII.GetBytes("client_id:client_secret");
client.DefaultRequestHeaders.Authorization =
  new System.Net.Http.Headers.AuthenticationHeaderValue(
    "Basic", Convert.ToBase64String(userpwd));)
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials =
  new UsernamePasswordCredentials("client_id", "client_secret");
provider.setCredentials(AuthScope.ANY, credentials);

HttpClient client = HttpClientBuilder.create()
  .setDefaultCredentialsProvider(provider)
  .build();
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, "client_id:client_secret");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
POST

/trestle/rets/login

For most RETS clients, using basic authentication will be as simple as setting an option to use basic instead of digest authentication. For compatability purposes, you can still make a request to the login endpoint if needed.

OAuth2

POST

/trestle/oidc/connect/token

Trestle also provides the ability to use RETS with an OAuth2 bearer token. This token is obtained in the same way as described for WebAPI. The only difference is that instead of passing api for the scope parameter, you will pass rets.

warning icon

If you pass scope=api you will get a 400 Bad Request error

GET

/trestle/rets/search

Searching Trestle via RETS is much like searching any other RETS provider. There are a couple of things to keep in mind. When browsing the RESO Metadata, note that the resource name is both the SearchType and Class in a RETS search, so a search for properties will require SearchType=Property&Class=Property. Trestle does not segment properties by property type in RETS.

The other thing to keep in mind is that the default number of records returned is 10 and the maximum you can return in one query is 1,000 (Limit=1000). We highly recommend using Limit=1000 to get the most records at once.