Skip to main content

DealMachine API and data enrichment: what it does, access, and pricing

Use the DealMachine API to search, look up, enrich, and export property and owner data. Covers access, data-credit pricing and plans, rate limits, what's free vs billed, contact/DNC data, storing and using records, and the trial policy.

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/v1

  • Full 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

  • $99 per 10,000 data credits per month. You can upgrade in 10,000-credit increments as needed, up to 60,000 data credits per month.

  • Beyond 60,000 per month, credits are sold in 100,000 increments at $599 per month each, which require a 12-month commitment (billed monthly). Multiple 100,000-credit packages can be used on one account.

  • DealMachine sells these as subscriptions (not pay-as-you-go). If you go over your monthly credits on the cancel-anytime plan, you can wait for the plan to renew or arrange an upgrade with the team; there isn't a separate per-credit overage charge.

Rate limits

  • The default API limit is 60 calls per minute and 5,000 calls per day.

  • Higher rate limits are available for Scale Plan customers (100,000 data credits per month and above). The next level up is 60 calls per minute and 10,000 per day for an added $100 per month on an annual Scale Plan agreement.

Storing and using the data

You can store API-returned records in your own CRM and use those contacts in your own outbound calling systems, including an external AI voice platform, subject to your own compliance obligations. One exception: if you are serving DealMachine API data inside your own customer-facing app, we ask that you do not cache it.

Keeping records after you cancel

On normal accounts (under 1,000,000 records per month), you can keep using records you've already acquired even if you later cancel. If you need to go above 1,000,000 records per month, that moves to a data license — under a license you would not be able to keep using the records after cancelling.

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_id is the prefix prop_ followed by the numeric property ID (so prop_123456789 is 123456789). To add properties to a list, strip the prefix and send the numbers to POST /v1/lists/{list_id}/items as {"ids": [123456789, ...]}. The ID type defaults to property IDs.

  • Excluding a list from a search. Pass the string list_id returned by POST /v1/lists (for example "abc-123-def-456") in exclude_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": false only 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/search count 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 in exclude_lists — that is the most dependable method.

  • Sorting by date. When sorting newest-first (descending) by foreclosure_default_date or mls_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_after is strictly after the date (the date itself is not included) and is_before is strictly before. date_range is 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_call flag comes from our data provider's DNC flag, which is refreshed monthly. A value of false means 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.code set to "export_limit_exceeded" and the message "Data credit limit reached for this billing cycle." The error.details object includes remaining_credits and billing_cycle_end, and a Retry-After header 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 warning string (for example "Data credit limit reached. 37 of 100 results included…"). In the credits object, used is the credits actually charged and properties is 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.

Is there a free API trial?

We can't offer free trials of this type of data (for legal reasons). The best way to evaluate it is to start on the $99/month plan, which you can cancel any time — generate an API key from inside the account and fully test the API, data coverage, and match rates that way.

For a plan tailored to very high volume, enterprise or licensing needs, reach out and we'll connect you with our team.

Did this answer your question?