MLSImport is a WordPress plugin that brings listings from your own MLS into your own website as real WordPress posts. The listings are not ours: they come from your MLS account, through API credentials issued to you. Each home gets its own page on your domain, at an address like yoursite.com/property/123-main-street, with no iframe and no vendor subdomain.
This page covers what the plugin does, what it cannot do, and how the parts of a working setup fit together. To compare it with the other ways listings reach a site, including an IDX that loads from an outside script, see how MLS websites work: import vs live IDX.
What MLSImport does
The plugin does five jobs, and only these five.
- Connects your site to your MLS over the RESO Web API, using credentials you supply.
- Filters the feed down to the listings you want, by city, county, price range, property type, status, agent, office, or listing ID.
- Imports matching listings as property posts in your WordPress database.
- Syncs those posts every hour so price, status, description, and photo changes follow the MLS.
- Removes listings that have left the MLS, on a separate daily pass you turn on.
What MLSImport does not do
- It is not a listing source. MLSImport owns no data and resells none. Every listing on your site came from the MLS you have access to.
- It does not grant MLS membership or API access. Your MLS or its data platform issues those to you or your brokerage. See the difference between the MLS, the data provider and the IDX plugin.
- It does not design your site. Property pages, search forms, maps, and contact forms belong to your theme. In Standalone mode the plugin supplies them, plus saved searches and daily listing alert emails, but never a CRM: leads arrive by email. See what handles lead capture and the CRM.
Built your site with AI, or thinking of writing your own MLS code?
MLSImport runs on WordPress. If an AI builder made your site outside WordPress, you need a listing tool that works there, or a WordPress site. AI can write a custom feed connection too, but someone then owns token renewal, missed updates, sold-home removal, field changes, photos and the board’s rules for as long as the site runs. Compare that upkeep with the plugin, and see the developer templates, hooks and blocks before building every part yourself. Either way, AI cannot give you the right to publish other brokers’ listings: that comes from your MLS.
The four things a working setup needs
- MLS membership with RESO Web API access. You are an agent, broker, or office in an MLS that offers a RESO Web API feed.
- Your own API credentials. A client ID and secret, or a server token, depending on which platform your MLS runs on.
- A theme MLSImport can write into, or Standalone mode on any other theme. See Where your theme fits below.
- At least one import task. An import task is the saved set of filters that decides which listings land on your site.
Not sure you have all four? Run through what you need before you buy first.
How a listing reaches your site
- You save your MLS credentials in the plugin. MLSImport tests them against your MLS and reports whether the connection works.
- You create an import task and set its filters, for example
Miamias the city and450000as the minimum price. - You run the task. Your site asks the MLSImport service for listings matching those filters.
- The service queries your MLS with your credentials and returns the matching listings in RESO format.
- The plugin writes each listing as a property post, mapping RESO fields onto the meta keys your theme reads.
- Your theme displays those posts through its normal templates, search, and widgets.
Every listing carries a unique MLS identifier. On the next run, a listing already on your site is updated rather than created a second time, which is what keeps duplicates out.
Set your fields in MLS Import Settings under the Select Import fields tab before your first import. Field configuration applies to newly imported properties, so listings imported before you chose your fields will not carry the ones you add later.
What happens to listing photos
MLSImport creates a media library record for each photo, but that record points at the image URL on the MLS image source. No image file is copied onto your server.
Two consequences follow. Your disk use and backup size stay close to what they were before the import, even with thousands of listings; what grows is the database, so size your hosting for that. And when a listing leaves the MLS, its images stop loading, because they were never yours to keep, and there are no files left to clean up.
The trade-offs: WordPress makes no thumbnails of MLS photos, so your theme shows the size your MLS sends. If the MLS image server is down, buyers see empty photo boxes until it is back, while price, address, beds and baths still show from your database. Facebook sometimes cannot load a photo from the MLS server; the fix is a featured image you upload yourself, see Facebook shows the wrong image or no image. When the listing’s photos change in the MLS, the import puts the feed’s main photo back, so set your own featured image again on the listings you market.
What keeps listings current
Sync is the hourly pass. It asks the MLS what changed since the last run and applies those changes to the posts you already have, then adds listings that have started matching your filters.
Reconciliation is the daily pass, and it runs once you turn it on. It looks for listings that are gone from the MLS, or that have moved to a status you chose not to keep, and removes them. Sync and reconciliation are separate and are not interchangeable.
Both run on WordPress cron by default. WordPress cron only fires when someone visits the site, so a quiet site can drift. A real server cron job removes that dependency. See how often listings update and when sold homes are removed; if sold homes stay visible or new listings show up late, trace the feed and both scheduled jobs before changing pages by hand.
Do not edit an import task after you have run it. Changing the filters of a task that already imported listings can break syncing for those listings. Create a new task with the new filters instead.
Where your theme fits
MLSImport handles the data and your theme handles the presentation. The plugin decides which listings exist on your site and what values their fields carry. The theme decides what a property page looks like, how search behaves, and where listings appear. A theme does not bring MLS listings on its own; see does a real estate theme come with MLS listings?
That split is why theme choice matters. WpResidence, Houzez, Real Homes, and Wpestate each store property data in their own meta keys, and MLSImport has an adapter for each, so the theme’s own search, maps and property pages use the homes; see compatible themes. On any other theme, choose Standalone (any theme) and keep your design; see Standalone mode on any theme. To change property layouts without patching the plugin, read the template override guide.
Frequently asked questions
Can I connect two MLSs to the same website?
Yes. Since version 7.2, one WordPress install connects up to seven MLS boards on a multi-MLS plan, and their listings import into the same site and the same search. Each board needs its own approval and credentials and keeps its own import tasks. A home listed on both boards shows up once. See connecting two MLS boards to one site.
Can I keep properties I entered by hand alongside imported ones?
Yes. Manual properties and imported properties are the same post type and use the same templates, search, and widgets. MLSImport marks the posts and images it created, so its sync and removal passes leave your own entries alone.
Can I import an entire MLS in one task?
No, and it is not a filter limitation. Both your MLS and your hosting process listings in limited batches, so large regions have to be split across several import tasks; one task imports at most 10,000 listings. Some servers handle a few thousand listings per task and others a few hundred, so test with a small task first.
Does the plugin work without an MLSImport subscription?
No. The plugin authenticates against your MLSImport account before it can reach your MLS, so an active subscription has to exist first. The subscription starts with a 30 day free trial.
Related
If anything here does not match what you see on your site, open a support ticket from your MLSImport account and include your MLS name.