Case Study: Real Estate Tech

MLS Integration for Automated Property Management

A growing real estate business needed a reliable and automated way to manage and display accurate property listings on its WordPress website. The challenge involved integrating multiple MLS systems to maintain current listings, automatically remove inactive properties, and display only client-owned listings.

By connecting Bridgedata MLS and GSMLS (RETS Server) with a special WordPress plugin, we created a flexible and automatic system that updated active residential and rental listings, agent information, and property photos instantly. Automated cron jobs ensured data accuracy, improved operational efficiency, and reduced manual listing management.

Real Estate Tech

About the Client

The client is a real estate brokerage operating in MLS-driven markets, specializing in residential and rental property listings. With a strong online presence requirement, they needed a WordPress-based MLS integration solution that could handle multiple MLS providers while maintaining compliance, accuracy, and performance.

Business Challenges & Objectives

The client faced several challenges common in the real estate technology ecosystem:

Key Challenges
  • Managing property listings from multiple MLS providers
  • Keeping listings updated without manual intervention
  • Removing inactive or expired listings automatically
  • Displaying accurate agent and property photo data
  • Filtering listings to show only client-owned properties
  • Ensuring MLS data compliance and performance

Primary Objectives
  • Build a custom MLS integration for WordPress
  • Automate listing import, updates, and removal
  • Improve website reliability and user trust
  • Enable scalability for future MLS integrations

Solution Overview: Custom MLS Integration for WordPress

To address these challenges, we designed and implemented a custom WordPress MLS integration architecture that securely connected to two MLS providers:

  • Bridgedata MLS: Offers access to property listings, agent information, and related data for properties in specific regions.
  • GSMLS via RETS protocol: A different MLS provider offering data access through the RETS (Real Estate Transaction Standard) protocol.

A custom plugin, bridge-mls-data, was developed to manage API communication, data processing, and automation within WordPress.

MLS Integration Architecture & Implementation

1. Bridgedata MLS Integration

Secure API Authentication:

The Bridgedata MLS API was connected using secure credentials, including:
  • Client Secret | Server Token | Browser Token

This ensured secure and compliant access to MLS data.

Property Listing Retrieval:

  • Active listings were fetched using custom API endpoints
  • Listings filtered by Active status
  • API requests capped at 200 properties per request to optimize performance

Agent Data Integration:

  • Agent information was retrieved using agent-specific MLS IDs, ensuring that only relevant agent data appeared on the website.

Data Storage & Sync Control:

A custom database table, wp_bridge_keys,was created to:

  • Store the timestamp of the last successful API call
  • Prevent duplicate imports
  • Fetch only new or updated listings during sync

Inactive Listing Management:

  • An API endpoint was added to the system for removing inactive or expired properties from the website once they are no longer available in the MLS system.

Post-Deployment Enhancement:

  • After launch, the client requested to exclude property listings from other agents and only display the properties owned by the client. This required updating the integration to filter out non-owned listings from the Bridgedata MLS data.

2. GSMLS (RETS Server) Integration

Credentials and Access:

  • GSMLS provided access through the RETS protocol. The integration used the PHRETS library, a PHP wrapper for the RETS protocol, to query and retrieve property data.
  • Login URL and credentials were configured in the system, including a User-Agent header for authentication.

Property Data Retrieval:

Two types of properties were integrated into the website:

  • Residential (RES): Data for residential listings was fetched by specifying LISTDATE and ListingStatus filters.
  • Rental (RNT): Similar to the residential properties, rental listings were queried with filters for active listings.

Search and Photo Retrieval:

  • Agent search queries were executed to gather agent-specific data.
  • Property photos were fetched using the GetObject method of the RETS server, saving each photo with a unique file name based on the listing ID.

Data Storage:

  • Similar to Bridgedata MLS, GSMLS data was stored in the wp_bridge_keys table. Two separate variables tracked the last data import for Residential and Rental property types.

Handling Inactive Data:

  • As with Bridgedata MLS, an API endpoint was created to remove inactive listings from the site. This ensures that listings that are no longer active in the MLS are removed automatically.

Automation & Cron Job Management

To ensure that the MLS data on the website remains up-to-date, a series of cron jobs were configured:

Property Import Cron Jobs:

The integration used cron jobs to automate the import of new listings at scheduled intervals. The cron jobs triggered API calls to fetch updated property data from both MLS systems

  • bridgedata_import_update_properties: For pulling Bridgedata MLS property data
  • gsmls_RES_data_import_cron: For importing residential properties from GSMLS
  • gsmls_RNT_data_import_cron: For importing rental properties from GSMLS

Inactive Listing Cleanup Cron Jobs:

Additional cron jobs were set up to periodically check for and delete inactive properties

  • bridgedata_inactive_property_delete: To remove expired properties from Bridgedata MLS.
  • gsmls_RES_remove_inactive_data_cron: To clean up inactive residential listings from GSMLS.
  • gsmls_RNT_remove_inactive_data_cron: To remove inactive rental listings from GSMLS.

Cron Management:

The cron jobs were managed through the WP Crontrol plugin, which allows easy configuration and management of scheduled tasks from the WordPress admin dashboard.

Filtering Non-Owned Listings

After the system was live, the client requested a change to exclude listings from other agents and only show properties owned by the client. This required modifying the MLS queries to filter out non-owned properties. Specifically:
  • Bridgedata MLS: The API queries were updated to check for ownership by the client. The filtering logic was adjusted so that only properties owned by the client would be returned by the API.
  • GSMLS: Similar adjustments were made to the GSMLS integration, ensuring that only client-owned listings appeared on the site.

Key Results & Business Impact

Operational Efficiency:

  • 75% reduction in manual listing updates through automated MLS data synchronization.
  • 100% automation of inactive listing removal, eliminating outdated property data.
  • 80% reduction in administrative workload, allowing teams to focus on sales and client engagement.
Operational Efficiency

Improved Data Accuracy:

  • 99% real-time listing accuracy with automated MLS synchronization
  • 90% reduction in data inconsistencies across property and agent listings
Enhanced User Trust:
  • 60% decrease in user complaints related to outdated or unavailable listings
  • 40% increase in property engagement due to accurate photos, pricing, and listing details

Conclusion

The MLS integration process involved securely connecting to two MLS APIs (Bridgedata MLS and GSMLS), retrieving and displaying property and agent data, and automating the synchronization of this data using cron jobs. The flexibility of the system allowed for post-deployment changes to filter out other agents’ listings and display only client-owned properties.

This case study demonstrates how integration of external data sources into a WordPress website can be streamlined and customized to meet the specific needs of the client, while also ensuring automation and efficient management of the data on an ongoing basis.