HomeServicesMLS Data IntegrationMLS Grid
RESO Web API, OData

MLS Grid feeds, into the site you have.

MLS Grid serves several MLSs through one RESO Web API. We sync it into your WordPress, Laravel or custom site and keep it current every 2 to 3 hours.

Run by
Multi MLS cooperative
Protocol
RESO Web API, OData
Refresh, configurable
2 to 3 h
MLS Grid handshakeIllustration, not a live connection
  1. Authorization: Bearer {token}
    Issued once access is approved.
  2. $filter=MlgCanView eq true
    On the first load only.
  3. $expand=Media
    Media comes with the listing.
  4. ModificationTimestamp gt {last}
    Only what changed since the last run.
  5. MlgCanView eq false
    Later pulls see the false values and take those listings down.
A bearer access token, issued once your MLS approves the feed.
The gap

One API, a few rules you can't skip.

MLS Grid expects every query to respect its visibility flag and every removed listing to come down. Miss that and you are showing data you shouldn't. MLS Grid was one of the 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.
  • SoldsWhere your MLS allows them, scoped to your office by default.
  • Agent and office rostersMember and Office synced, filtered the same way as listings.
  • Open housesSynced and attached to their listings.
  • Photos and virtual toursDownloaded and stored, as MLS Grid requires, then served from an image CDN with resizing.
  • Map searchBox, drawn polygon, radius and neighborhood, with pin clustering.
The provider

What MLS Grid is

MLS Grid is a data distribution service shared by its participating MLSs. Each MLS hands out one feed under one set of rules, and brokers and vendors sign one standard licence that covers IDX, VOW and third party vendor use.

The API follows the RESO Web API, and the current version is 2.0. It is built for replication only. MLS Grid states that it does not support on demand queries, so you copy the data to your own database and search it there.

That is the main difference from the other platforms. Your site always reads its own copy, and you are expected to keep that copy in step with the feed, including removals and photo changes.

Getting access

How a broker gets access

MLS Grid uses one standard licence for every participating MLS. Your MLS still has to approve you before a token is issued.

  1. 1

    Create an account

    Sign up with MLS Grid. Brokers and vendors work under the same rules and the same licence.

  2. 2

    Add a subscription

    Create a subscription for each MLS you need and choose the use, such as IDX or VOW.

  3. 3

    Add the licensee

    Name the licensee on the subscription and sign the standard licence agreement.

  4. 4

    MLS approval

    The MLS reviews and approves the subscription. Nothing is issued until it does.

  5. 5

    Generate the token

    Once approved, the API token appears on the subscription's token tab. It is a long term token, so it is stored as a server secret.

Your MLS sets the terms of approval. MLS Grid does not publish fees on its site.
What the feed carries

What the feed exposes

MLS Grid's Web API 2.0 has firm rules. A sync that ignores them gets throttled or shows data it should not.

01

Resources

Property, Member, Office, OpenHouse and Lookup. Media is not its own endpoint: it is expanded on Property, Member and Office, and Rooms and UnitTypes expand on Property.

02

One MLS per request

Every request must filter on OriginatingSystemName with a single value. Two MLSs mean two sets of requests.

03

Paging

$top defaults to 500 and goes up to 5,000, or 1,000 when $expand is used. @odata.nextLink is followed until a response comes back without one.

04

Changes and removals

Pulls filter on ModificationTimestamp gt the last value seen. The first load uses MlgCanView eq true. After that, pulls leave the filter off so false values arrive, and those records are deleted. They stay in the feed as false for 7 days.

05

Media rules

You must keep your own copy of every photo. Media URLs are signed, expire after an hour and allow one download, so they cannot be stored or used on a page.

06

Expanded records

Media, Rooms and UnitTypes carry no delete flag. Each update replaces them with whatever the parent record now returns.

07

Rate limits

No more than 2 requests a second, 7,200 an hour, 40,000 a day and 4 GB of downloads an hour. Going higher needs MLS Grid's agreement in advance.

From experience

Quirks we already handle.

MLS Grid is strict about how its feed is consumed. These are the rules the sync follows, taken from the Grid's own documentation.

MlgCanView the way the Grid wants it

The sync filters on MlgCanView eq true for the first load only. After that the filter stays off, so records that flip to false still arrive and come off your site, which is what MLS Grid's own documentation asks for.

Media as an expanded resource

Photos come back with the listing through $expand=Media, ordered by Order, rather than through a separate call.

Board specific display rules

Some MLSs on the Grid add their own display requirements. Each one lives in its own filter class.

Paging with nextLink

Large pulls come back a page at a time. We follow @odata.nextLink to the end and record where the run stopped.

Your stack

Into WordPress, Laravel or your own stack

WordPress

Photos have to be downloaded and kept, so they go to object storage behind a CDN rather than the WordPress media library, which is not built for that volume. The token is a long term secret held in server config. The sync runs from a server cron job, paced to 2 requests a second.

Laravel

A rate limited queue keeps all workers under 2 requests a second combined. Photo downloads run as their own jobs straight after each listing update, since the signed URL expires within the hour. One set of jobs per OriginatingSystemName keeps each MLS separate.

Custom

Whatever the stack, the site reads only its own database, because MLS Grid does not serve on demand queries. Map search, filters and listing pages all run on the local copy. The MlgCanView deletes and the photo replacement logic sit in the sync, not the front end.

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 MLS Grid 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

MLS Grid or another feed?

Some MLSs on MLS Grid also offer their data through other routes, and some do not. Where you have a choice, the listings follow the same RESO standard. The difference is in the licence terms, the fees, and the rules for photos and removals.

MLS Grid suits a broker covering several of its MLSs, since one licence and one token cover them all. It costs more in storage, because every photo is downloaded and kept, and it needs a sync that sticks to the request limits.

TrestleAllows on demand queries as well as replication, and photo URLs are fetched on their own quota.
Bridge InteractivePhotos can be linked straight from Bridge's CDN instead of downloaded.
Spark APIPer MLS plans bought through the Spark Datamart, with a separate replication endpoint.
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. Your MLS approves it and the license is yours. We work under the token you are issued.
Active listings every 2 to 3 hours, configurable, with removals deleted on the next run.
When MlgCanView turns false, the next run deletes the listing from your site.
No. We are an independent developer with no affiliation with MLS Grid or its member MLSs.
MLS Grid allows 2 requests a second, 7,200 an hour, 40,000 in 24 hours and 4 GB of downloads an hour. Going over needs approval from MLS Grid support in advance.
No. MLS Grid requires you to keep your own copy of every photo. The media URLs are signed, expire after an hour and are only for downloading.
No. Every request filters on OriginatingSystemName with one value, so each MLS is synced on its own and then lands in the same listing schema.
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.