HomeServicesMLS Data IntegrationRETS to RESO Web API
RETS, then RESO Web API

RETS is retired. Move before your feed goes.

RESO retired RETS and the industry has moved to the Web API. We map your RETS classes and fields to the RESO Data Dictionary, run the new sync beside the old one, and switch when the numbers match.

Run by
Your MLS
Protocol
RETS, then RESO Web API
Refresh, configurable
2 to 3 h
RETS to RESO Web API handshakeIllustration, not a live connection
  1. RETS Login user + UA
    The feed you run today.
  2. GetMetadata classes, lookups
    Every class and field your site uses.
  3. fields to ListPrice, StandardStatus
    RETS names mapped to the Data Dictionary.
  4. $filter=ModificationTimestamp gt {last}
    Web API sync, beside the old one.
  5. RETS sync off
    Once both feeds agree.
RETS username and password today, then OAuth or a bearer token from the MLS for the Web API.
Why now

When the RETS feed ends, the listings stop.

Most IDX plugins and custom code from the RETS era broke, or will break, when the feed ends. The site stays up but the listings freeze, then go stale. Moving early means you pick the date, not your MLS.

  • 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 RETS was

RETS, the Real Estate Transaction Standard, launched in 1999 as the common way for MLSs to hand listing data to brokers and vendors. It was built for copying data: you logged in, searched with DMQL queries, and downloaded the results into your own database.

In 2017 RESO released RETS 1.9 as the final version and retired the RETS workgroup. RESO no longer supports or extends it. Its standards and certification work moved to the RESO Web API.

The Web API runs on OData over plain HTTP, with OAuth tokens and field names from the RESO Data Dictionary. Some MLSs have already switched RETS off and serve data only through APIs. Others still run it, on their own timeline.

Getting access

Getting Web API access to replace RETS

Your RETS login does not carry over. Web API access is a separate request, usually to the same MLS or its vendor.

  1. 1

    Ask your MLS

    Ask whether it serves the Web API directly or through a platform like Trestle, Bridge, MLS Grid or Spark, and whether there is a date for the RETS shutdown.

  2. 2

    Match the licence

    Request the same use you have on RETS, such as IDX or VOW, so the fields and statuses line up with what your site shows today.

  3. 3

    Sign the new agreement

    A new data licence or platform contract is common, even with the same MLS.

  4. 4

    Get credentials

    You receive OAuth client credentials or a bearer token and an endpoint, in place of the RETS username, password and user agent.

  5. 5

    Run both feeds

    Keep the RETS login live until the Web API sync has been checked against it. Then the RETS credentials are retired.

Your MLS sets the shutdown date, the terms and any fee. Ask early, since approval can take a while.
What the feed carries

What changes from RETS to the Web API

The listings are the same, but almost every part of how you get them changes.

01

Queries

RETS used DMQL, its own query language. The Web API uses OData, so a filter looks like $filter=ListPrice gt 500000.

02

Login and auth

RETS used a login session with a username, a password and often a user agent. The Web API sends an OAuth or bearer token with each request.

03

Metadata

RETS GetMetadata described each feed's own classes and fields. The Web API's $metadata describes resources that follow the Data Dictionary.

04

Classes become resources

RETS split listings into classes the MLS named, such as residential or land. The Web API has one Property resource, with property type as a field.

05

Photos

RETS photos were downloaded through GetObject calls. The Web API returns a Media resource with a URL for each photo.

06

Paging and changes

RETS paged with offsets and the feed's own modified field. The Web API follows @odata.nextLink and filters on ModificationTimestamp.

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.

RETS classes and lookups

Each RETS feed names its classes, fields and lookup values its own way. We read the metadata and write the map down before any code changes.

Photos through GetObject

RETS photos have to be downloaded. We run them through a queue and only fetch again when the photo timestamp changes.

RETS fields onto RESO names

We map RETS fields onto RESO names first, so the old and new feeds land in the same schema and can be compared row by row.

Date queries in DMQL

Incremental RETS pulls query the feed's own modified date field. The Web API side uses ModificationTimestamp. Both track the last value they saw.

Your stack

Into WordPress, Laravel or your own stack

WordPress

Most RETS era sites run an IDX plugin. If the plugin vendor supports your MLS on the Web API, an update may be all it takes. If not, the sync moves out of the plugin into a server cron job that fills its own tables, and the theme reads those.

Laravel

The old RETS command and the new Web API job write into the same listing schema, so both can run on the scheduler at once and be compared. When counts and prices agree, the RETS job and its client library come out of the project.

Custom

Custom RETS code is often a nightly script built on a RETS client library. It is replaced by a scheduled HTTPS sync that follows nextLink and tracks ModificationTimestamp. Your pages keep reading the same tables, so the front end barely changes.

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 list the classes, fields and photos your site reads today and check your Web API access.

  2. Run both

    The Web API sync runs beside the RETS one, writing into the same schema.

  3. Compare

    Listing counts, prices, statuses and photos checked between the two feeds.

  4. Switch and retire

    The site reads from the new sync. The RETS job and its credentials go.

Choosing a feed

Update the plugin, migrate, or rebuild?

There are three ways off RETS. If your IDX plugin vendor supports the Web API for your MLS, an update may be enough. If you have custom code that works, moving the sync to the Web API and keeping the rest is often the smaller job.

A rebuild makes sense when the RETS code is old, nobody knows how it works, or the site needs features it never had. The audit tells you which of the three fits before you spend anything.

RESO Web APIThe direct route when your MLS serves the Web API itself.
TrestleStill documents a RETS interface for existing apps, next to its Web API.
Bridge InteractiveOffers a virtual RETS API, built to RETS 1.9, for consumers approved with replication.
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.

That depends on your MLS, and dates move. Ask them, or send us what you have and the audit will tell you where you stand. Either way, RESO has retired RETS, so the move is coming.
They don't have to. Whether the listing IDs match between the two feeds is one of the things the audit checks, so the plan says what happens to your URLs before any work starts.
Sometimes. If the plugin vendor supports the Web API for your MLS, that may be the cheaper route and the audit will say so. If it doesn't, or the site runs custom code, we build the sync.
Usually yes. Web API access is a separate request to your MLS or its vendor. We tell you what to ask for and work under the access you are granted.
Not by RESO. RETS 1.9, released in 2017, was the final version, and RESO now works only on the Web API. Some MLSs still run RETS feeds, but each one sets its own end date.
RETS used login sessions, DMQL queries and GetObject photo downloads. The Web API uses OAuth tokens, OData queries and Media URLs, with field names from the RESO Data Dictionary.
Yes. The new sync runs beside the RETS one and writes into the same schema. The site switches only when both feeds agree.
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 work. The migration is quoted as a fixed price once the audit shows what your site uses.

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.