If your IDX feed is not updating in WordPress, the cause is usually one of three things. WordPress's built-in cron is not firing, a cache is serving old listing pages, or your MLS credentials or feed URL changed. New homes do not appear, sold homes keep showing as active, and price changes lag behind the MLS. The fix depends on which kind of IDX setup you have.

This guide shows you how to tell which cause you are dealing with, the exact fix for each, and how to keep listings fresh on their own. We maintain real estate sites with live IDX feeds, so these are the checks we actually run when an agent says the listings look stale.
Your IDX feed is not updating because the job that pulls listings is not running, or a cache is hiding the new data. On most WordPress sites the culprit is wp-cron, which only runs when someone visits the site, so on a low-traffic listings site the sync simply does not fire. Caching, expired MLS credentials, and a changed feed URL are the other usual suspects.
Here are the causes we check, in the order we check them.
Before you change anything, find out whether your listings live on the provider's servers or inside your WordPress database, because the fix is completely different. Widget and iframe providers like IDX Broker, iHomefinder, and Showcase IDX host the listings and embed them on your pages. API import plugins like Realtyna, MLSImport, and Easy MLS Listings Import pull the listings into your own database on a schedule.
Knowing which group you are in tells you which of the sections below to focus on first. If you maintain a busy listings site, our WordPress maintenance for real estate agents page covers how we keep these running.
The most common reason an IDX import goes stale is that WordPress wp-cron only runs when someone loads a page. It is not a true scheduler, it is a task that piggybacks on visitor traffic. On a low-traffic listings site, hours can pass with no visit, so the import job that should run every 15 minutes never fires, and your listings sit frozen.
The fix is to replace wp-cron with a real server cron job.
This one change fixes the majority of stale-listing problems on import-based sites, and it is the step most agents have never heard of.
If your import is running but listings still look wrong, a cache is serving the old version. Full-page caching saves a copy of your search and listing pages, so a home that sold an hour ago keeps showing as active until that cache expires. Object caches like Redis or Memcached can hold stale listing data in memory the same way.
Caching is great for speed on the rest of the site. It just needs rules so it never freezes the one thing that has to stay current.
A feed that worked for months and then stopped overnight usually means your MLS credentials expired or the board changed the feed URL. MLS boards rotate API keys and update endpoints, and when they do, the import fails silently while your old listings stay on the page. The plugin keeps the last good data, so nothing looks broken until you notice the dates.
If the error mentions authentication or a 401, it is almost always credentials. If it mentions a host or 404, it is almost always a changed URL.
Each major IDX provider has its own first thing to check when listings stop updating. Start with the provider's own status and dashboard before you touch WordPress.
If some listings update and others do not, the import is starting but not finishing, usually because of a server limit or an API rate cap. A first bulk sync of thousands of listings can blow past your PHP time limit or memory cap and stop partway, and some MLS feeds throttle how fast you can pull. The result is a half-updated site that looks random.
A heavy listings site on a weak server is the classic version of this, and it is one of the reasons a real estate site needs more than entry-level hosting.
Sometimes the feed is not broken, the MLS paused it for a compliance violation. Boards require you to display the listing broker's name, the MLS logo, and the right disclaimers, and they can suspend your feed if those disappear. A theme or plugin update that overwrites your listing template is a common way this happens without you realizing it.
This is exactly why we test listing pages after every update on a maintained site. If you handle updates yourself, see our guides on how to update WordPress without breaking your site and how often you should update WordPress.
The way to stop stale listings for good is to remove the guesswork: a real server cron, smart cache rules, and someone watching the sync. Once the import runs on a true schedule and the listing pages are excluded from long caching, the feed stays current on its own. The last piece is monitoring, so a failed sync raises a flag instead of sitting unnoticed for a week.
On the real estate sites we maintain, we set up the server cron, tune the cache so listings update fast while the rest of the site stays quick, and watch the sync log so a broken feed gets caught the same day. That is part of our WordPress care plans, and you can see what WordPress maintenance costs if you want the numbers. For an agent, a listings page that is always right is worth far more than the plan costs.
Tested updates, daily backups and security scans, from $50 a month. No contract.
See care plans →Usually because WordPress wp-cron only runs when someone visits the site, so on a low-traffic listings site the import never fires. Caching, expired MLS credentials, and a changed feed URL are the other common causes. The fix depends on whether your listings are embedded from a provider or imported into WordPress.
It depends on your MLS. Large boards push updates every 5 to 15 minutes, mid-sized boards every 30 to 60 minutes, and small boards a few times a day. Your site can only be as fresh as the MLS feed allows, but your import should run at least every 15 minutes to keep up.
Almost always a cache. A full-page cache keeps serving the old version of a listing page until it expires, so a home that sold an hour ago still shows as active. Exclude listing and search pages from caching or set a short expiration, and clear the cache after each import.
A feed that worked and then stopped overnight usually means your MLS credentials expired or the board changed the feed URL. Check your plugin's sync log for the first error, re-enter your API key, and confirm the feed URL is current.
If your listings are imported into WordPress and the site has low traffic, very likely yes. WordPress wp-cron only fires on page visits, so the import job stalls. Disable wp-cron in wp-config and set a real server cron job to run the import on a fixed schedule.
Yes. We diagnose whether it is cron, caching, credentials, or the server, set up a real cron job, tune the cache so listings stay current, and monitor the sync so it does not break again. Reach out through our contact page.
Free site check, plain report, no sales call.
or email contact@backstopweb.com