Read IDX Broker leads, agents, listings and MLS data; create and update leads and notes.
Maintain this server? Claim it
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.
WRITE: adds a note to a lead (visible to the account's agents). Returns the new note id. PUT /leads/note/{leadID}.
Note text.
IDX lead id.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: adds a note to a lead (visible to the account's agents). Returns the new note id. PUT /leads/note/{leadID}.
| Argument | Type | Description |
|---|---|---|
| note* | string | Note text. |
| lead_id* | integer | IDX lead id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id",
"note"
],
"properties": {
"note": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Note text."
},
"lead_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "IDX lead id.",
"exclusiveMinimum": 0
}
}
}WRITE: creates a new lead in the IDX Broker account (and may trigger the account's own lead notifications). Needs a correctly formatted email with a valid MX record; IDX rejects bad addresses with a server error. Extra fields go in `fields` by their IDX name, as seen on a lead returned by idx_get_lead. Returns the new lead id. PUT /leads/lead.
| Argument | Type | Description |
|---|---|---|
| email* | string | Lead email address. |
| fields | object | Other updatable lead fields by IDX name, e.g. {"phone": "555-0100"}. firstName, lastName and email cannot be repeated here. |
| last_name* | string | Lead last name. |
| first_name* | string | Lead first name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"first_name",
"last_name",
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 200,
"description": "Lead email address."
},
"fields": {
"type": "object",
"description": "Other updatable lead fields by IDX name, e.g. {\"phone\": \"555-0100\"}. firstName, lastName and email cannot be repeated here.",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,39}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Lead last name."
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Lead first name."
}
}
}The IDX Broker client account this access key belongs to: company and contact details and account settings (access keys and passwords are never returned). The reply also shows how many of the key's hourly API accesses are used. GET /clients/accountinfo.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The IDX Broker plan of the account (Lite or Platinum). It sets the hourly API limit: 300 accesses per key on Lite, 500 on Platinum. GET /clients/accounttype.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One lead by id with its details, last 5 viewed listings and searches, and the total number of listings viewed. GET /leads/lead/{leadID}.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| lead_id* | integer | IDX lead id (from idx_list_leads). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"lead_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "IDX lead id (from idx_list_leads).",
"exclusiveMinimum": 0
}
}
}Website traffic history of one lead: date, page, referrer and IP of each visit (at most 5,000 rows per request; use interval/offset/limit to narrow it). GET /leads/leadtraffic/{leadID}.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of items to return (use with offset). |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
| lead_id* | integer | IDX lead id. |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 5000,
"description": "Number of items to return (use with offset).",
"exclusiveMinimum": 0
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
},
"lead_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "IDX lead id.",
"exclusiveMinimum": 0
},
"interval": {
"type": "number",
"maximum": 168,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}When an MLS feed was last downloaded and processed and when its images were last gathered (UTC). GET /mls/age/{idxID}.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| idx_id* | string | IDX MLS id such as a001 (see idx_list_approved_mls). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"idx_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"idx_id": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{1,9}$",
"description": "IDX MLS id such as a001 (see idx_list_approved_mls)."
}
}
}The total number of properties a saved link currently matches. GET /clients/savedlinks/{savedLinkID}/count.
| Argument | Type | Description |
|---|---|---|
| saved_link_id* | integer | Saved link id (from idx_list_saved_links). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"saved_link_id"
],
"properties": {
"saved_link_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Saved link id (from idx_list_saved_links).",
"exclusiveMinimum": 0
}
}
}One JavaScript widget with its settings. GET /clients/widgets/{id}.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| widget_id* | integer | Widget id (from idx_list_widgets). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"widget_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"widget_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Widget id (from idx_list_widgets).",
"exclusiveMinimum": 0
}
}
}Agents on a multi-user IDX Broker account (id, name, office, contact details, category, language, login dates). Filter by one field or by a time window. GET /clients/agents.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed. |
| date_type | string | Which date the time window applies to. |
| filter_field | string | Field to filter on; needs filter_value. |
| filter_value | string | Value to match in filter_field. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"interval": {
"type": "number",
"maximum": 8765,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed."
},
"date_type": {
"enum": [
"accountCreated",
"lastLoginDate"
],
"type": "string",
"description": "Which date the time window applies to."
},
"filter_field": {
"enum": [
"agentID",
"officeID",
"category",
"language",
"agentName"
],
"type": "string",
"description": "Field to filter on; needs filter_value."
},
"filter_value": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Value to match in filter_field."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}The MLSs approved for display on the account, with their IDX ids (such as a001) and names. Use the id in the other MLS tools. GET /mls/approvedmls.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
}
}
}The account's featured (active) listings with address, price, status, photos and agent. Only the account's own listings are returned, never general MLS data. GET /clients/featured.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of items to return (use with offset). |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed. |
| date_type | string | Which date the time window applies to (default dateAdded). |
| disclaimers | boolean | Include the MLS disclaimer and courtesy text in the reply. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 5000,
"description": "Number of items to return (use with offset).",
"exclusiveMinimum": 0
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
},
"interval": {
"type": "number",
"maximum": 8765,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed."
},
"date_type": {
"enum": [
"dateAdded",
"dateModified"
],
"type": "string",
"description": "Which date the time window applies to (default dateAdded)."
},
"disclaimers": {
"type": "boolean",
"description": "Include the MLS disclaimer and courtesy text in the reply."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}Notes on a lead, or one note when note_id is given. GET /leads/note/{leadID}[/{noteID}].
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| lead_id* | integer | IDX lead id. |
| note_id | integer | One note id; omit for all notes of the lead. |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week. |
| date_type | string | Which date the time window applies to. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"lead_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "IDX lead id.",
"exclusiveMinimum": 0
},
"note_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "One note id; omit for all notes of the lead.",
"exclusiveMinimum": 0
},
"interval": {
"type": "number",
"maximum": 168,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week."
},
"date_type": {
"enum": [
"created",
"lastAltered"
],
"type": "string",
"description": "Which date the time window applies to."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}Properties a lead saved (or one when property_id is given). GET /leads/property/{leadID}[/{propertyID}].
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| lead_id* | integer | IDX lead id. |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week. |
| date_type | string | Which date the time window applies to. |
| property_id | integer | One saved property id; omit for all saved properties of the lead. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"lead_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "IDX lead id.",
"exclusiveMinimum": 0
},
"interval": {
"type": "number",
"maximum": 168,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week."
},
"date_type": {
"enum": [
"created",
"lastEdited"
],
"type": "string",
"description": "Which date the time window applies to."
},
"property_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "One saved property id; omit for all saved properties of the lead.",
"exclusiveMinimum": 0
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}Saved property searches of a lead (or one search when search_id is given), with the results URL of each. GET /leads/search/{leadID}[/{searchID}].
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| lead_id* | integer | IDX lead id. |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week. |
| date_type | string | Which date the time window applies to. |
| search_id | integer | One saved search id; omit for all searches of the lead. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"lead_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "IDX lead id.",
"exclusiveMinimum": 0
},
"interval": {
"type": "number",
"maximum": 168,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week."
},
"date_type": {
"enum": [
"created",
"lastEdited"
],
"type": "string",
"description": "Which date the time window applies to."
},
"search_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "One saved search id; omit for all searches of the lead.",
"exclusiveMinimum": 0
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}List the account's leads (website registrants) with contact details, status, agent owner, and last viewed listings and searches. A reply holds up to 500 leads; pass offset to page on and look for pagination information in the reply. Filter by a time window on signup, edit, login or activity date. Uses one of the key's hourly API accesses. GET /leads/lead.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
| sort_by | string | Sort by creation order, asc or desc. |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week. |
| date_type | string | Which date the time window applies to (default subscribeDate). |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
},
"sort_by": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort by creation order, asc or desc."
},
"interval": {
"type": "number",
"maximum": 168,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 168; decimals allowed. IDX default when omitted: 1 hour; pass up to 168 for one week."
},
"date_type": {
"enum": [
"subscribeDate",
"lastEdited",
"lastLoginDate",
"lastPropertyUpdateDate",
"lastActivityDate"
],
"type": "string",
"description": "Which date the time window applies to (default subscribeDate)."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}Cities, counties or postal codes present in an MLS's data, with ids and a count of occurrences. Filter fields: cities = cityID, cityName, stateAbrv, mlsPtID; counties = countyID, countyName, stateAbrv, mlsPtID; postalcodes = id, stateAbrv, mlsPtID. GET /mls/{cities|counties|postalcodes}/{idxID}.
| Argument | Type | Description |
|---|---|---|
| kind* | string | Which list. |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| idx_id* | string | IDX MLS id such as a001 (see idx_list_approved_mls). |
| filter_field | string | Field to filter on (must fit kind); needs filter_value. |
| filter_value | string | Value to match in filter_field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"idx_id",
"kind"
],
"properties": {
"kind": {
"enum": [
"cities",
"counties",
"postalcodes"
],
"type": "string",
"description": "Which list."
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"idx_id": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{1,9}$",
"description": "IDX MLS id such as a001 (see idx_list_approved_mls)."
},
"filter_field": {
"enum": [
"cityID",
"cityName",
"countyID",
"countyName",
"id",
"stateAbrv",
"mlsPtID"
],
"type": "string",
"description": "Field to filter on (must fit kind); needs filter_value."
},
"filter_value": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Value to match in filter_field."
}
}
}Property types of an MLS with the IDX type id, the MLS name, the parent type and subtypes. GET /mls/propertytypes/{idxID}.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| idx_id* | string | IDX MLS id such as a001 (see idx_list_approved_mls). |
| filter_field | string | Field to filter on; needs filter_value. |
| filter_value | string | Value to match in filter_field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"idx_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"idx_id": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{1,9}$",
"description": "IDX MLS id such as a001 (see idx_list_approved_mls)."
},
"filter_field": {
"enum": [
"mlsPtID",
"mlsPropertyType"
],
"type": "string",
"description": "Field to filter on; needs filter_value."
},
"filter_value": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Value to match in filter_field."
}
}
}The fields of an MLS that can be searched under MLS rules: field name, display name and the property types they belong to. GET /mls/searchfields/{idxID}.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| idx_id* | string | IDX MLS id such as a001 (see idx_list_approved_mls). |
| filter_field | string | Field to filter on; needs filter_value. |
| filter_value | string | Value to match in filter_field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"idx_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"idx_id": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{1,9}$",
"description": "IDX MLS id such as a001 (see idx_list_approved_mls)."
},
"filter_field": {
"enum": [
"mlsPtID",
"parentPtID"
],
"type": "string",
"description": "Field to filter on; needs filter_value."
},
"filter_value": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Value to match in filter_field."
}
}
}The account's off-market listings. GET /clients/offmarket.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of items to return (use with offset). |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed. |
| date_type | string | Which date the time window applies to (default dateAdded). |
| disclaimers | boolean | Include the MLS disclaimer and courtesy text in the reply. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 5000,
"description": "Number of items to return (use with offset).",
"exclusiveMinimum": 0
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
},
"interval": {
"type": "number",
"maximum": 8765,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed."
},
"date_type": {
"enum": [
"dateAdded",
"dateModified"
],
"type": "string",
"description": "Which date the time window applies to (default dateAdded)."
},
"disclaimers": {
"type": "boolean",
"description": "Include the MLS disclaimer and courtesy text in the reply."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}Offices on a multi-user IDX Broker account. Filter by one field or by a time window. GET /clients/offices.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed. |
| date_type | string | Which date the time window applies to. |
| filter_field | string | Field to filter on; needs filter_value. |
| filter_value | string | Value to match in filter_field. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"interval": {
"type": "number",
"maximum": 8765,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed."
},
"date_type": {
"enum": [
"accountCreated",
"lastUpdate"
],
"type": "string",
"description": "Which date the time window applies to."
},
"filter_field": {
"enum": [
"officeID",
"stateprovince",
"zipcode"
],
"type": "string",
"description": "Field to filter on; needs filter_value."
},
"filter_value": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Value to match in filter_field."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}Saved links (pre-built property search pages) of the account with id, name and URL. GET /clients/savedlinks.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of items to return (use with offset). |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 5000,
"description": "Number of items to return (use with offset).",
"exclusiveMinimum": 0
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
},
"interval": {
"type": "number",
"maximum": 8765,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}The account's sold and pending listings, that is those removed from the MLS feed. GET /clients/soldpending.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of items to return (use with offset). |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed. |
| date_type | string | Which date the time window applies to (default dateAdded). |
| disclaimers | boolean | Include the MLS disclaimer and courtesy text in the reply. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 5000,
"description": "Number of items to return (use with offset).",
"exclusiveMinimum": 0
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
},
"interval": {
"type": "number",
"maximum": 8765,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed."
},
"date_type": {
"enum": [
"dateAdded",
"dateModified"
],
"type": "string",
"description": "Which date the time window applies to (default dateAdded)."
},
"disclaimers": {
"type": "boolean",
"description": "Include the MLS disclaimer and courtesy text in the reply."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}The account's supplemental (non-MLS) listings with a basic set of fields. GET /clients/supplemental.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of items to return (use with offset). |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
| interval | number | Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed. |
| date_type | string | Which date the time window applies to (default dateAdded). |
| disclaimers | boolean | Include the MLS disclaimer and courtesy text in the reply. |
| start_datetime | string | Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 5000,
"description": "Number of items to return (use with offset).",
"exclusiveMinimum": 0
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
},
"interval": {
"type": "number",
"maximum": 8765,
"minimum": 0.0166,
"description": "Hours of data to return, counted back from start_datetime (default: now). 0.0166 (one minute) to 8765; decimals allowed."
},
"date_type": {
"enum": [
"dateAdded",
"dateModified"
],
"type": "string",
"description": "Which date the time window applies to (default dateAdded)."
},
"disclaimers": {
"type": "boolean",
"description": "Include the MLS disclaimer and courtesy text in the reply."
},
"start_datetime": {
"type": "string",
"description": "Where the interval starts counting back (the newest moment wanted). Default: now. ISO 8601 with a timezone."
}
}
}The system pages of the account's site (search, featured, contact...) with name, id and URL, which can be linked to directly. GET /clients/systemlinks.
| Argument | Type | Description |
|---|---|---|
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
}
}
}The JavaScript widgets on the account with id, name, URL and options. GET /clients/widgets.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of items to return (use with offset). |
| fields | array | Only return these fields (IDX `rf`); ["*"] returns every available field. Narrow it to save API size. |
| offset | integer | Items to skip from the beginning (default 0). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 5000,
"description": "Number of items to return (use with offset).",
"exclusiveMinimum": 0
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_*]{1,60}$"
},
"maxItems": 60,
"minItems": 1,
"description": "Only return these fields (IDX `rf`); [\"*\"] returns every available field. Narrow it to save API size."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Items to skip from the beginning (default 0)."
}
}
}WRITE: changes fields of an existing lead; the given values replace the stored ones. Only pass what must change. Field names are the IDX lead field names as seen on a lead returned by idx_get_lead (for example firstName, lastName, email, phone, status). POST /leads/lead/{leadID}.
| Argument | Type | Description |
|---|---|---|
| fields* | object | Fields to set, by IDX name, e.g. {"phone": "555-0100"}. |
| lead_id* | integer | IDX lead id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id",
"fields"
],
"properties": {
"fields": {
"type": "object",
"description": "Fields to set, by IDX name, e.g. {\"phone\": \"555-0100\"}.",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,39}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"lead_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "IDX lead id.",
"exclusiveMinimum": 0
}
}
}