curl -X POST "https://api.v2.dealmachine.com/v1/people/search/count" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"locations": [
{ "type": "state", "code": "TX" }
],
"property_match": "owner",
"filters": [
{
"filter_id": "estimated_value",
"operator": "greater_than",
"value": 500000
},
{
"filter_id": "has_phone",
"value": true
}
]
}'
const response = await fetch('https://api.v2.dealmachine.com/v1/people/search/count', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
locations: [{ type: 'state', code: 'TX' }],
property_match: 'owner',
filters: [
{
filter_id: 'estimated_value',
operator: 'greater_than',
value: 500000,
},
{ filter_id: 'has_phone', value: true },
],
}),
});
const counts = await response.json();
console.log(`People: ${counts.total_people.toLocaleString()}`);
console.log(`Properties: ${counts.total_properties.toLocaleString()}`);
import requests
response = requests.post(
"https://api.v2.dealmachine.com/v1/people/search/count",
headers={"Authorization": f"Bearer {api_key}"},
json={
"locations": [{"type": "state", "code": "TX"}],
"property_match": "owner",
"filters": [
{
"filter_id": "estimated_value",
"operator": "greater_than",
"value": 500000,
},
{"filter_id": "has_phone", "value": True},
],
},
)
counts = response.json()
print(f"People: {counts['total_people']:,}")
print(f"Properties: {counts['total_properties']:,}")
{
"total_people": 412,
"total_properties": 387,
"total_results": 412
}
{
"total_people": 89,
"total_properties": 0,
"total_results": 89
}
{
"error": {
"code": "validation_error",
"message": "Validation failed",
"request_id": "req_abc123def456",
"details": {
"issues": [
{
"path": "property_match",
"message": "property_match is required when property filters are present"
}
]
}
}
}
{
"error": {
"code": "invalid_api_key",
"message": "The provided API key is invalid",
"request_id": "req_def456ghi789"
}
}
{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry after the specified time.",
"request_id": "req_ghi789jkl012"
}
}
People
Count People
POST
/
v1
/
people
/
search
/
count
curl -X POST "https://api.v2.dealmachine.com/v1/people/search/count" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"locations": [
{ "type": "state", "code": "TX" }
],
"property_match": "owner",
"filters": [
{
"filter_id": "estimated_value",
"operator": "greater_than",
"value": 500000
},
{
"filter_id": "has_phone",
"value": true
}
]
}'
const response = await fetch('https://api.v2.dealmachine.com/v1/people/search/count', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
locations: [{ type: 'state', code: 'TX' }],
property_match: 'owner',
filters: [
{
filter_id: 'estimated_value',
operator: 'greater_than',
value: 500000,
},
{ filter_id: 'has_phone', value: true },
],
}),
});
const counts = await response.json();
console.log(`People: ${counts.total_people.toLocaleString()}`);
console.log(`Properties: ${counts.total_properties.toLocaleString()}`);
import requests
response = requests.post(
"https://api.v2.dealmachine.com/v1/people/search/count",
headers={"Authorization": f"Bearer {api_key}"},
json={
"locations": [{"type": "state", "code": "TX"}],
"property_match": "owner",
"filters": [
{
"filter_id": "estimated_value",
"operator": "greater_than",
"value": 500000,
},
{"filter_id": "has_phone", "value": True},
],
},
)
counts = response.json()
print(f"People: {counts['total_people']:,}")
print(f"Properties: {counts['total_properties']:,}")
{
"total_people": 412,
"total_properties": 387,
"total_results": 412
}
{
"total_people": 89,
"total_properties": 0,
"total_results": 89
}
{
"error": {
"code": "validation_error",
"message": "Validation failed",
"request_id": "req_abc123def456",
"details": {
"issues": [
{
"path": "property_match",
"message": "property_match is required when property filters are present"
}
]
}
}
}
{
"error": {
"code": "invalid_api_key",
"message": "The provided API key is invalid",
"request_id": "req_def456ghi789"
}
}
{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry after the specified time.",
"request_id": "req_ghi789jkl012"
}
}
Returns the total number of people and properties matching a set of filters. Use the same
filters and property_match parameters as Search People.
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.
Show Location object properties
Show Location object properties
string
required
Location type:
state, county, city, zip_code, radius, or polygon.string
Location identifier. Required for
state (2-letter abbreviation), county (5-digit FIPS code), city (place ID), and zip_code (5-digit ZIP).number
Center point latitude. Required for
radius.number
Center point longitude. Required for
radius.number
Search radius in miles. Required for
radius.array
Array of
[longitude, latitude] pairs defining the boundary. Required for polygon (minimum 3 points).array
Array of filter objects. Required unless locations or protocol filters are provided. You can mix people filters (
source_type=people) and property filters (source_type=properties).Show Filter object properties
Show Filter object properties
string
required
The filter slug from the List Filters endpoint (e.g.,
has_phone, estimated_value).string
One of the filter’s
allowed_operators. See Filter Values for all operators by type. Optional for BOOLEAN filters — automatically defaults to is_boolean.any
required
The filter value. Shape depends on the operator — can be a number, string, boolean, array, or object. See Filter Values.
object
Restrict counts to people list IDs, for example
{ "people_list_ids": [123] }.object
Exclude people list IDs, for example
{ "people_list_ids": [456] }.boolean | object
Exclude people already exported by your organization.
string
Required when property filters are present. Defines the person-to-property relationship used to connect people to matching properties. Ignored when only people filters are used.Options:
owner, resident, rentercurl -X POST "https://api.v2.dealmachine.com/v1/people/search/count" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"locations": [
{ "type": "state", "code": "TX" }
],
"property_match": "owner",
"filters": [
{
"filter_id": "estimated_value",
"operator": "greater_than",
"value": 500000
},
{
"filter_id": "has_phone",
"value": true
}
]
}'
const response = await fetch('https://api.v2.dealmachine.com/v1/people/search/count', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
locations: [{ type: 'state', code: 'TX' }],
property_match: 'owner',
filters: [
{
filter_id: 'estimated_value',
operator: 'greater_than',
value: 500000,
},
{ filter_id: 'has_phone', value: true },
],
}),
});
const counts = await response.json();
console.log(`People: ${counts.total_people.toLocaleString()}`);
console.log(`Properties: ${counts.total_properties.toLocaleString()}`);
import requests
response = requests.post(
"https://api.v2.dealmachine.com/v1/people/search/count",
headers={"Authorization": f"Bearer {api_key}"},
json={
"locations": [{"type": "state", "code": "TX"}],
"property_match": "owner",
"filters": [
{
"filter_id": "estimated_value",
"operator": "greater_than",
"value": 500000,
},
{"filter_id": "has_phone", "value": True},
],
},
)
counts = response.json()
print(f"People: {counts['total_people']:,}")
print(f"Properties: {counts['total_properties']:,}")
{
"total_people": 412,
"total_properties": 387,
"total_results": 412
}
{
"total_people": 89,
"total_properties": 0,
"total_results": 89
}
{
"error": {
"code": "validation_error",
"message": "Validation failed",
"request_id": "req_abc123def456",
"details": {
"issues": [
{
"path": "property_match",
"message": "property_match is required when property filters are present"
}
]
}
}
}
{
"error": {
"code": "invalid_api_key",
"message": "The provided API key is invalid",
"request_id": "req_def456ghi789"
}
}
{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry after the specified time.",
"request_id": "req_ghi789jkl012"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
total_people | integer | Number of people matching the filters |
total_properties | integer | Number of properties connected via property_match. 0 when no property filters are used. |
total_results | integer | Always equals total_people for people search |
Notes
- The same filter validation rules apply as Search People.
property_matchis required when any property filter is present, and ignored when only people filters are used.- When no property filters are present,
total_propertiesis0.
⌘I