Search SimplyRETS MLS listings and open houses; read listing and market analytics.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
What these API credentials can reach: the MLS vendor ids (needed as `vendor` on multi-MLS apps), the time of each vendor's last sync, usernames and the available endpoints (/properties, /openhouses, /agents, /offices, /properties/analytics). OPTIONS /.
This tool takes no arguments.
What these API credentials can reach: the MLS vendor ids (needed as `vendor` on multi-MLS apps), the time of each vendor's last sync, usernames and the available endpoints (/properties, /openhouses, /agents, /offices, /properties/analytics). OPTIONS /.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Values present in an MLS feed, to build valid searches: statuses, property types, cities, counties, neighborhoods, areas and features, plus the last sync time. OPTIONS /properties.
| Argument | Type | Description |
|---|---|---|
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
}
}
}One listing by its SimplyRETS id (`mlsId`, the number in search results; NOT the public MLS number `listingId`). Full detail: address, geo, price, photos, agent, office, property, school, tax, remarks. GET /properties/{mlsId}.
| Argument | Type | Description |
|---|---|---|
| mlsId* | integer | SimplyRETS listing id (the `mlsId` field of a search result). |
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
| include | array | Extra fields to include, when the feed has them. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mlsId"
],
"properties": {
"mlsId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "SimplyRETS listing id (the `mlsId` field of a search result).",
"exclusiveMinimum": 0
},
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
},
"include": {
"type": "array",
"items": {
"enum": [
"association",
"agreement",
"garageSpaces",
"maintenanceExpense",
"parking",
"pool",
"rooms"
],
"type": "string"
},
"maxItems": 7,
"minItems": 1,
"description": "Extra fields to include, when the feed has them."
}
}
}Analytics for one listing, such as its price per square foot. GET /properties/{mlsId}/analytics.
| Argument | Type | Description |
|---|---|---|
| mlsId* | integer | SimplyRETS listing id (the `mlsId` field of a search result). |
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mlsId"
],
"properties": {
"mlsId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "SimplyRETS listing id (the `mlsId` field of a search result).",
"exclusiveMinimum": 0
},
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
}
}
}Statistics for the listings a search matches (same filters as simplyrets_search_listings): total count, average price, bedrooms, full baths, living area, lot size and year built, and the number of listings per area. Use it for market summaries of a city, zip or price band. GET /properties/analytics.
| Argument | Type | Description |
|---|---|---|
| q | array | Keyword search over MLS number, street, unit, city, postal code, subdivision and area; several values match any. |
| idx | string | IDX display filter. Default 'null' hides listings whose address or entire listing may not be displayed online; 'ignore' returns them too. Your MLS's display rules still bind how you use the data. |
| pool | array | Pool: 'true', 'false' or a value such as 'Private'. |
| type | array | Property type (default residential and rental). |
| agent | array | Listing agent MLS ids (the co-listing agent is not matched). |
| water | array | Water body: 'true', 'false' or a value. |
| cities | array | Cities (case-insensitive). simplyrets_get_feed_metadata lists the cities in the feed. |
One open house by its key (the `openHouseKey` of a list result). GET /openhouses/{openHouseKey}.
| Argument | Type | Description |
|---|---|---|
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
| include | array | Extra fields: rooms. |
| openHouseKey* | integer | Open house key from simplyrets_list_open_houses. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"openHouseKey"
],
"properties": {
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
},
"include": {
"type": "array",
"items": {
"enum": [
"rooms"
],
"type": "string"
},
"maxItems": 1,
"minItems": 1,
"description": "Extra fields: rooms."
},
"openHouseKey": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Open house key from simplyrets_list_open_houses.",
"exclusiveMinimum": 0
}
}
}The agent roster of the MLS feed: id, name, address, contact and office. Needs the Agents API add-on on your SimplyRETS app (the demo credentials return an empty list). GET /agents.
| Argument | Type | Description |
|---|---|---|
| q | array | Search agent ids and email addresses. |
| name | string | First name, last name or both. |
| limit | integer | Results per page, 1-100 (default 10). |
| state | string | Agent address state. |
| offset | integer | Records to skip (the previous reply's next.offset). Do not combine with lastId. |
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Search agent ids and email addresses."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "First name, last name or both."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 10)."
},
"state": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Agent address state."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (the previous reply's next.offset). Do not combine with lastId."
},
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
}
}
}The brokerage office roster of the MLS feed, newest modification first. Needs the Offices API add-on on your SimplyRETS app (the demo credentials cannot use it). Pass count=true for the total. GET /offices.
| Argument | Type | Description |
|---|---|---|
| q | array | Match office MLS id, main office MLS id, email (exact) or name (partial). |
| name | string | Partial, case-insensitive office name. |
| count | boolean | Also return the total number of matches. |
| limit | integer | Results per page, 1-100 (default 10). |
| state | string | Partial, case-insensitive state. |
| offset | integer | Records to skip (the previous reply's next.offset). Do not combine with lastId. |
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
| username | string | Feed username, when the credentials have several for the vendor. |
Upcoming open houses with the listing they belong to: filter by property type, listing id, city, broker, agent, price, size, beds, baths and start date. Page with next.offset or next.lastId. GET /openhouses.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort field; a leading minus is descending. Ignored with lastId. |
| type | string | Property type of the listing (default residential; one type per query). |
| agent | string | Agent id. |
| limit | integer | Results per page, 1-100 (default 10). |
| cities | array | Cities (case-insensitive). |
| lastId | integer | Cursor: 0 for the first page, then the previous reply's next.lastId (sort is ignored when set). |
| offset | integer | Records to skip (the previous reply's next.offset). Do not combine with lastId. |
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
| brokers |
Search MLS listings (SimplyRETS /properties): by keyword, status, type, price, beds, baths, area, year, city, zip, neighborhood, agent, broker, features or a map polygon. Returns address, price, status, photos, agent, office, property details and remarks, without empty fields. Pass count=true to get the total. Page with next.offset or next.lastId. GET /properties.
| Argument | Type | Description |
|---|---|---|
| q | array | Keyword search over MLS number, street, unit, city, postal code, subdivision and area; several values match any. |
| idx | string | IDX display filter. Default 'null' hides listings whose address or entire listing may not be displayed online; 'ignore' returns them too. Your MLS's display rules still bind how you use the data. |
| pool | array | Pool: 'true', 'false' or a value such as 'Private'. |
| sort | string | Sort field; a leading minus is descending. Ignored with lastId. |
| type | array | Property type (default residential and rental). |
| agent | array | Listing agent MLS ids (the co-listing agent is not matched). |
| count | boolean | Also return the total number of matches (slower on big feeds). |
| maxdom |
| integer |
| Maximum days on market (needs Days on Market data in the feed). |
| points | array | A polygon of 'lat,lng' points (3 or more); returns listings inside it. Needs latitude/longitude in the feed. |
| status | array | Listing status (default Active). Closed = sold or leased. |
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
| brokers | array | Broker or listing office ids, as your MLS provides them. |
| maxarea | integer | Maximum living area, sq ft. |
| maxbeds | integer | Maximum bedrooms. |
| maxyear | integer | Maximum year built. |
| minarea | integer | Minimum living area, sq ft. |
| minbeds | integer | Minimum bedrooms. |
| minyear | integer | Minimum year built. |
| subtype | array | Property sub type; not every feed supports every value. |
| counties | array | Counties (case-insensitive). |
| features | array | Interior features, e.g. 'Wet Bar'. |
| maxacres | integer | Maximum acreage. |
| maxbaths | integer | Maximum bathrooms. |
| maxprice | integer | Maximum price. |
| minacres | integer | Minimum acreage. |
| minbaths | integer | Minimum bathrooms. |
| minprice | integer | Minimum price. |
| salesAgent | array | Selling agent MLS ids (sales.agent). |
| postalCodes | array | Postal / zip codes. |
| neighborhoods | array | Neighborhoods or subdivisions (case-insensitive). |
| maxGarageSpaces | integer | Maximum garage spaces. |
| minGarageSpaces | integer | Minimum garage spaces. |
| exteriorFeatures | array | Exterior features, e.g. 'Porch'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Keyword search over MLS number, street, unit, city, postal code, subdivision and area; several values match any."
},
"idx": {
"enum": [
"null",
"listing",
"address",
"ignore"
],
"type": "string",
"description": "IDX display filter. Default 'null' hides listings whose address or entire listing may not be displayed online; 'ignore' returns them too. Your MLS's display rules still bind how you use the data."
},
"pool": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Pool: 'true', 'false' or a value such as 'Private'."
},
"type": {
"type": "array",
"items": {
"enum": [
"residential",
"rental",
"mobilehome",
"condominium",
"multifamily",
"commercial",
"commerciallease",
"land",
"farm"
],
"type": "string"
},
"maxItems": 9,
"minItems": 1,
"description": "Property type (default residential and rental)."
},
"agent": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Listing agent MLS ids (the co-listing agent is not matched)."
},
"water": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Water body: 'true', 'false' or a value."
},
"cities": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Cities (case-insensitive). simplyrets_get_feed_metadata lists the cities in the feed."
},
"maxdom": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum days on market (needs Days on Market data in the feed)."
},
"points": {
"type": "array",
"items": {
"type": "string",
"pattern": "^-?\\d{1,3}(\\.\\d+)?\\s*,\\s*-?\\d{1,3}(\\.\\d+)?$"
},
"maxItems": 100,
"minItems": 3,
"description": "A polygon of 'lat,lng' points (3 or more); returns listings inside it. Needs latitude/longitude in the feed."
},
"status": {
"type": "array",
"items": {
"enum": [
"Active",
"Pending",
"Closed",
"ActiveUnderContract",
"Hold",
"Withdrawn",
"Expired",
"Delete",
"Incomplete",
"ComingSoon"
],
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Listing status (default Active). Closed = sold or leased."
},
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
},
"brokers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Broker or listing office ids, as your MLS provides them."
},
"maxarea": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum living area, sq ft."
},
"maxbeds": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum bedrooms."
},
"maxyear": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum year built."
},
"minarea": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum living area, sq ft."
},
"minbeds": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum bedrooms."
},
"minyear": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum year built."
},
"subtype": {
"type": "array",
"items": {
"enum": [
"apartment",
"boatslip",
"singlefamilyresidence",
"deededparking",
"cabin",
"condominium",
"duplex",
"manufacturedhome",
"ownyourown",
"quadruplex",
"stockcooperative",
"townhouse",
"timeshare",
"triplex",
"manufacturedonland",
"farmandranch",
"agriculture",
"business",
"hotelmotel",
"industrial",
"mixeduse",
"officespace",
"retail",
"unimprovedland",
"warehouse"
],
"type": "string"
},
"maxItems": 25,
"minItems": 1,
"description": "Property sub type; not every feed supports every value."
},
"counties": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Counties (case-insensitive)."
},
"features": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Interior features, e.g. 'Wet Bar'."
},
"maxacres": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum acreage."
},
"maxbaths": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum bathrooms."
},
"maxprice": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum price."
},
"minacres": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum acreage."
},
"minbaths": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum bathrooms."
},
"minprice": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum price."
},
"salesAgent": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Selling agent MLS ids (sales.agent)."
},
"postalCodes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Postal / zip codes."
},
"neighborhoods": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Neighborhoods or subdivisions (case-insensitive)."
},
"maxGarageSpaces": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum garage spaces."
},
"minGarageSpaces": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum garage spaces."
},
"exteriorFeatures": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Exterior features, e.g. 'Porch'."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Match office MLS id, main office MLS id, email (exact) or name (partial)."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Partial, case-insensitive office name."
},
"count": {
"type": "boolean",
"description": "Also return the total number of matches."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 10)."
},
"state": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Partial, case-insensitive state."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (the previous reply's next.offset). Do not combine with lastId."
},
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
},
"username": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Feed username, when the credentials have several for the vendor."
}
}
}| array |
| Broker ids. |
| include | array | Extra fields: rooms. |
| minarea | integer | Minimum living area, sq ft. |
| minbeds | integer | Minimum bedrooms. |
| maxprice | integer | Maximum listing price. |
| minbaths | integer | Minimum bathrooms. |
| minprice | integer | Minimum listing price. |
| listingId | string | Only open houses for this public MLS listing id. |
| startdate | string | Scheduled start of the open house. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"listprice",
"-listprice",
"listdate",
"-listdate",
"beds",
"-beds",
"baths",
"-baths"
],
"type": "string",
"description": "Sort field; a leading minus is descending. Ignored with lastId."
},
"type": {
"enum": [
"residential",
"rental",
"mobilehome",
"condominium",
"multifamily",
"commercial",
"commerciallease",
"land",
"farm"
],
"type": "string",
"description": "Property type of the listing (default residential; one type per query)."
},
"agent": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Agent id."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 10)."
},
"cities": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Cities (case-insensitive)."
},
"lastId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Cursor: 0 for the first page, then the previous reply's next.lastId (sort is ignored when set)."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (the previous reply's next.offset). Do not combine with lastId."
},
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
},
"brokers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Broker ids."
},
"include": {
"type": "array",
"items": {
"enum": [
"rooms"
],
"type": "string"
},
"maxItems": 1,
"minItems": 1,
"description": "Extra fields: rooms."
},
"minarea": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum living area, sq ft."
},
"minbeds": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum bedrooms."
},
"maxprice": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum listing price."
},
"minbaths": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum bathrooms."
},
"minprice": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum listing price."
},
"listingId": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Only open houses for this public MLS listing id."
},
"startdate": {
"type": "string",
"pattern": "^(\\d{4}-\\d{2}-\\d{2}|\\d{1,2}\\/\\d{1,2}\\/\\d{4})([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?( ?(Z|[+-]\\d{2}:?\\d{2}|[A-Za-z]{2,5}))?)?$",
"description": "Scheduled start of the open house."
}
}
}| limit | integer | Results per page, 1-100 (default 10). |
| state | array | State or province (case-insensitive). |
| water | array | Water body: 'true', 'false' or a value. |
| cities | array | Cities (case-insensitive). simplyrets_get_feed_metadata lists the cities in the feed. |
| lastId | integer | Cursor: 0 for the first page, then the previous reply's next.lastId (sort is ignored when set). |
| maxdom | integer | Maximum days on market (needs Days on Market data in the feed). |
| offset | integer | Records to skip (the previous reply's next.offset). Do not combine with lastId. |
| points | array | A polygon of 'lat,lng' points (3 or more); returns listings inside it. Needs latitude/longitude in the feed. |
| status | array | Listing status (default Active). Closed = sold or leased. |
| vendor | string | MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them). |
| brokers | array | Broker or listing office ids, as your MLS provides them. |
| include | array | Extra fields: compliance (IDX display data) and rooms (when the feed has them). |
| maxarea | integer | Maximum living area, sq ft. |
| maxbeds | integer | Maximum bedrooms. |
| maxyear | integer | Maximum year built. |
| minarea | integer | Minimum living area, sq ft. |
| minbeds | integer | Minimum bedrooms. |
| minyear | integer | Minimum year built. |
| subtype | array | Property sub type; not every feed supports every value. |
| counties | array | Counties (case-insensitive). |
| features | array | Interior features, e.g. 'Wet Bar'. |
| maxacres | integer | Maximum acreage. |
| maxbaths | integer | Maximum bathrooms. |
| maxprice | integer | Maximum price. |
| minacres | integer | Minimum acreage. |
| minbaths | integer | Minimum bathrooms. |
| minprice | integer | Minimum price. |
| modified | string | Only listings whose MLS modification time is on or after this date or date-time. |
| ownership | array | Ownership values (feed dependent). |
| salesAgent | array | Selling agent MLS ids (sales.agent). |
| coListAgent | array | Co-listing agent MLS ids. |
| maxlistdate | string | Listed on or before this date or date-time (UTC unless a timezone is given). |
| minlistdate | string | Listed on or after this date or date-time (UTC unless a timezone is given). |
| postalCodes | array | Postal / zip codes. |
| subTypeText | array | Original MLS sub type text values. |
| neighborhoods | array | Neighborhoods or subdivisions (case-insensitive). |
| maxGarageSpaces | integer | Maximum garage spaces. |
| minGarageSpaces | integer | Minimum garage spaces. |
| exteriorFeatures | array | Exterior features, e.g. 'Porch'. |
| specialListingConditions | array | Special conditions such as REO, Short Sale or Auction (feed dependent). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Keyword search over MLS number, street, unit, city, postal code, subdivision and area; several values match any."
},
"idx": {
"enum": [
"null",
"listing",
"address",
"ignore"
],
"type": "string",
"description": "IDX display filter. Default 'null' hides listings whose address or entire listing may not be displayed online; 'ignore' returns them too. Your MLS's display rules still bind how you use the data."
},
"pool": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Pool: 'true', 'false' or a value such as 'Private'."
},
"sort": {
"enum": [
"listprice",
"-listprice",
"listdate",
"-listdate",
"closedate",
"-closedate",
"beds",
"-beds",
"baths",
"-baths"
],
"type": "string",
"description": "Sort field; a leading minus is descending. Ignored with lastId."
},
"type": {
"type": "array",
"items": {
"enum": [
"residential",
"rental",
"mobilehome",
"condominium",
"multifamily",
"commercial",
"commerciallease",
"land",
"farm"
],
"type": "string"
},
"maxItems": 9,
"minItems": 1,
"description": "Property type (default residential and rental)."
},
"agent": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Listing agent MLS ids (the co-listing agent is not matched)."
},
"count": {
"type": "boolean",
"description": "Also return the total number of matches (slower on big feeds)."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 10)."
},
"state": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "State or province (case-insensitive)."
},
"water": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Water body: 'true', 'false' or a value."
},
"cities": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Cities (case-insensitive). simplyrets_get_feed_metadata lists the cities in the feed."
},
"lastId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Cursor: 0 for the first page, then the previous reply's next.lastId (sort is ignored when set)."
},
"maxdom": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum days on market (needs Days on Market data in the feed)."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (the previous reply's next.offset). Do not combine with lastId."
},
"points": {
"type": "array",
"items": {
"type": "string",
"pattern": "^-?\\d{1,3}(\\.\\d+)?\\s*,\\s*-?\\d{1,3}(\\.\\d+)?$"
},
"maxItems": 100,
"minItems": 3,
"description": "A polygon of 'lat,lng' points (3 or more); returns listings inside it. Needs latitude/longitude in the feed."
},
"status": {
"type": "array",
"items": {
"enum": [
"Active",
"Pending",
"Closed",
"ActiveUnderContract",
"Hold",
"Withdrawn",
"Expired",
"Delete",
"Incomplete",
"ComingSoon"
],
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Listing status (default Active). Closed = sold or leased."
},
"vendor": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "MLS vendor id; required on multi-MLS apps (simplyrets_get_account_info lists them)."
},
"brokers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Broker or listing office ids, as your MLS provides them."
},
"include": {
"type": "array",
"items": {
"enum": [
"compliance",
"rooms"
],
"type": "string"
},
"maxItems": 2,
"minItems": 1,
"description": "Extra fields: compliance (IDX display data) and rooms (when the feed has them)."
},
"maxarea": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum living area, sq ft."
},
"maxbeds": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum bedrooms."
},
"maxyear": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum year built."
},
"minarea": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum living area, sq ft."
},
"minbeds": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum bedrooms."
},
"minyear": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum year built."
},
"subtype": {
"type": "array",
"items": {
"enum": [
"apartment",
"boatslip",
"singlefamilyresidence",
"deededparking",
"cabin",
"condominium",
"duplex",
"manufacturedhome",
"ownyourown",
"quadruplex",
"stockcooperative",
"townhouse",
"timeshare",
"triplex",
"manufacturedonland",
"farmandranch",
"agriculture",
"business",
"hotelmotel",
"industrial",
"mixeduse",
"officespace",
"retail",
"unimprovedland",
"warehouse"
],
"type": "string"
},
"maxItems": 25,
"minItems": 1,
"description": "Property sub type; not every feed supports every value."
},
"counties": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Counties (case-insensitive)."
},
"features": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Interior features, e.g. 'Wet Bar'."
},
"maxacres": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum acreage."
},
"maxbaths": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum bathrooms."
},
"maxprice": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum price."
},
"minacres": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum acreage."
},
"minbaths": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum bathrooms."
},
"minprice": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum price."
},
"modified": {
"type": "string",
"pattern": "^(\\d{4}-\\d{2}-\\d{2}|\\d{1,2}\\/\\d{1,2}\\/\\d{4})([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?( ?(Z|[+-]\\d{2}:?\\d{2}|[A-Za-z]{2,5}))?)?$",
"description": "Only listings whose MLS modification time is on or after this date or date-time."
},
"ownership": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Ownership values (feed dependent)."
},
"salesAgent": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Selling agent MLS ids (sales.agent)."
},
"coListAgent": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Co-listing agent MLS ids."
},
"maxlistdate": {
"type": "string",
"pattern": "^(\\d{4}-\\d{2}-\\d{2}|\\d{1,2}\\/\\d{1,2}\\/\\d{4})([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?( ?(Z|[+-]\\d{2}:?\\d{2}|[A-Za-z]{2,5}))?)?$",
"description": "Listed on or before this date or date-time (UTC unless a timezone is given)."
},
"minlistdate": {
"type": "string",
"pattern": "^(\\d{4}-\\d{2}-\\d{2}|\\d{1,2}\\/\\d{1,2}\\/\\d{4})([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?( ?(Z|[+-]\\d{2}:?\\d{2}|[A-Za-z]{2,5}))?)?$",
"description": "Listed on or after this date or date-time (UTC unless a timezone is given)."
},
"postalCodes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Postal / zip codes."
},
"subTypeText": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Original MLS sub type text values."
},
"neighborhoods": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Neighborhoods or subdivisions (case-insensitive)."
},
"maxGarageSpaces": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Maximum garage spaces."
},
"minGarageSpaces": {
"type": "integer",
"maximum": 1000000000,
"minimum": 0,
"description": "Minimum garage spaces."
},
"exteriorFeatures": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Exterior features, e.g. 'Porch'."
},
"specialListingConditions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Special conditions such as REO, Short Sale or Auction (feed dependent)."
}
}
}