Skip to main content
GET
/
v1
/
activity
/
:activity_id
curl "https://api.v2.dealmachine.com/v1/activity/act_r7s8t9u0" \
  -H "Authorization: Bearer dm_sk_live_xxx"
{
  "data": {
    "activity_id": "act_r7s8t9u0",
    "type": "search_people",
    "created_at": "2025-06-28T14:22:00Z",
    "request": {
      "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"],
      "property_match": "owner",
      "page": 1,
      "per_page": 25,
      "sort": [{ "field_id": "full_name", "direction": "asc" }]
    },
    "result_summary": {
      "total_results": 1250,
      "total_pages": 50,
      "pages_retrieved": 3,
      "credits_used": 75,
      "credits_breakdown": {
        "new_people": 45,
        "new_properties": 22,
        "repeat": 8
      },
      "entity_count": {
        "people": 75,
        "properties": 68
      }
    },
    "entity_ids": {
      "people": ["per_x1y2z3", "per_a4b5c6", "per_d7e8f9", "per_g0h1i2"],
      "properties": ["prop_a1b2c3", "prop_d4e5f6", "prop_g7h8i9"],
      "pagination": {
        "page": 1,
        "per_page": 250,
        "total_people": 75,
        "total_properties": 68,
        "has_next_page": false
      }
    }
  }
}
Retrieve the full details of a specific activity record, including the complete original request parameters and the entity IDs that were returned. Use the activity_id from Search Activity results.

Path Parameters

activity_id
string
required
The activity ID to retrieve (e.g., act_r7s8t9u0).

Query Parameters

entity_page
integer
default:1
Page number for the entity_ids array. Since a single search can return thousands of entities, the IDs are paginated separately.
entity_per_page
integer
default:250
Entity IDs per page (min: 1, max: 250).

curl "https://api.v2.dealmachine.com/v1/activity/act_r7s8t9u0" \
  -H "Authorization: Bearer dm_sk_live_xxx"
{
  "data": {
    "activity_id": "act_r7s8t9u0",
    "type": "search_people",
    "created_at": "2025-06-28T14:22:00Z",
    "request": {
      "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"],
      "property_match": "owner",
      "page": 1,
      "per_page": 25,
      "sort": [{ "field_id": "full_name", "direction": "asc" }]
    },
    "result_summary": {
      "total_results": 1250,
      "total_pages": 50,
      "pages_retrieved": 3,
      "credits_used": 75,
      "credits_breakdown": {
        "new_people": 45,
        "new_properties": 22,
        "repeat": 8
      },
      "entity_count": {
        "people": 75,
        "properties": 68
      }
    },
    "entity_ids": {
      "people": ["per_x1y2z3", "per_a4b5c6", "per_d7e8f9", "per_g0h1i2"],
      "properties": ["prop_a1b2c3", "prop_d4e5f6", "prop_g7h8i9"],
      "pagination": {
        "page": 1,
        "per_page": 250,
        "total_people": 75,
        "total_properties": 68,
        "has_next_page": false
      }
    }
  }
}

Response Fields

data

The full activity record.
FieldTypeDescription
activity_idstringUnique activity identifier
typestringActivity type. See Activity Types.
created_atstringISO 8601 timestamp of when the request was made
requestobjectThe complete original request parameters (see below)
result_summaryobjectFull result and credit breakdown (see below)
entity_idsobjectPaginated entity IDs returned by this activity (see below)

request

The full, unmodified request body that was sent to the original endpoint. This is the complete version of what request_summary shows in Search Activity. For search types, this is the exact search request body:
FieldTypeDescription
locationsarrayLocation objects used
filtersarrayFilter objects with filter_id, operator, value
fieldsstring[]Requested field IDs
property_matchstringPerson-to-property relationship (if set)
pageintegerPage number requested
per_pageintegerResults per page
sortarraySort configuration
For enrichment types, this is the enrichment request:
FieldTypeDescription
enrichment_typestringThe enrichment method
itemsarrayThe input items submitted (email addresses, phone numbers, addresses, etc.)
fieldsstring[]Requested field IDs
include_propertiesbooleanWhether properties were included
The request object contains the exact parameters you can copy-paste to re-run the same query. For search types, pass it directly to the corresponding search endpoint. For enrichment types, wrap the items array back into a data field.

result_summary

FieldTypeDescription
total_resultsintegerTotal matching records
total_pagesintegerTotal pages available (search types only)
pages_retrievedintegerPages you actually fetched (search types only)
items_submittedintegerItems in the request (enrichment types only)
items_matchedintegerItems that matched (enrichment types only)
items_unmatchedintegerItems that didn’t match (enrichment types only)
credits_usedintegerTotal credits consumed
credits_breakdownobjectBreakdown of credit charges
credits_breakdown.new_peopleintegerNew people accessed (charged)
credits_breakdown.new_propertiesintegerNew properties accessed (charged)
credits_breakdown.repeatintegerPreviously accessed entities (free)
entity_count.peopleintegerUnique people returned
entity_count.propertiesintegerUnique properties returned

entity_ids

The entity IDs that were captured for this activity response. Search activities only include the IDs returned by that specific API response page, so a search originally requested with per_page: 25 will only have up to 25 entity IDs in its activity detail. When an activity captured more IDs, they are paginated with the entity_page and entity_per_page query parameters.
FieldTypeDescription
peoplestring[]Array of dm_person_id values (e.g., "per_x1y2z3")
propertiesstring[]Array of dm_property_id values (e.g., "prop_a1b2c3")
pagination.pageintegerCurrent entity page
pagination.per_pageintegerEntity IDs per page
pagination.total_peopleintegerTotal unique people across all pages
pagination.total_propertiesintegerTotal unique properties across all pages
pagination.has_next_pagebooleanWhether more entity IDs exist

Paginating Entity IDs

A single activity can capture up to the number of records returned by the original request. The entity_ids section paginates those captured IDs separately so the activity detail response stays fast. To retrieve all entity IDs from a large search:
const activityId = 'act_r7s8t9u0';
const allPeople: string[] = [];
const allProperties: string[] = [];
let page = 1;
let hasMore = true;

while (hasMore) {
  const res = await fetch(
    `https://api.v2.dealmachine.com/v1/activity/${activityId}?entity_page=${page}&entity_per_page=250`,
    { headers: { Authorization: `Bearer ${apiKey}` } }
  );

  const { data } = await res.json();
  allPeople.push(...data.entity_ids.people);
  allProperties.push(...data.entity_ids.properties);
  hasMore = data.entity_ids.pagination.has_next_page;
  page++;
}

console.log(`Total people: ${allPeople.length}`);
console.log(`Total properties: ${allProperties.length}`);

The request object contains everything you need to replay a search:
// 1. Get the activity detail
const activityRes = await fetch(`https://api.v2.dealmachine.com/v1/activity/${activityId}`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data: activity } = await activityRes.json();

// 2. Re-run the same search
const searchRes = await fetch('https://api.v2.dealmachine.com/v1/people/search', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(activity.request),
});
Re-running a search within the same billing period will not charge credits for entities you’ve already accessed. Check credits.breakdown.repeat in the search response to see how many were free.

Notes

  • This endpoint does not consume credits.
  • Activity is scoped to your organization — you can access activity created by any API key under your account.
  • Count activities (count_people, count_properties) will have empty entity_ids since no entity data is returned.
  • For enrichment activities, entity_ids includes only the entities from matched items.
  • The request.items array in enrichment activities is capped at the first 100 items in the response. For enrichments with more than 100 items, the full list is available but truncated in this view.
  • Activity records are retained for 12 months.