Choose the right method
Count before you do either.
POST /v2/contact/count is immediate and tells you whether a search is worth running.
Every response carries the standard X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. See Rate limits and error codes, and Credits & Plans for what searches and downloads cost on your plan.
Understand the data model
Every record is one person at one company. Person fields and company fields sit on the same record, so a single search can filter on both at once — no joining required. Column names end in a suffix that tells you what the field describes:COUNTRY_NAME_PER is where the person is. For where the company is, use the HEADQUARTERS_* fields — HEADQUARTERS_COUNTRY_NAME_ORG and friends. These are frequently different, so for “people in the United States”, use _PER.
Every field is documented in the Person-Organization-Insight data dictionary, including how each one is sourced and how often it’s populated.
Count matching contacts
Send a filter describing who you want. See Build a search filter for the full syntax.exact object reports which figures are precise. In the default fast mode everything except total is an estimate — display those with a ~. Send "mode": "exact" for precise figures at the cost of a slower response.
Counting accounts rather than people? Company Search takes the same filter and returns one row per company.
Preview matching contacts
Return rows inline to check a search before committing to an export.columns to receive a default set. Results are unordered and there is no pagination — preview returns a sample, not page one of a list. For a complete list, use an export.
Understand the response fields
Export a full list
Exports run asynchronously. Submit the search, poll for status, then download the file.1
Start the export
Returns an
exportId immediately. Formats are csv, json, and parquet; compression is gz, zip, or none.2
Poll for status
status is COMPLETED. Use a reasonable interval — every 5–10 seconds for smaller exports.3
Download the results
A completed export includes a The link requires no API key and expires after one hour. Treat it as a credential — anyone holding it can download the file. Poll again to get a fresh link.
downloadUrl:Track export status
Manage exports
Cancelling an export that has already finished returns its final status unchanged.
Analyze an audience
POST /v2/contact/insights returns aggregate statistics for a filter instead of rows. Send one section per request.
Match contacts you already have
POST /v2/contact/enrich looks up records for a list of email addresses. Send up to 10,000 addresses per request, counted after canonicalization and de-duplication — 12,000 addresses that resolve to 9,000 distinct ones is fine. Over the cap returns 400; split the list and merge the responses. See Limits.
matches; total minus matched is your miss count.
