What RESO Web API Is
RESO Web API is the modern standard for accessing MLS listing data. It replaces the older RETS protocol with a RESTful, OData-based API that uses standardized field names and OAuth 2.0 authentication.
If your MLS has migrated to RESO Web API (most major ones have or are in the process), this is what we’ll use to pull listing data for your integration.
How It Differs from RETS
If you’ve worked with MLS data before, you may be familiar with RETS. Here’s what changed:
| RETS | RESO Web API | |
|---|---|---|
| Protocol | Custom XML-based | RESTful (JSON/OData) |
| Auth | Username/password per session | OAuth 2.0 |
| Field names | Vary by MLS | Standardized (Data Dictionary) |
| Data format | COMPACT or XML | JSON |
| Media/photos | Separate download process | Direct URL access |
The biggest practical improvement is the Data Dictionary — standardized field names across MLSs. Instead of every MLS using different names for “list price” or “square footage,” RESO defines standard names. This makes integrations more portable between MLSs.
For a full walkthrough of the RETS approach, see our RETS Connection Setup guide.
Authentication: OAuth 2.0
1. Get Your Credentials
Each MLS issues OAuth credentials through their developer or data access program. You’ll receive:
- Client ID (sometimes called Consumer Key)
- Client Secret (sometimes called Consumer Secret)
- Token endpoint URL — where we exchange credentials for an access token
- API base URL — the endpoint for data queries
The process for requesting these varies by MLS. Some have a developer portal with self-service registration, others require a formal application.
2. Token Exchange
The OAuth flow for RESO Web API is typically client credentials:
- We send the client ID and secret to the token endpoint
- The MLS returns an access token (and usually a refresh token)
- We include the access token in all API requests
- When the token expires, we refresh it automatically
This is all handled by our integration — you just need to provide the initial credentials.
The Data Dictionary
The RESO Data Dictionary defines standardized names for common real estate fields:
- ListPrice instead of MLS-specific names like
LPorlist_priceorListingPrice - BedroomsTotal instead of
BRornum_beds - StandardStatus for listing status (Active, Pending, Closed, etc.)
- ListingKey as the unique identifier
Your MLS may also include local fields beyond the standard dictionary. We’ll map both standard and local fields based on your integration requirements.
Common Queries
Once authenticated, we query data using OData syntax. The most common queries we build:
- Active listings filtered by status, area, or property type
- Recently modified listings using the ModificationTimestamp field for incremental syncs
- Single listing lookup by ListingKey or MLS number
- Media/photos associated with listings
We also use the $select parameter to request only the fields we need, keeping responses fast and data transfer minimal.
Common Issues
MLS Still on RETS
Not all MLSs have completed the migration. Some offer both RETS and RESO Web API during a transition period. If your MLS only supports RETS, see our RETS Connection Setup guide.
Credential Application Takes Time
MLS credential applications can take days to weeks depending on the MLS. Start this process early — it’s often the longest lead time in an MLS integration project.
Rate Limits and Query Limits
Each MLS sets their own rate limits and may restrict the number of records per query. We design our sync process to work within these limits, but unusually restrictive MLSs can slow down initial data loads.
Local Fields Not in the Data Dictionary
If your integration needs MLS-specific fields that aren’t part of the RESO standard, we’ll need to identify the local field names. The MLS metadata endpoint usually provides this information.
Next Steps
- If your MLS still uses RETS: RETS Connection Setup
- New to MLS data feeds? Start with MLS Credential Request
- Learn more about our MLS Integration Services
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