body querystring"estimated_value", "TX", "john@example.com", "48201", "equity", "555-123-4567", "1200 Barton Springs""equity" matches activities that used the equity_percent filter.body filtersobjectbody typestring[]body typesstring[]filters.type for new clients.body date_rangeobjectstart for "all time before end", omit end for "all time after start".body startstringbody endstringbody entity_idsstring[]dm_person_id values (e.g., "per_x1y2z3") or dm_property_id values (e.g., "prop_a1b2c3"). Activities matching any of the provided IDs are returned.body pageintegerdefault: 11).body per_pageintegerdefault: 251, max: 100).body sortarray[{ "field": "created_at", "direction": "desc" }] (most recent first).body fieldstringrequiredcreated_at, type, total_results, credits_used, relevance. The relevance option is only available when query is provided and ranks results by match quality.body directionstringrequiredasc (ascending) or desc (descending).data| Field | Type | Description |
activity_id | string | Unique activity identifier (e.g., act_r7s8t9u0). Use this with Get Activity for full details. |
type | string | Activity type. See Activity Types. |
created_at | string | ISO 8601 timestamp of when the request was made. |
api_key_id | string | Stable identifier for the API key or OAuth token that made the request. |
api_key_name | string or null | Current name of the API key. null when the matching key record is no longer available. |
matched_on | string[] | Only present when query is provided. Shows which parts of the request matched the search term (e.g., "filters: equity_percent", "locations: TX", "input: john@example.com"). |
request_summary | object | Summary of the original request parameters (see below). |
result_summary | object | Summary of what the request returned (see below). |
request_summarysearch_people, search_properties, count_people, count_properties):| Field | Type | Description |
locations | array | The location objects used in the search |
filters | array | The filter objects with filter_id, operator, and value |
fields | string[] | The field IDs requested (empty array if defaults were used) |
enrich_email, enrich_phone, enrich_address, enrich_latlng, enrich_reverse_geocode, enrich_apn, enrich_name):| Field | Type | Description |
enrichment_type | string | The enrichment method (email, phone, address, latlng, reverse_geocode, apn, name) |
items_submitted | integer | Number of items in the original request data array |
fields | string[] | The field IDs requested |
result_summary| Field | Type | Description |
total_results | integer | Total matching records across all pages |
total_pages | integer | Total pages available |
pages_retrieved | integer | How many pages you actually fetched (across multiple requests with different page values) |
credits_used | integer | Total credits consumed across all pages retrieved |
entity_count.people | integer | Unique people returned |
entity_count.properties | integer | Unique properties returned |
| Field | Type | Description |
total_results | integer | Total matched entities |
items_matched | integer | Items that found a match |
items_unmatched | integer | Items that did not match |
credits_used | integer | Credits consumed |
entity_count.people | integer | Unique people returned |
entity_count.properties | integer | Unique properties returned |
| Field | Type | Description |
total_results | integer | The count returned |
credits_used | integer | Always 0 (counts are free) |
pagination| Field | Type | Description |
page | integer | Current page number |
per_page | integer | Results per page |
total_results | integer | Total activity records matching your query |
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 |
query parameter searches across the full request parameters of every activity. This is the fastest way to find a past search when you remember what filters or inputs you used, but not the exact date or activity ID.| Activity Type | Searchable Fields |
| Searches | Filter IDs (estimated_value, equity_percent, has_phone...), filter values, location types and codes (TX, 48201, 90210), requested field names |
| Enrichments | Enrichment inputs (email addresses, phone numbers, street addresses, APNs, coordinates), requested field names |
| All types | Activity type name |
"equity" matches equity_percent"barton" matches "1200 Barton Springs Rd""TX equity" matches activities that contain both TX and equity anywhere in the requestquery together with filters.type, date_range, and entity_ids to narrow results further1{ "query": "equity" }
1{ "query": "john.smith@example.com", "filters": { "type": ["enrich_email"] } }
12345678910{ "query": "TX", "filters": { "type": ["search_people", "search_properties"] }, "date_range": { "start": "2025-06-01T00:00:00Z", "end": "2025-06-30T23:59:59Z" } }
1{ "query": "1200 Barton Springs" }
query, sort by relevance to get the best matches first. Without query, relevance sort is not available and the default sort is created_at descending.entity_ids parameter lets you find all past activity that involved a specific person or property. This is especially useful for:123456curl -X POST "https://api.v2.dealmachine.com/v1/activity/search" \ -H "Authorization: Bearer dm_sk_live_xxx" \ -H "Content-Type: application/json" \ -d '{ "entity_ids": ["per_x1y2z3", "prop_a1b2c3"] }'
per_x1y2z3 or prop_a1b2c3 appeared in the results. The match is OR logic — activities matching any of the provided IDs are included.{} returns your most recent activity, sorted newest first.request_summary is a condensed view. Use Get Activity for the full, unmodified request parameters.1234567891011121314curl -X POST "https://api.v2.dealmachine.com/v1/activity/search" \ -H "Authorization: Bearer dm_sk_live_xxx" \ -H "Content-Type: application/json" \ -d '{ "query": "equity", "filters": { "type": ["search_people", "search_properties"] }, "page": 1, "per_page": 25, "sort": [ { "field": "relevance", "direction": "desc" } ] }'
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869{ "data": [ { "activity_id": "act_e5f6g7h8", "type": "search_properties", "created_at": "2025-06-20T11:45:00Z", "api_key_id": "key_abc123", "api_key_name": "Production integration", "matched_on": ["filters: equity_percent", "fields: equity_percent"], "request_summary": { "locations": [ { "type": "county", "code": "48201" }, { "type": "county", "code": "48113" } ], "filters": [ { "filter_id": "property_type_id", "operator": "contains_any", "value": [1] }, { "filter_id": "equity_percent", "operator": "greater_than_or_equal", "value": 40 } ], "fields": ["estimated_value", "estimated_equity_percentage", "owner_1_full_name"] }, "result_summary": { "total_results": 3412, "total_pages": 137, "pages_retrieved": 5, "credits_used": 125, "entity_count": { "people": 0, "properties": 125 } } }, { "activity_id": "act_r7s8t9u0", "type": "search_people", "created_at": "2025-06-28T14:22:00Z", "api_key_id": "key_def456", "api_key_name": "Data warehouse", "matched_on": ["fields: estimated_value"], "request_summary": { "locations": [ { "type": "state", "code": "TX" } ], "filters": [ { "filter_id": "estimated_value", "operator": "greater_than", "value": 500000 }, { "filter_id": "has_phone", "value": true } ], "fields": ["full_name", "phones", "estimated_value"] }, "result_summary": { "total_results": 1250, "total_pages": 50, "pages_retrieved": 3, "credits_used": 75, "entity_count": { "people": 75, "properties": 68 } } } ], "pagination": { "page": 1, "per_page": 25, "total_results": 2, "total_pages": 1, "has_next_page": false, "has_previous_page": false } }