Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

Enrich by Name

Look up people by name. Provide a data array of name objects (each with a last_name and optional first_name) and the API returns all matching people with their contact information. Optionally include a location to narrow results to a specific area.
Use this endpoint when you know the person's name. Search People is for filter-defined audiences and does not accept a person's name as a filter.
This endpoint returns paginated results: up to 100 people per page. Use page and per_page to navigate through large result sets.

Body Parameters

body dataarrayrequired
Array of name objects to search for (max 250). Each object must include a last_name.
Name object properties
body last_namestringrequired
Last name to search for (case-insensitive).
body first_namestring
First name to narrow results (case-insensitive). Omit to return all people with the matching last name.
body middle_initialstring
Single-character middle initial to narrow results (case-insensitive).
body locationobject
Location to narrow results to a specific area. When omitted, results are not filtered by location. Name lookup supports state, ZIP code, county, and city. For a city, first use the Locations endpoint to resolve the city name to its place ID, then pass that ID as the location code.
Location object properties
body typestringrequired
Location type: "state", "zip_code", "county", or "city".
body codestringrequired
Location code. For states, use the 2-letter abbreviation (e.g., "MO"). For ZIP codes, use the 5-digit code (e.g., "63101"). For counties, use the FIPS code (e.g., "29510"). For cities, use the place ID returned by the Locations endpoint (e.g., "53584").
body include_propertiesboolean
When true, each matched person includes a properties array with all associated properties.
body fieldsstring[]
Field IDs to include in results. People fields return on each person. Property fields return under property.
body pageintegerdefault: 1
Page number for pagination (starts at 1).
body per_pageintegerdefault: 25
Number of results per page (max 100).
body estimate_costboolean
When true, returns a match count and credit estimate without returning person data or consuming credits.

Response Fields

The response contains a data array of person contacts and a pagination object.
When estimate_cost is true, the response contains totals, pagination, and estimated_credits instead. It does not include data or credits, and it does not consume credits.

Person Contact

Each object in the data array contains:
FieldTypeDescription
dm_person_idstringDealMachine internal person ID
full_namestringFull display name
first_name, last_namestring | nullParsed name components
property_countintegerNumber of associated properties. This count is free metadata.
propertyobjectProperty context and requested property fields when fields includes property data.
phonesarrayPhone numbers with number, normalized type, and do_not_call
emailsarrayEmail addresses with address
propertiesarrayAssociated properties. Only present when include_properties is true.

Pagination

FieldTypeDescription
pageintegerCurrent page number
per_pageintegerResults per page
totalintegerTotal number of matching people
total_pagesintegerTotal number of pages

Credits

This endpoint consumes 1 people credit per matched person. The property_count field is free. When include_properties is true, included properties consume property credits. Chargeable property fields requested through fields add property credits. Only matched results consume credits. Credits are deduplicated within your billing period, so accessing the same entity again is free.
Every response includes a credits object with a full breakdown of what was charged. See Credits for details.
Responses with estimate_cost: true are free and do not include a credits object. The estimate covers people credits. When include_properties is true, it also counts associated properties across all matching people and includes the requested page's property credits in the breakdown.

Notes

  • Each name object requires a last_name. A name search without a last name would be too broad.
  • Name matching is case-insensitive and trims whitespace.
  • The location parameter is optional. When provided, results are scoped to that area. When omitted, the search is nationwide.
  • You can submit multiple name objects in the data array to search for several people at once.
  • Use page and per_page to paginate through large result sets. Maximum per_page is 100.
  • When include_properties is true, each person's properties array includes all associated properties.
  • Use estimate_cost: true to preview matching people and, when requested, associated property counts before running a billed enrichment.
Request example
curl -X POST "https://api.v2.dealmachine.com/v1/enrichment/name" \ -H "Authorization: Bearer dm_sk_live_xxx" \ -H "Content-Type: application/json" \ -d '{ "data": [ { "last_name": "Oster", "first_name": "David" } ], "location": { "type": "state", "code": "MO" }, "include_properties": true, "fields": ["full_name", "phones", "estimated_value"], "per_page": 25, "page": 1 }'
Response example
{ "data": [ { "dm_person_id": "per_x1y2z3", "full_name": "David Oster", "first_name": "David", "last_name": "Oster", "phones": [ { "number": "3145551234", "type": "wireless", "do_not_call": false }, { "number": "3145559999", "type": "wireless", "do_not_call": false } ], "emails": [{ "address": "david.oster@example.com" }], "property_count": 1, "properties": [ { "dm_property_id": "prop_a1b2c3", "address": "1200 Market St", "city": "St. Louis", "state": "MO", "zip": "63101", "latitude": 38.627, "longitude": -90.1994 } ] } ], "credits": { "used": 2, "properties": 1, "people": 1, "deduplicated": 0 }, "pagination": { "page": 1, "per_page": 25, "total": 1, "total_pages": 1 } }