Developers & AI
API Quickstart
Create an API key, enrich your property list, and understand API credits, rate limits and partial results.
6 min read
On this page
The DealMachine API lets you access real estate data and automate workflows programmatically , including enriching or appending your own list of properties with data like mailing address, ownership, and vacancy.
Can I connect my own list and append data to it?
Yes. If you have a list of properties (for example a parcel number and address, or just an address), you can use the API to look those properties up and pull back the data you want, then add it to your file. You can:
Search for properties or people by location and filters , including custom polygon and radius searches,
Look up a single property or person, or
Batch look up many at once,
and choose exactly which fields come back. The API can search with polygons and radius, apply property filters, and return owner and contact information without any manual use of the DealMachine website. You can also build a list and export it as a CSV.
What data can I get?
Hundreds of property and owner fields, including mailing address, owner information, vacancy, beds, baths, year built, square footage, estimated value and equity, mortgage, tax, sale history, and more. Contact data for the people tied to a property includes names, phones, emails, phone type (mobile or landline), carrier, and National DNC status. There is also a "usage last 2 months" column that helps remove unused or disconnected numbers (and, with the family/relative filters, helps identify deceased homeowners and curative-title deals). The full field and filter reference lives in the API docs.
How do I get access?
You need a DealMachine account. Create an API key in Developer Settings at dealmachine.com/settings/developer
Send the key as a Bearer token in the Authorization header, e.g.
Authorization: Bearer dm_sk_live_...Base URL:
https://api.v2.dealmachine.com/v1Full documentation, endpoints, examples, CLI, and MCP server: api.docs.dealmachine.com
How does pricing work?
API usage is billed in data credits, the same way data works in the DealMachine app:
1 credit per property details export and 1 credit per person report (a person with multiple phones or emails still counts as 1). If one property has two owners and you request both people, that is 2 person credits.
Re-accessing the same record within the same billing month is free , records are de-duplicated, so you're not charged twice. A "last export date" filter remembers when you last exported a record, so you can avoid pulling the same ones again.
You can look up person/contact data only for the properties you choose after your own internal filtering , you don't have to enrich every property a search returns.
You can preview the credit cost of a request before running it, and count endpoints (applying filters and seeing how many records match) are free.
What's free vs. what uses a credit
Some fields return without using a property credit. This is the same whether you export in the app or through the API:
Free (no property credit): address, APN, mailing address, and latitude/longitude. Useful for filtering and deciding which properties to enrich before spending credits.
Uses 1 property credit: exporting property fields such as liens, beds, baths, and other property details.
Plans and volume pricing
See current plans and included data credits. Contact the team for high-volume agreements or higher rate limits.
Rate limits
The default API limit is 60 calls per minute and 5,000 calls per day.
Contact the team for higher-volume rate limits and current agreement options.
Data use and retention
Use and retain data according to the current terms of service and your agreement. Contact the team before using data beyond those terms.
Advanced API behavior: IDs, exclusions, sorting, and date filters
These details answer common developer questions that aren't fully covered in the main docs:
Property IDs. A
dm_property_idis the prefixprop_followed by the numeric property ID (soprop_123456789is123456789). To add properties to a list, strip the prefix and send the numbers toPOST /v1/lists/{list_id}/itemsas{"ids": [123456789, ...]}. The ID type defaults to property IDs.Excluding a list from a search. Pass the string
list_idreturned byPOST /v1/lists(for example"abc-123-def-456") inexclude_lists.property_list_ids. Make sure it is a property list , a list ID that doesn't resolve is ignored, not rejected. Setting"add_as_prospects": falseonly skips adding the records to your CRM prospects; list membership and exclusion still work. Excluded properties are removed in the query itself, so they are never returned and never charged. Allow a couple of minutes after adding items before relying on the exclusion.exclude_previously_exported: true. Records bought through
POST /v1/properties/searchcount as exported, as do exports from the DealMachine web app on the same account. It applies across your whole account with no time limit, so it carries into later billing cycles. A purchase normally becomes excludable within a few minutes. For a guarantee you never receive a record twice, add each purchased page to a dedicated "purchased" list and pass that list inexclude_lists, that is the most dependable method.Sorting by date. When sorting newest-first (descending) by
foreclosure_default_dateormls_last_initial_listing_date, records with no date come last , they are not left out. Sorting oldest-first (ascending) puts them first. These dates are only populated from a recent (last 12 months) foreclosure or MLS record, so many properties have none.Date filters.
is_afteris strictly after the date (the date itself is not included) andis_beforeis strictly before.date_rangeis inclusive of both the start and end dates. Dates are compared as calendar dates, with no time-of-day or timezone effect. No date filter ever matches a record whose date is empty.Do-Not-Call refresh. The
do_not_callflag comes from our data provider's DNC flag, which is refreshed monthly. A value offalsemeans the number wasn't flagged at the last refresh , not a live registry check , so for TCPA compliance we recommend scrubbing against the registry yourself before dialing.
Credit limits and partial results in API responses
Out of credits: the API returns HTTP 402 with
error.codeset to"export_limit_exceeded"and the message "Data credit limit reached for this billing cycle." Theerror.detailsobject includesremaining_creditsandbilling_cycle_end, and aRetry-Afterheader gives the seconds until the cycle resets.Partial page: if your balance covers only part of a page, you receive the records that could be paid for plus a top-level
warningstring (for example "Data credit limit reached. 37 of 100 results included…"). In thecreditsobject,usedis the credits actually charged andpropertiesis the number of records returned. After a partial page, add credits and request the same page again , moving to the next page would skip the records that were cut off.
Evaluate API access
Use Developer Settings to create an API key when your account is eligible. See the API documentation for current access requirements and examples.
For a plan tailored to very high volume, enterprise or licensing needs, reach out and we'll connect you with our team.
Ready to find your next deal?
Join thousands of professionals using DealMachine to find off-market properties and close more deals.