Skip to main content
POST
Search the DealMachine property database using filters. Control which fields are returned, how results are paginated and sorted, and whether contacts are included.

Body Parameters

array
Array of location objects defining where to search. Required unless filters or protocol filters are provided (max 15). Locations use OR logic — results matching any location are included.
array
Array of filter objects. Required unless locations or protocol filters are provided. You can mix property filters (source_type=properties) and people filters (source_type=people).
object
Restrict results to property list IDs, for example { "property_list_ids": [123] }.
object
Exclude property list IDs, for example { "property_list_ids": [456] }.
boolean | object
Exclude records already exported by your organization. Pass true for defaults or a full Query Builder export exclusion object.
integer
Query Builder dataset environment: 1 production, 2 staging, 3 development.
string[]
Field IDs to include in results. Can include both property and people fields. Omit or pass an empty array for the default set. With anchor: "people", property address/context fields do not add property credits. Other property output fields do.
string
default:"properties"
Controls the shape of the response.Use properties to return properties with contacts nested in a contacts array. See Anchor Behavior. Use people to return people with a residence and associated property; this requires contact_audience.
string
default:"owners"
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. Returned contacts consume people credits in addition to property credits.
integer
default:1
Page number (min: 1).
integer
default:25
Results per page (min: 1, max: 250).
array
Array of sort objects for ordering results. See Pagination & Sorting.
boolean
default:false
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 its standard response fields plus any requested fields. Contacts include phones, emails, and DNC status. Credits are consumed per returned entity type. 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.
When 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").

totals

The full count of matching entities across the entire result set, regardless of pagination.

pagination


Anchor Behavior

The anchor 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 contacts array 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 contacts array.
  • If contact_audience is "none", no contacts array is included. Default is "owners".
  • Billing is 1 property data credit per property. Nested contacts consume people credits.

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 residence object (where they live — not necessarily a property they own) and a nested property object (the associated property from the search).
  • Requested fields (e.g., estimated_value) appear inside the nested property object.
  • Billing includes people credits for returned people. Requested chargeable property fields add property credits.

Notes

  • At least one location, filter, list condition, or previous-export condition is required. An empty filters array is valid when another search criterion is present.
  • All filters are combined with AND logic. See Searching.
  • contact_audience is required when anchor is "people" and defaults to "owners" when anchor is "properties". Set to "none" to skip contacts entirely.
  • When anchor is "properties", people filters scope the contacts array but do not filter properties. A property with no matching contacts still appears with an empty contacts array.
  • Billing follows the requested output. Property-anchored rows consume property credits, and returned contacts consume people credits. People-anchored rows consume people credits; property credits are added only when requested property output fields go beyond address/context. See Credit-efficient queries.
  • Use source_type=properties and source_type=people when calling List Filters and List Fields to discover available filters and fields.

Cost Estimate

Set estimate_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.
The response contains totals, pagination, and estimated_credits — but no data array:
Cost estimate is free and does not consume credits. Use it as often as needed. To get just the total count without cost estimates, use Count Properties.