Skip to main content
The core query mechanism in DealMachine. They let you search for properties and contacts using criteria like location, property type, owner demographics, equity, and hundreds of other data points.

How Filters Work

Each filter represents a single criterion — a data point combined with an operator and a value. DealMachine has over 200 filterable fields organized into groups.

Source Types

Filters are scoped to a source type:
Source TypeDescription
propertiesProperty-level data (address, value, equity, lot size, etc.)
peopleContact/owner-level data (name, phone, email, demographics, etc.)

Filter Types

Each filter has a data type that determines which operators you can use:
TypeDescriptionExample
NUMBERNumeric values with range/comparison operatorsEquity % between 40-80
STRINGText values with match operatorsOwner name contains “Smith”
DATEDate values with range/comparison operatorsPurchased after 2015-01-01
MULTI_SELECTPredefined option setsProperty type in [SFR, MFR]
BOOLEANTrue/false valuesIs absentee owner?

Operators

Each filter type supports specific operators:

NUMBER Operators

OperatorDescription
rangeValue falls between min and max
greater_thanValue is greater than
greater_than_or_equalValue is greater than or equal to
less_thanValue is less than
less_than_or_equalValue is less than or equal to
equalsExact numeric match
not_equalsDoes not equal

STRING Operators

OperatorDescription
containsText contains substring
any_ofMatches any of the provided values
starts_withText starts with prefix
ends_withText ends with suffix
equalsExact text match
not_equalsDoes not equal
not_containsText does not contain substring

DATE Operators

OperatorDescription
date_rangeFalls between start and end date
is_afterDate is after a given date
is_beforeDate is before a given date
equalsExact date match
relative_timeRelative time comparison (e.g., within last 6 months)

MULTI_SELECT Operators

OperatorDescription
contains_anyMatches any of the selected options
contains_noneMatches none of the selected options
contains_allMatches all of the selected options

BOOLEAN

Boolean filters do not require an operator — just pass a filter_id and value. The operator is automatically inferred.

Filter Groups

Filters are organized into groups. Use the group_id to browse filters by category:
curl "https://api.v2.dealmachine.com/v1/filters?source_type=properties&group_id=owner_type" \
  -H "Authorization: Bearer dm_sk_live_xxx"
See the Groups page for the complete list of all group IDs.

Discovering Filters

Use the List Filters endpoint to discover all available filters:
curl "https://api.v2.dealmachine.com/v1/filters?source_type=properties" \
  -H "Authorization: Bearer dm_sk_live_xxx"
This returns every filter with its:
  • Display name and description
  • Data type
  • Available options (for MULTI_SELECT filters)
  • Allowed operators
  • Group ID (location, financial, ownership, etc.)
You can also search by name:
# Search for equity-related filters
curl "https://api.v2.dealmachine.com/v1/filters?search=equity" \
  -H "Authorization: Bearer dm_sk_live_xxx"

Using Filters in Queries

When searching, each filter you apply is a JSON object with these keys:
{
  "filter_id": "estimated_value",
  "operator": "range",
  "value": { "min": 100000, "max": 500000 }
}
KeyDescription
filter_idThe filter slug (from the discovery endpoint above)
operatorOne of the filter’s allowed_operators. Optional for BOOLEAN filters — automatically defaults to is_boolean.
valueThe filter value — shape depends on the operator
Pass an array of these objects in your search request. All filters are combined with AND logic — every filter must match.
{
  "filters": [
    { "filter_id": "state", "operator": "equals", "value": "TX" },
    { "filter_id": "estimated_value", "operator": "range", "value": { "min": 200000, "max": 600000 } },
    { "filter_id": "is_absentee_owner", "value": true }
  ]
}
For the complete reference of every operator and its expected value shape, see Filter Values. For the full search workflow, see Searching.

Filters vs Fields

  • Filters describe how you can query data (search criteria with operators)
  • Fields describe what data is available (columns in your results)
Every filter corresponds to a field, but not every field is filterable. Use the List Fields endpoint to see all available data fields and their capabilities.