Link structure for loading MLS content
This is an advanced topic. Read the getting started guide for a simpler explanation.
dsIDXpress can load property search results and individual property details based on a relatively simple URL structure. The URL structure always starts with
/idx/, so if your domain name is
yourblog.com, the dsIDXpress “virtual” pages would always start with
Search results links
dsIDXpress can display search results from the MLS based on a number of different link structures. All search results are currently limited to 500 properties maximum; please read our blog post on this issue for our reasonings. If you’re simply looking to display listings from a particular city, community, tract, or zip without any other filters, you can link to the search results according to the following table.
|Sample Link||What It Shows|
||Shows 500 newest listings in Los Angeles, ordered by newest first|
||Shows all of the listings (since total is less than 250) in the “The Village” community / tract, ordered by newest first|
||Shows all of the listings (since total is less than 250) in the 92651 zip code, ordered by newest first|
||Shows all of the listings (since total is less than 250) that match the criteria in link ID 860 that was created in the Diverse Solutions Control Panel. This is currently only available for dsSearchAgent Pro Mapping IDX users.|
Listed below are ALL of the different search URL parameters that can be used with the dsIDXpress links. Each of these search parameters need to be prefixed with
idx-q-. Neither the parameter names NOR the parameter values are case sensitive. To use these parameters, you will need to follow this format:
…starting with a question mark and separating each parameter with an ampersand.
idx-q-Locations: † This is a combination of Cities, Communities, and Tracts, and the recommended way to search a location.
idx-q-MlsNumbers: † List of MLS numbers.
idx-q-PropertyTypes: † List of property type IDs (numbers). You can get these numbers from the URLs when you do a search using the search panel. We plan to make the process of getting these numbers more user-friendly in the future.
idx-q-PropertyFeatures: † List of property feature IDs (numbers). We do not yet have a way to look these up however, so you will need to contact customer service if you’d like a list of the features.
idx-q-DaysOnMarketMin: Number indicating minimum days on market. ex:
idx-q-DaysOnMarketMax: Number indicating maximum days on market. ex:
idx-q-PriceMin: Number indicating minimum price.
idx-q-PriceMax: Number indicating maximum price.
idx-q-BedsMin: Number indicating minimum beds.
idx-q-BedsMax: Number indicating maximum beds.
idx-q-BathsMin: Number indicating minimum baths.
idx-q-BathsMax: Number indicating maximum baths.
idx-q-ImprovedSqFtMin: Number indicating minimum home size in sq ft. Be aware that some MLSs do not provide home size in their data.
idx-q-ImprovedSqFtMax: Number indicating maximum home size in sq ft. Be aware that some MLSs do not provide home size in their data.
idx-q-LotSqFtMin: Number indicating minimum lot size in sq ft. Be aware that some MLSs either do not provide lot size in their data or give us an unreliable way to calculate it.
idx-q-LotSqFtMax: Number indicating maximum lot size in sq ft. Be aware that some MLSs either do not provide lot size in their data or give us an unreliable way to calculate it.
idx-q-YearBuiltMin: Number indicating minimum year built.
idx-q-YearBuiltMax: Number indicating maximum year built.
idx-q-PriceDropDays: Number indicating how many days price drop percent is calculated over. See below.
idx-q-PriceDropPercent: Number indicating the price drop percentage over the number of days. See above. ex:
30days with a value of
10percent will show properties that have dropped their price at least 10% in 30 days.
idx-q-DistressTypes: Number indicating whether to show only pre-foreclosures (
1), only foreclosed listings / REOs (
2), only pre-foreclosures or REOs (
3), or neither pre-foreclosures nor REOs (
2shows only foreclosed listings.
idx-q-Schools: † List of schools / school types. See Schools sub-section below.
idx-q-ListingAgentID: † List of agent IDs in the MLS.
idx-q-ListingOfficeID: † List of agent IDs in the MLS.
idx-q-ListingStatuses: This parameter is only available for dsIDXpress Pro at this time. Number indicating whether to show Active (1), Conditional (2), Pending (4), or Sold (8). You add up the numbers to include the type(s) you want. (Note: By default results only include Active & Conditional). ex:
idx-q-ListingStatuses=8is only solds,
idx-q-ListingStatuses=12is only solds & pending,
idx-q-ListingStatuses=15is all statuses.
idx-q-AddressMasks: † List of partial addresses to match. A
%character indicates a wildcard. See the Encoding Text sub-section below. ex:
234%20Cliff%20Dr%25will match listings that have an address that starts with “234 Cliff Dr”.
idx-q-Cities: † List of cities. See Encoding Text and Redirects sub-sections below. ex:
idx-q-States: † List of states. ex:
idx-q-ZipCodes: † List of zip codes. See Encoding Text and Redirects sub-section below. ex:
idx-q-Communities: † List of communities. See Encoding Text, Areas, and Redirects sub-sections below.
idx-q-TractIdentifiers: † List of tracts. See Encoding Text, Areas, and Redirects sub-sections below.
idx-q-Areas: † List of tracts or communities. See Encoding Text, Areas, and Redirects sub-sections below.
idx-q-Counties: † List of counties. See Encoding Text sub-sections below. ex:
idx-q-LatitudeMin: Number indicating minimum latitude. ex:
idx-q-LatitudeMax: Number indicating maximum latitude. Latitude / longitude will correlate to a rectangular map area. ex:
idx-q-LongitudeMin: Number indicating minimum longitude. ex:
idx-q-LongitudeMax: Number indicating maximum longitude. Latitude / longitude will correlate to a rectangular map area. ex:
Additionally, these two parameters can be used for sorting the results:
idx-d-SortOrders-Column: † Specifies which field to use for sorting (either: Price, DateAdded, OverallPriceDropPercent, ImprovedSqFt, or LotSqFt)
idx-d-SortOrders-Direction: † Specifies sort direction (either: ASC or DESC)
To put text in URLs, it must first be encoded so that the browser will recognize it. All modern browsers will do this automatically if the text comes from a search form. If you are building the links one-by-one however, you will likely want to use a website that does it for you. Here is a good one that we found, but we have no affiliation with it.
Specifying Multiple Values
For the fields indicated with a † character, you can specify multiple values by using the format of
idx-q-NAME<NUMBER>=VALUE where NAME is the parameter name, NUMBER is any number starting from 0 and counting up as you add more values, and VALUE is the value you want. For example,
idx-q-PropertyTypes<0>=18&idx-q-PropertyTypes<1>=22 searches for listings having either of those property types. See the Schools sub-section below for a more detailed example.
dsIDXpress uses 301 redirects to make sure that easy-to-read URLs are used whenever it’s possible. While the exact details of how this works may change over time, the concept will remain the same. Essentially, all you need to know about it is that a dsIDXpress URL such as
yourblog.com/idx/?idx-q-Cities=Montoursville will return a 301 permanent redirect to both browsers and search engines indicating that the actual URL should be
yourblog.com/idx/city/montoursville. dsIDXpress also ensures that all of the URLs are case-correct so that
yourblog.com/idx/city/Montoursville will be 301 redirected back to the lowercase version of that URL.
dsIDXpress also uses canonical URLs for a number of purposes even after 301 redirects have been issued or when the base URL appears to be correct. The canonical URLs, which are served behind the scenes in the HTML response code, ensure that search engines understand that certain URLs that display very similar content are recognized as such.
The usefulness of the 301 redirect and canonical URL functionality comes into play especially when sorting results or when creating HTML forms that show dsIDXpress search results when submitted. In those cases, the webmaster who is building the links or creating the forms doesn’t need to build in anything special to make the form work. Instead, s/he can simply set the form
action attribute to the
/idx/ URL with the desired parameters as querystring / GET values and not have to worry about the URL being messed up or worry about search engines picking up duplicate content on that site.
Each school that is searched must have a
Name value and a
Type value. The
Name value indicates the school name, and the
Type value indicates the school type. While the school names can be anything, the valid school types are listed below.
Jr. High School
While we recognize that some of those types may seem the same to you, many MLSs actually consider them to be different types and actively use the different types. In other words, we don’t control this! The best way to figure out if a middle school is a “Middle School”, a “Grade School”, or a “Jr. High School” is simply by trial-and-error.
Type field does not have to be specified!
Once you know the name of the school and are willing to try to associate it with a school type, you need to piece this together in the URL. The URL structure for the school parameters is as follows:
0 in the URL can be any number just as long as the
Type each have the same number.
Some examples can be found below. Be certain to take note of the encoded text.
|School Query||What it filters|
||Matches all listings that have “Lyter” assigned to the MLS’s “Elementary School” field.|
||Matches any listings that have “Lyter” for any of the school names for any type (elementary, high, district, etc) OR any listings that have “McCall” assigned to the MLS’s “Middle School” field|
||Matches any listings where the listing agent put either “Lyter” or “Loyalsock” for any of the schools names.|
As MLSs have not standardized on the naming convention of what a tract, community, neighborhood, subdivision, etc is, we have simplified things by putting data into a
TractIdentifier and a
Community field on our end as appropriate. We have simplified things further by allowing for a virtual
Areas parameter that searches both of those fields. In other words, instead of building a link that looks like this <
yourblog.com/idx/idx-q-TractIdentifiers=Turtle> to just search the “Turtle” tract, you could build a link that looks this <
yourblog.com/idx/idx-q-Areas=Turtle> to search for listings that have “Turtle” for either the
Property details links
dsIDXpress can also an individual property’s details based on an MLS number in the link. If the MLS number you needed the link for was “A123456”, the URL to show the details for that property would be as follows.
Please take particular note of the hyphen at the end of the URL. The case of the MLS number doesn’t matter. Let’s assume that the address for listing A123456 is 123 Sunshine Street, Los Angeles, CA 90000. When you visit such a URL, you’ll automatically be 301 redirected to a URL that looks like this.
With dsIDXpress, you don’t have to worry if the address changes as the 301 redirection will always keep the URL correct for each individual listing.