body locationsarrayproperty_ids or protocol filters are provided (max 15). Locations use OR logic — results matching any location are included.body typestringrequiredstate, county, city, zip_code, radius, or polygon.body codestringstate (2-letter abbreviation, e.g., "TX"), county (5-digit FIPS code, e.g., "29189"), city (place ID, e.g., "7333"), and zip_code (5-digit ZIP, e.g., "63101").body latitudenumberradius.body longitudenumberradius.body radius_milesnumberradius.body coordinatesarray[longitude, latitude] pairs defining the boundary. Required for polygon (minimum 3 points).body include_listsobject{ "property_list_ids": [123] }.body exclude_listsobject{ "property_list_ids": [456] }.body exclude_previously_exportedboolean | objectbody filtersarraybody filter_idstringrequiredbody operatorstringallowed_operators. See Filter Values for all operators by type. Optional for BOOLEAN filters — automatically defaults to is_boolean.body valueanyrequiredbody fieldsstring[]coordinates once to add separate latitude and longitude columns. Use
person_coordinates to add separate person_latitude and person_longitude columns when the
export includes people.body contact_audiencestringowners, owners_and_family, renters, residentsbody anchorstringdefault: propertyproperty — One row per property. Property-only output consumes property credits. When contacts
are included, people credits apply and property credits depend on the selected property fields.person — One row per person. Deduplicates people across properties.phone — One row per phone number.email — One row per email address.body require_phonebooleanbody require_emailbooleanbody mobile_onlybooleanlandline_only.body landline_onlybooleanmobile_only.body scrub_dncboolean| Field | Type | Description |
export_id | string | Unique identifier for this export |
record_count | integer | Number of records in the exported CSV |
file_count | integer | Number of files generated (large exports may produce multiple files) |
total_file_size | integer | Total size of all files in bytes |
execution_time | number | Time taken to complete the export in seconds |
download_urls | array | Signed download URLs for the exported files |
credits.used | integer | Total credits consumed by this export |
credits.properties | integer | Number of property lead records billed |
credits.people | integer | Number of people/contact lead records billed |
download_urlsdownload_urls array contains:| Field | Type | Description |
filename | string | Suggested filename for the download (e.g., properties_export_2026-02-17.csv.gz) |
url | string | Signed URL — valid for a limited time. Download promptly after receiving the response. |
size | integer | File size in bytes |
.csv.gz). Most tools (Excel, Google Sheets, Python
pandas) can open .csv.gz files directly. To decompress manually, use gunzip or any archive
tool.export_id in the response with Get Export to retrieve download URLs later, or List Exports to browse past exports.123456789101112131415161718192021222324252627curl -X POST "https://api.v2.dealmachine.com/v1/properties/export" \ -H "Authorization: Bearer dm_sk_live_xxx" \ -H "Content-Type: application/json" \ --max-time 120 \ -d '{ "locations": [ { "type": "county", "code": "48201" } ], "filters": [ { "filter_id": "estimated_value", "operator": "range", "value": { "min": 200000, "max": 600000 } }, { "filter_id": "has_absentee_owners", "value": true } ], "fields": [ "coordinates", "estimated_value", "estimated_equity_percentage", "year_built" ], "contact_audience": "owners" }'
123456789101112131415161718{ "export_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "record_count": 15432, "file_count": 1, "total_file_size": 2457600, "execution_time": 34.7, "download_urls": [ { "filename": "properties_export_2026-02-17.csv.gz", "url": "https://storage.googleapis.com/...", "size": 2457600 } ], "credits": { "used": 15432, "properties": 15432 } }