| Key | Required | Description |
|---|---|---|
filter_id | Yes | The filter slug from the List Filters endpoint |
operator | Depends | One of the allowed_operators for that filter. Optional for BOOLEAN filters — automatically defaults to is_boolean. |
value | Yes | The filter value — shape depends on the operator (see below) |
value shape is operator-driven. For simple operators it’s a raw primitive (number, string, or boolean). For complex operators it’s an object or array. This page documents every operator and its expected value.
NUMBER
Number filters work with numeric data points like estimated value, equity percentage, square footage, and bedroom count.range
Match values between a minimum and maximum (inclusive).
| Key | Type | Required | Description |
|---|---|---|---|
min | number | Yes | Minimum value (inclusive) |
max | number | Yes | Maximum value (inclusive) |
greater_than
Match values strictly greater than the given number.
value — number. Threshold (exclusive).
greater_than_or_equal
Match values greater than or equal to the given number.
value — number. Threshold (inclusive).
less_than
Match values strictly less than the given number.
value — number. Threshold (exclusive).
less_than_or_equal
Match values less than or equal to the given number.
value — number. Threshold (inclusive).
equals
Match an exact numeric value.
value — number. Exact value to match.
not_equals
Exclude an exact numeric value.
value — number. Value to exclude.
STRING
String filters work with text data like owner name, city, address, and mailing address.contains
Match records where the field contains the given substring.
value — string. Substring to search for (case-insensitive).
not_contains
Exclude records where the field contains the given substring.
value — string. Substring to exclude (case-insensitive).
starts_with
Match records where the field starts with the given prefix.
value — string. Prefix to match.
ends_with
Match records where the field ends with the given suffix.
value — string. Suffix to match.
equals
Match an exact string value.
value — string. Exact string to match.
not_equals
Exclude an exact string value.
value — string. Exact string to exclude.
any_of
Match records where the field matches any of the provided values.
value — string[]. Array of strings to match against.
DATE
Date filters work with date fields like last sale date, list date, and year built. All date values useYYYY-MM-DD format.
date_range
Match dates between a start and end date (inclusive).
| Key | Type | Required | Description |
|---|---|---|---|
start | string | Yes | Start date in YYYY-MM-DD format (inclusive) |
end | string | Yes | End date in YYYY-MM-DD format (inclusive) |
is_after
Match dates after a given date.
value — string. Date in YYYY-MM-DD format.
is_before
Match dates before a given date.
value — string. Date in YYYY-MM-DD format.
equals
Match an exact date.
value — string. Date in YYYY-MM-DD format.
relative_time
Match dates relative to the current date. This is useful for queries like “sold within the last 6 months” or “listed more than 30 days ago.”
| Key | Type | Required | Description |
|---|---|---|---|
amount | number | Yes | Number of time units |
unit | string | Yes | "days", "months", or "years" |
direction | string | Yes | "ago" (before now) or "from_now" (after now) |
comparison | string | Yes | "less_than" (within the period) or "greater_than" (outside the period) |
amount + unit + direction, then compares the field value against that date using comparison.
Example: Sold within the last 6 months
Example: Sold within the last 6 months
direction: "ago" sets the reference date to 6 months before today.
comparison: "less_than" means the sale date is more recent than that reference — i.e., within the last 6 months.Example: Owned for more than 10 years
Example: Owned for more than 10 years
direction: "ago" sets the reference date to 10 years before today.
comparison: "greater_than" means the purchase date is older than that reference — i.e., more than 10 years ago.Example: Listed in the last 7 days
Example: Listed in the last 7 days
MULTI_SELECT
Multi-select filters work with fields that have a predefined set of options, like property type, zoning, or MLS status. Option values are numeric IDs — use the List Filters endpoint to discover the available options and their IDs.contains_any
Match records that have any of the selected options (OR logic).
value — number[]. Array of option IDs — match if the record has any of these.
contains_none
Match records that have none of the selected options.
value — number[]. Array of option IDs — match if the record has none of these.
contains_all
Match records that have all of the selected options (AND logic).
value — number[]. Array of option IDs — match if the record has all of these.
BOOLEAN
Boolean filters work with true/false fields like absentee owner, vacant, and has pool. For BOOLEAN filters, you only need to passfilter_id and value — the operator is automatically inferred.
value — boolean. true or false.
Quick Reference
| Type | Operator | Value |
|---|---|---|
| NUMBER | range | { "min": number, "max": number } |
| NUMBER | greater_than, greater_than_or_equal, less_than, less_than_or_equal, equals, not_equals | number |
| STRING | contains, starts_with, ends_with, equals, not_equals, not_contains | "string" |
| STRING | any_of | ["a", "b"] |
| DATE | date_range | { "start": "YYYY-MM-DD", "end": "YYYY-MM-DD" } |
| DATE | is_after, is_before, equals | "YYYY-MM-DD" |
| DATE | relative_time | { "amount": number, "unit": string, "direction": string, "comparison": string } |
| MULTI_SELECT | contains_any, contains_none, contains_all | [1, 2, 3] |
| BOOLEAN | (automatic) | true or false |
Common Mistakes
Using a string for boolean values
Using a string for boolean values
Wrong:Right:
Using an operator not allowed for the filter type
Using an operator not allowed for the filter type
A NUMBER filter does not support
contains. Check the allowed_operators array from the List Filters response.Wrapping simple values in an object
Wrapping simple values in an object
Single-value operators take a raw primitive, not a nested object:Wrong:Right:
Using option labels instead of IDs for MULTI_SELECT
Using option labels instead of IDs for MULTI_SELECT
Multi-select filters use numeric option IDs, not human-readable labels:Wrong:Right:Use List Filters to look up the correct option IDs.
Wrong date format
Wrong date format
Dates must be Right:
YYYY-MM-DD:Wrong: