{"id":371918,"date":"2026-11-06T15:27:32","date_gmt":"2026-11-06T15:27:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/geo-mls\/"},"modified":"2026-11-06T15:27:18","modified_gmt":"2026-11-06T15:27:18","slug":"geodirectory-mls-import","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/geodirectory-mls-import\/","author":15310195,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.5","stable_tag":"2.0.5","tested":"7.1.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"GeoDirectory MLS Import","header_author":"AyeCode Ltd","header_description":"Import MLS property listings into GeoDirectory.","assets_banners_color":"d78c5d","last_updated":"2026-11-06 15:27:18","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/wpgeodirectory.com","header_plugin_uri":"https:\/\/wpgeodirectory.com\/downloads\/geomls\/","header_author_uri":"https:\/\/ayecode.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":147,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.5":{"tag":"2.0.5","author":"ayecode","date":"2026-11-06 15:27:18","revision":3788209}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3788209,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3788209,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3788209,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3788209,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3788209,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3788209,"resolution":"1","location":"assets","locale":"","width":1494,"height":704},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3788209,"resolution":"2","location":"assets","locale":"","width":1506,"height":957},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3788209,"resolution":"3","location":"assets","locale":"","width":1150,"height":979},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3788209,"resolution":"4","location":"assets","locale":"","width":1150,"height":719},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3788209,"resolution":"5","location":"assets","locale":"","width":1150,"height":556},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3788209,"resolution":"6","location":"assets","locale":"","width":1506,"height":979},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3788209,"resolution":"7","location":"assets","locale":"","width":1202,"height":621},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3788209,"resolution":"8","location":"assets","locale":"","width":1660,"height":564}},"screenshots":{"1":"Your import at a glance: schedule, latest run, active filters and settings.","2":"Import settings: title format, GeoDirectory post type, listing status, author and schedule.","3":"Filters: import only the listing statuses, locations and price range you want.","4":"Choose which MLS fields to import, with 40 common RESO fields included automatically.","5":"Map any MLS field onto your own GeoDirectory custom fields.","6":"A running import, with live progress and pause and stop controls.","7":"The activity log records every listing each run creates, updates or skips.","8":"Connect your MLS under GeoDirectory settings."}},"plugin_section":[],"plugin_tags":[14572,5065,5082,2199,269377],"plugin_category":[39],"plugin_contributors":[132360,79231,79230],"plugin_business_model":[],"class_list":["post-371918","plugin","type-plugin","status-publish","hentry","plugin_tags-geodirectory","plugin_tags-idx","plugin_tags-mls","plugin_tags-real-estate","plugin_tags-reso","plugin_category-business","plugin_contributors-ayecode","plugin_contributors-paoltaia","plugin_contributors-stiofansisland","plugin_committers-ayecode"],"banners":{"banner":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/banner-772x250.png?rev=3788209","banner_2x":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/banner-1544x500.png?rev=3788209","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/icon.svg?rev=3788209","icon":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/icon.svg?rev=3788209","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-1.png?rev=3788209","caption":"Your import at a glance: schedule, latest run, active filters and settings."},{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-2.png?rev=3788209","caption":"Import settings: title format, GeoDirectory post type, listing status, author and schedule."},{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-3.png?rev=3788209","caption":"Filters: import only the listing statuses, locations and price range you want."},{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-4.png?rev=3788209","caption":"Choose which MLS fields to import, with 40 common RESO fields included automatically."},{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-5.png?rev=3788209","caption":"Map any MLS field onto your own GeoDirectory custom fields."},{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-6.png?rev=3788209","caption":"A running import, with live progress and pause and stop controls."},{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-7.png?rev=3788209","caption":"The activity log records every listing each run creates, updates or skips."},{"src":"https:\/\/ps.w.org\/geodirectory-mls-import\/assets\/screenshot-8.png?rev=3788209","caption":"Connect your MLS under GeoDirectory settings."}],"raw_content":"<!--section=description-->\n<p>GeoDirectory MLS Import connects your site to your MLS through the <a href=\"https:\/\/www.reso.org\/reso-web-api\/\">RESO Web API<\/a> and imports listings into <a href=\"https:\/\/wordpress.org\/plugins\/geodirectory\/\">GeoDirectory<\/a>.<\/p>\n\n<p>Enter the credentials your MLS or IDX vendor issued you, pick a dataset, choose which listings you want, and GeoDirectory MLS Import keeps them in sync on a schedule you control.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li>Imports from any RESO Web API (OData) compliant feed.<\/li>\n<li>Maps RESO fields onto GeoDirectory custom fields, overridable per import.<\/li>\n<li>Downloads listing photos to your media library, or hotlinks the MLS image URLs.<\/li>\n<li>Runs in the background, so large datasets import without timing out. Pause, resume or stop a run at any time, and resume an interrupted one where it left off.<\/li>\n<li>Previews a run before you start it, showing what would be imported, updated or skipped without changing anything.<\/li>\n<li>Re-runs hourly, daily, weekly or monthly, updating only listings that changed.<\/li>\n<li>Optionally trashes listings that have left the feed.<\/li>\n<li>Logs every listing processed, skipped or failed.<\/li>\n<\/ul>\n\n<h4>Filtering<\/h4>\n\n<p>Narrow an import by:<\/p>\n\n<ul>\n<li>Listing status, property type and subtype<\/li>\n<li>State, city, street address and postal code<\/li>\n<li>Listing agent and office, including exclusions<\/li>\n<li>Price range and price display rules<\/li>\n<li>A maximum number of listings, or one listing by <code>ListingId<\/code> \/ <code>ListingKey<\/code><\/li>\n<li>Any custom OData filter expression your feed supports<\/li>\n<\/ul>\n\n<p>Filters are sent to the provider as part of the query, so narrowing happens at the feed.<\/p>\n\n<h4>Your import<\/h4>\n\n<p>The plugin manages one import: a saved configuration of dataset, filters, field mapping and schedule, with scheduling, images and every filter above included. Change any of it whenever you like, or point it at a different dataset.<\/p>\n\n<h4>Supported MLS platforms<\/h4>\n\n<p>Presets ship for Trestle, Bridge Data Output, Spark Platform and Navica. Paragon, Rapattoni and other RESO Web API providers need their endpoints added with the <code>geomls_service_config<\/code> filter. If your MLS is not listed, contact AyeCode support.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/geodirectory\/\">GeoDirectory<\/a> 2.3 or higher<\/li>\n<li>RESO Web API credentials from your MLS or IDX vendor<\/li>\n<\/ul>\n\n<p>GeoDirectory MLS Import does not include, resell or provide access to any MLS data. You must have your own agreement with, and credentials from, your MLS or IDX vendor.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin contacts a third-party MLS or IDX provider to retrieve the listings you ask it to import. Nothing is sent anywhere until you enter API credentials and run an import.<\/p>\n\n<p><strong>Which service is contacted<\/strong><\/p>\n\n<p>The RESO Web API endpoint belonging to the MLS or IDX vendor <em>you<\/em> configure under <strong>GeoDirectory &gt; Settings &gt; MLS Import<\/strong>. The plugin contacts no endpoint of its own. Presets are provided for the following, and a developer can add other RESO Web API endpoints with the <code>geomls_service_config<\/code> filter:<\/p>\n\n<ul>\n<li>Trestle by Cotality - <code>api-trestle.corelogic.com<\/code> (<a href=\"https:\/\/www.cotality.com\/legal\/terms-of-use\">terms<\/a>, <a href=\"https:\/\/www.cotality.com\/legal\/privacy-policy\">privacy policy<\/a>)<\/li>\n<li>Bridge Data Output - <code>api.bridgedataoutput.com<\/code> (<a href=\"https:\/\/bridgedataoutput.com\/terms\">terms<\/a>, <a href=\"https:\/\/www.zillow.com\/corporate\/zg-privacy-notice\/\">privacy policy<\/a>)<\/li>\n<li>Spark Platform - <code>sparkapi.com<\/code> (<a href=\"https:\/\/sparkplatform.com\/docs\/terms_of_use\/developer_agreement_and_terms_of_use\">terms<\/a>, <a href=\"https:\/\/sparkplatform.com\/docs\/terms_of_use\/privacy\">privacy policy<\/a>)<\/li>\n<li>Navica - <code>navapi.navicamls.net<\/code> (<a href=\"https:\/\/navicawebsolutions.com\/default.asp?content=privacy&amp;menu_id=241688\">privacy policy<\/a>, published by its operator Systems Engineering, Inc.). Navica publishes no public terms-of-use page for the API; access is granted by your MLS and governed by the data agreement they issue you.<\/li>\n<li>Paragon - endpoints supplied by your MLS and added with the filter above<\/li>\n<li>Rapattoni - endpoints supplied by your MLS and added with the filter above<\/li>\n<\/ul>\n\n<p><strong>When requests are made<\/strong><\/p>\n\n<ul>\n<li>When you save API credentials, to verify they work.<\/li>\n<li>When you load or refresh the list of datasets available to your account.<\/li>\n<li>When you search for an agent, office or other filter value while building an import.<\/li>\n<li>When you preview an import.<\/li>\n<li>When an import runs, manually or on its schedule.<\/li>\n<li>When listing images are downloaded, if you enabled that. Images come from the image host named in the feed, which your MLS chooses.<\/li>\n<\/ul>\n\n<p><strong>What is sent<\/strong><\/p>\n\n<ul>\n<li>Your API credentials (client ID, client secret, server token, or username and password, depending on the provider), to authenticate.<\/li>\n<li>The OData query built from your filters, containing only the field names and values you selected.<\/li>\n<\/ul>\n\n<p>No WordPress user data, site content or information about your visitors is transmitted.<\/p>\n\n<p><strong>What is received<\/strong><\/p>\n\n<p>Property listing records and media URLs from the dataset you selected, stored as GeoDirectory listings on your site.<\/p>\n\n<p>Your use of these services is governed by your own agreement with your MLS or IDX vendor, in addition to the terms and privacy policies above.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <a href=\"https:\/\/wordpress.org\/plugins\/geodirectory\/\">GeoDirectory<\/a> 2.3 or higher.<\/li>\n<li>Install GeoDirectory MLS Import through <strong>Plugins &gt; Add New<\/strong>, or upload the <code>geodirectory-mls-import<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate GeoDirectory MLS Import through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Open <strong>MLS Import<\/strong> in the admin menu and click <strong>Add MLS credentials<\/strong>, or go to <strong>GeoDirectory &gt; Settings &gt; MLS Import<\/strong>. Choose your MLS, enter your API credentials and save.<\/li>\n<li>Back in <strong>MLS Import<\/strong>, choose a dataset, set your filters and schedule, and create the import.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20mls%20account%3F\"><h3>Do I need an MLS account?<\/h3><\/dt>\n<dd><p>Yes. GeoDirectory MLS Import is a client for the RESO Web API and comes with no listing data. You need credentials from your MLS, your IDX vendor, or a provider such as Bridge or Spark, and you must follow their rules on how the data is displayed.<\/p><\/dd>\n<dt id=\"my%20mls%20is%20not%20in%20the%20provider%20list.%20can%20i%20still%20use%20it%3F\"><h3>My MLS is not in the provider list. Can I still use it?<\/h3><\/dt>\n<dd><p>Yes, as long as it exposes a RESO Web API (OData) endpoint. Its authentication, token and request URLs need to be added with the <code>geomls_service_config<\/code> filter, or contact AyeCode support to have it added.<\/p><\/dd>\n<dt id=\"where%20do%20imported%20listings%20go%3F\"><h3>Where do imported listings go?<\/h3><\/dt>\n<dd><p>Into the GeoDirectory post type you choose when you create the import, so they behave like any other GeoDirectory listing: same templates, search and maps.<\/p><\/dd>\n<dt id=\"the%20import%20stops%20before%20it%20finishes.%20what%20should%20i%20do%3F\"><h3>The import stops before it finishes. What should I do?<\/h3><\/dt>\n<dd><p>Open the import. If a run was interrupted, a banner offers <strong>Resume<\/strong> to pick up where it left off. Large datasets are processed in batches by WP-Cron, so sites with WP-Cron disabled should have a system cron calling <code>wp-cron.php<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20import%20a%20different%20dataset%3F\"><h3>Can I import a different dataset?<\/h3><\/dt>\n<dd><p>Yes. Open your import, click <strong>Edit<\/strong> and use <strong>Change Dataset<\/strong>, or change its filters and schedule, whenever you like.<\/p><\/dd>\n<dt id=\"can%20i%20see%20what%20an%20import%20will%20do%20before%20running%20it%3F\"><h3>Can I see what an import will do before running it?<\/h3><\/dt>\n<dd><p>Yes. <strong>Preview<\/strong> fetches a sample from your MLS and shows what would be imported, updated or skipped, along with how your fields map. Nothing is saved.<\/p><\/dd>\n<dt id=\"can%20i%20change%20an%20import%20while%20it%20is%20running%3F\"><h3>Can I change an import while it is running?<\/h3><\/dt>\n<dd><p>Settings can't change during a run. Wait for it to finish, or stop the run from the edit screen and then save your changes.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20listings%20removed%20from%20the%20mls%3F\"><h3>What happens to listings removed from the MLS?<\/h3><\/dt>\n<dd><p>If you enable <strong>Remove listings no longer in the MLS<\/strong>, they are moved to Trash after each run. Nothing is permanently deleted.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20delete%20my%20listings%3F\"><h3>Does uninstalling delete my listings?<\/h3><\/dt>\n<dd><p>No. Deleting the plugin removes its settings, queues, logs and import configurations. Imported listings remain in GeoDirectory, but the MLS IDs that link them to your feed are removed, so a later reinstall imports them as new listings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Version numbers match the GeoDirectory core major this addon is built for, so GeoDirectory MLS Import starts at 2.0.0.<\/li>\n<\/ul>","raw_excerpt":"Import MLS and IDX property listings into GeoDirectory from a RESO Web API feed, on a schedule, with field mapping and filtering.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=371918"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ayecode"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371918"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371918"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371918"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371918"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371918"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}