Properties
Search Properties
POST
Search the DealMachine property database using filters. Control which fields are returned, how results are paginated and sorted, and whether contacts are included.
An array of result objects. The shape depends on the
When
The
The full count of matching entities across the entire result set, regardless of pagination.
Results are properties. Contacts matching the
Results are people. The
The response contains
Body Parameters
Array of location objects defining where to search. At least one location is required (max 15). Locations use OR logic — results matching any location are included.
Array of filter objects. At least one filter is required. You can mix property filters (
source_type=properties) and people filters (source_type=people).Field IDs to include in results. Can include both property and people fields. Omit or pass an empty array for the default set.
Controls the shape of the response.
properties— Results are properties. Contacts are nested in acontactsarray. See Anchor Behavior.people— Results are people. Requirescontact_audience. Each person includes aresidence(where they live) and a nestedproperty(the associated property).
Which contacts to include. Required when
anchor is people. Defaults to "owners" when anchor is "properties".Options: owners, owners_and_family, renters, residents, noneSet to "none" to explicitly opt out of contacts. When "none", no contacts array is included and no contact credits are charged.Page number (min:
1).Results per page (min:
1, max: 250).Array of sort objects for ordering results. See Pagination & Sorting.
When
true, returns a credit cost estimate without returning data or consuming credits. See Cost Estimate.Response
Every search response contains three top-level keys:data, totals, and pagination.
data
An array of result objects. The shape depends on the anchor parameter.
Each property includes base fields (address, coordinates, images, bedrooms, bathrooms, sqft) plus any requested fields, and contacts include phones, emails, and DNC status. Credits are consumed per entity.
When anchor is "properties" (the default), each object is a property. Every property includes the always-included fields — address, coordinates, and signed image URLs — plus any fields you requested and, optionally, a contacts array.
anchor is "people", each object is a person. The person’s residence (where they live) is in a residence object, and the associated property is nested in a property object. See Anchor Behavior for details.
contacts
The contacts array is present on each property when contact_audience is set to a value other than "none" (default: "owners").
| Field | Type | Description |
|---|---|---|
dm_person_id | string | DealMachine person ID |
full_name | string | Full display name |
first_name | string | null | First/given name |
last_name | string | null | Last/family name |
is_likely_owner | boolean | Whether this person is likely the owner |
is_in_owner_family | boolean | Whether this person is in the owner’s family |
is_resident | boolean | Whether this person is a resident |
is_likely_renter | boolean | Whether this person is likely a renter |
phones | array | Phone numbers with number, type, and do_not_call |
emails | array | Email addresses with address |
totals
The full count of matching entities across the entire result set, regardless of pagination.
| Field | Type | Description |
|---|---|---|
properties | integer | Total properties matching the filters |
people | integer | Total people matching the filters and contact_audience |
pagination
| Field | Type | Description |
|---|---|---|
page | integer | Current page number |
per_page | integer | Results per page |
total_results | integer | Total matching records |
total_pages | integer | Total pages available |
has_next_page | boolean | Whether more pages exist after this one |
has_previous_page | boolean | Whether pages exist before this one |
Anchor Behavior
Theanchor parameter controls the response shape and how mixed filters are applied.
anchor: "properties" (default)
Results are properties. Contacts matching the contact_audience are nested in a contacts array on each property.
- Property filters determine which properties are returned.
- People filters scope the
contactsarray on each property — they do not filter out properties. A property is still returned even if no contacts match. - People fields you request appear on each object in the
contactsarray. - If
contact_audienceis"none", nocontactsarray is included. Default is"owners".
anchor: "people"
Results are people. The contact_audience parameter is required.
- Property filters determine which properties to search within.
- People filters determine which people are returned.
- The response is an array of people matching both the property criteria and the contact audience.
- Each person includes a
residenceobject (where they live — not necessarily a property they own) and a nestedpropertyobject (the associated property from the search). - Requested fields (e.g.,
estimated_value) appear inside the nestedpropertyobject.
Notes
- At least one filter is required. Passing an empty
filtersarray returns a validation error. - All filters are combined with AND logic. See Searching.
contact_audienceis required whenanchoris"people"and defaults to"owners"whenanchoris"properties". Set to"none"to skip contacts entirely.- When
anchoris"properties", people filters scope thecontactsarray but do not filter properties. A property with no matching contacts still appears with an emptycontactsarray. - All search results are enriched and consume credits per entity. Use
estimate_cost: trueto preview credit costs before searching. - Use
source_type=propertiesandsource_type=peoplewhen calling List Filters and List Fields to discover available filters and fields.
Cost Estimate
Setestimate_cost: true to preview the credit cost of a search before committing to it. The request is validated identically to a real search — same filters, same pagination — but no data is returned and no credits are consumed.
totals, pagination, and estimated_credits — but no data array:
| Field | Type | Description |
|---|---|---|
estimated_credits.this_page | integer | Credits this page would consume (new entities only) |
estimated_credits.total_all_pages | integer | Credits all pages combined would consume |
estimated_credits.breakdown.properties | integer | New property credits on this page |
estimated_credits.breakdown.people | integer | New contact credits on this page |
estimated_credits.breakdown.already_accessed | integer | Entities already accessed this billing period (free) |