RESO Web API, OData

Trestle feeds, into the site you have.

Trestle hands you a RESO Web API feed for each MLS you are approved for. We sync it into your WordPress, Laravel or custom site, and keep it current every 2 to 3 hours.

Run by
Cotality (formerly CoreLogic)
Protocol
RESO Web API, OData
Refresh, configurable
2 to 3 h
Trestle handshakeIllustration, not a live connection
  1. POST /oidc/connect/token client_credentials
    Cached, refreshed when it expires.
  2. GET /Property?replication=true
    Replication for the first load.
  3. @odata.nextLink
    Followed to the end of the set.
  4. $filter=ModificationTimestamp gt {last}
    Only what changed since the last run.
  5. Media ordered by Order
    Served through an image CDN.
OAuth client credentials issued for your product and feed type, with a token that expires and is refreshed.
The gap

Trestle access is approved. Your site still shows nothing.

Trestle delivers the data. Getting it into your own site, with solds, rosters, photos and the board's display rules, is the part nobody sells. We ran Trestle feeds on a multi MLS platform we built and ran from 2018 to 2025.

  • Active listingsPending and coming soon included, refreshed every 2 to 3 hours.
  • SoldsSynced on their own schedule, scoped to your office by default.
  • Agent and office rostersFrom the feed, or built from listings when there is no roster access.
  • Open housesSynced and attached to their listings.
  • Photos and virtual toursCarried through and served from an image CDN with resizing.
  • Map searchBox, drawn polygon, radius and neighborhood, with pin clustering.
The provider

What Trestle is

Trestle is a real estate data distribution platform run by Cotality, the company formerly known as CoreLogic. It collects listing and membership data from MLSs, maps it to the RESO Data Dictionary, and hands it to approved technology providers and brokers through one API.

Trestle's own FAQ says it carries data from over 90 multiple listing organizations across North America. Its own documentation lists RESO certification for both the Data Dictionary and the Web API. Data comes through the RESO Web API, and a RETS interface is still offered for older applications.

What sets it apart is the licensing workflow. Trestle runs the contract between you and the MLS through its dashboard, with e-signing and billing in one place, though Cotality is not a party to the licence itself.

Getting access

How a broker gets access

Trestle handles the paperwork, but the MLS decides. You, or the developer working for you, request a connection through the Trestle dashboard and the MLS approves it.

  1. 1

    Open a Trestle account

    Register as a technology provider, or as a broker if you are licensing your own data. The account holds your contracts, credentials and billing.

  2. 2

    Request the MLS connection

    From the dashboard, add a connection to your MLS and pick the feed type, such as IDX or IDX Plus. The feed type sets which statuses you receive: an IDX feed has no solds, IDX Plus has some.

  3. 3

    Sign the licence

    Trestle sends an e-sign contract to every party. MLSs often want a broker or agent to ratify it, and some ask for a regular report of which members use the product.

  4. 4

    Get your credentials

    Once approved, you get a client ID and secret. They are tied to one product and feed type, so an IDX feed and an IDX Plus feed need two sets.

  5. 5

    Test, then go live

    Trestle offers a sample feed to build against. The sync is pointed at the live connection once the contract is active.

Each connection carries a monthly Trestle platform fee plus the MLS's own licence fee, which varies by market. Both are shown before you activate the connection.
What the feed carries

What the feed exposes

Trestle documents its WebAPI in detail. These are the parts that shape how a sync is built.

01

Resources

Property, Member, Office, OpenHouse and Media, plus CustomProperty, PropertyRooms, PropertyUnitTypes, Teams and TeamMembers. Related records can come in the same request through $expand.

02

Paging

The default page is 10 records and $top goes up to 1,000. @odata.nextLink gives the next page, so the client does not have to track $skip itself.

03

Replication

Adding replication=true switches to a replication endpoint built for large sets, past one million records. It cannot skip, so a failed run starts again from the beginning.

04

Incremental pulls

Records are tracked on ModificationTimestamp, which also changes when Trestle remaps a field. Photos are tracked on PhotosChangeTimestamp, a field on the Property record.

05

Deletes

Changes do not tell you what left the feed. Trestle's guide says to pull every ListingKey and remove the records that are missing, which is the job of a daily purge.

06

Media

Each photo has a public MediaURL with its own quota, separate from API queries, so photo downloads do not eat into listing pulls.

07

Quotas

Limits are set per hour with a per minute burst, and reported in response headers. Going over returns a 429, and Trestle recommends waiting longer before each retry.

From experience

Quirks we already handle.

Things that only show up once a feed has run for a few months. We learned them on a multi MLS platform we built and ran from 2018 to 2025.

Token refresh

