Rather have us handle this? We set this up for clients every day.
See the Service
Guides / Real Estate

RETS Connection Setup

Connecting to an MLS RETS server, exploring metadata, and pulling listing data.

Last verified: April 2026

What You’re Setting Up

A connection to your MLS’s RETS (Real Estate Transaction Standard) server to pull listing data, photos, agent info, and office details.

Important note: RETS is being phased out industry-wide in favor of the RESO Web API. Many MLS boards still use RETS, and some will for years to come, but if your MLS offers RESO Web API access, that’s the better long-term choice. Check with your MLS board about which protocol they support.

Prerequisites

  • RETS credentials from your MLS board (request credentials first)
  • Your RETS server URL, username, password, and user agent string (provided by the MLS)

Connection Details You’ll Need

Your MLS will provide some or all of the following:

  • RETS Server URL: Something like https://rets.mlsboard.com/rets/login
  • Username: Your assigned login
  • Password: Your assigned password
  • User Agent: A string that identifies your client (some MLS boards require a specific value)
  • User Agent Password: Some boards require this as additional authentication
  • RETS Version: Usually 1.7.2 or 1.8 — the MLS will specify

Step-by-Step Setup

1. Test the Connection

Before building anything, verify you can connect. We use a RETS client library to log into the server and confirm the credentials work.

What we’re looking for:

  • Successful login response
  • No “unauthorized” or “invalid credentials” errors
  • The server returns a capabilities list (URLs for search, metadata, objects, etc.)

If you want to test on your own, open-source RETS clients and browser-based tools exist. We can recommend one if you’d like to verify independently.

2. Explore the Metadata

RETS servers organize data into resources, classes, and fields. Exploring the metadata tells us what data is available and how to query it.

  • Resources: Top-level categories like Property, Agent, Office, OpenHouse
  • Classes: Subtypes within a resource. For Property, you might see Residential, Commercial, Land, etc.
  • Fields: Individual data points within a class — address, price, bedrooms, square footage, listing date, status, etc.

Every MLS structures their metadata differently. Field names, available classes, and data types vary. We map these to your system’s fields during the integration.

3. Common Data Pulls

For most integrations, we pull:

  • Listings (Property resource): Active, pending, sold, and expired listings. This is the core data.
  • Photos (Object resource): Listing photos, retrieved separately by listing ID. Photos are binary data accessed through the GetObject request.
  • Agents (Agent resource): Agent name, contact info, office affiliation.
  • Offices (Office resource): Brokerage office details.

4. DMQL2 Query Basics

RETS uses DMQL2 (Data Mining Query Language) to search for records. A few examples:

  • All active residential listings: (Status=A),(Class=RES)
  • Listings modified since a date: (ModificationTimestamp=2026-01-01+)
  • Listings in a price range: (ListPrice=200000-500000)

The exact field names depend on your MLS’s metadata. Status=A on one MLS might be StandardStatus=Active on another. We figure out the correct field names during the metadata exploration step.

5. Set Up Incremental Pulls

For ongoing sync, we don’t re-download everything each time. We query for records modified since our last pull, using a timestamp field like ModificationTimestamp. This keeps the sync efficient and avoids hitting rate limits.

Ready to get your systems connected? No pitch. Just a conversation about what's possible.
Start a conversation

Common Issues

Connection Refused

If the RETS server rejects the connection, check: the server URL is exactly right (including path), the user agent string matches what the MLS requires, and your IP isn’t blocked. Some MLS boards require IP whitelisting.

Metadata Differences Between MLSs

If you work with multiple MLS boards, expect different field names, different data structures, and different photo access methods. Our integration handles the normalization, but it means each MLS connection requires its own mapping configuration.

Photo Retrieval Failures

Photos are retrieved separately from listing data and can be slow on some RETS servers. Timeouts and partial downloads are common. Our middleware retries failed photo downloads and handles multi-image objects.

Rate Limiting

MLS boards limit how many queries you can run per minute or per day. If you’re pulling a large initial dataset, we throttle requests to stay within limits. The initial sync may take hours for large boards.

Next Steps

Need help with the full integration?

This guide covers the setup. If you want us to handle the integration end to end, we can do that.

See Integration Services