Tokens are cached and refreshed on expiry, so a long full pull does not fail halfway through.

Replication vs query

Full pulls go through the replication endpoint. Regular runs use a filtered query on ModificationTimestamp.

One login, many MLSs

One set of Trestle credentials can cover several MLSs you are approved for, and each MLS still has its own field quirks. Adding another is the same code, plus a small filter class for that MLS's fields.

IDX opt outs

Listings marked not for internet display are never stored, so they can't leak onto a page.

Your stack

Into WordPress, Laravel or your own stack

WordPress

The token lasts 8 hours, so it is cached in the database and refreshed before it runs out, never fetched on a page load. The sync runs from a server cron job rather than WP-Cron, because a long replication pull should not depend on site traffic. Listings land in their own tables, and pages query those.

Laravel

The sync is a set of queued jobs on the scheduler: one for changes, one for photos keyed on PhotosChangeTimestamp, one for the purge. The token sits in the cache with its expiry. Quota headers are read on each response, and a 429 puts the job back on the queue with a delay.

Custom

Any stack that can make HTTPS calls and run a scheduled task will do. The sync writes into one listing schema in your database, and your pages read that. Trestle's MediaURL quota is separate, so photo downloads can run in their own worker without slowing listing updates.

How the switch happens

Old feed stays up until the new one agrees.

Your listings never go blank. The new sync runs beside whatever feeds the site today, and we only switch when the two match.

  1. Audit

    We check your Trestle access, your platform and what the site needs to show.

  2. Run the new sync beside the old

    It fills its own tables while your current listings stay up.

  3. Compare

    Counts, statuses, photos and rosters checked against the feed.

  4. Switch and retire

    Pages read from the new sync. The old plugin or script is removed.

Choosing a feed

Trestle or another feed?

Many MLSs hand their data to more than one platform, so you may be offered Trestle and another route for the same board. The data is mapped to the same RESO standard either way. What differs is the cost per connection, the paperwork, and the limits on each request.

Trestle fits when you want several MLSs under one account and one billing setup. If your MLS charges less through another route, or you only need one board, that route may cost less. The audit compares what your MLS offers before anything is built.

Bridge InteractiveSmaller pages, 200 records per request, and its own timestamp for changes. Media comes on the listing and can be linked from Bridge's CDN.
MLS GridShared by its participating MLSs, replication only, with one licence and a visibility flag on every record.
Spark APIRun by FBS for MLSs on Flexmls. Plans are bought through its Datamart, with request limits counted per five minutes.
RESO Web APISome MLSs serve the feed themselves. Fewer layers, but each MLS sets its own access process.
Start here

MLS feed audit

$499credited to the integration
  • Your MLS access and feed type checked: RESO Web API, RETS, Trestle, Bridge, MLS Grid
  • Your platform, data model and hosting checked
  • Written sync plan: what syncs, how often, what shows where
  • Fixed quote for the integration
Request this package
What happens next
  1. You send the basics.

    Your site's address, what it runs on, and which MLS or feed you have access to.

  2. We check the feed and the site.

    Access, fields, photos, rosters, and how your platform stores listings.

  3. You get a written plan.

    What syncs, how often, what shows where, and a fixed price for the build.

  4. You decide.

    If you go ahead, the $499 comes off the integration.

We are an independent developer. We are not affiliated with, or certified by, any MLS or data provider named on this page.

Other feeds

On a different feed?

FAQ

Before the audit.

Yes. Access is approved by your MLS through Trestle, and the license is yours. We work under the credentials you are given.
Active listings every 2 to 3 hours, configurable, with a weekly full re-sync and a daily purge of off market listings.
A little. Each MLS is its own dataset with its own field quirks, but they land in one listing schema so the site treats them the same.
No. We are an independent developer with no affiliation with Trestle or Cotality.
Register on Trestle, then request a connection to your MLS from the dashboard. The MLS approves it and an e-sign contract goes to each party. Credentials are issued once it is signed.
Trestle sets an hourly quota and a per minute burst for each product and feed type, and reports both in the response headers. Photo URLs have a quota of their own. Going over returns a 429.
Trestle charges a monthly platform fee per connection, tiered by how many contracts the provider holds, and the MLS charges its own licence fee. Both are shown in the dashboard before you activate.
You can, the first version. Many RETS era feeds were built quickly and broke over the next few years: token changes, board rule changes, photos moving hosts, purges that wiped sites. The audit tells you what you would be signing up for either way.
The feed audit is $499 and credited to the integration. The integration is quoted as a fixed price after the audit.

Find out what your feed needs.

Send the site's address and the feed you have access to. The audit gives you a written plan and a fixed quote.