Skip to main content
Use the Contact Search API to find business contacts by role, company, and location. Using Count, View, Estimate, and Export lets you check the audience before paying for the records and contact details you need.

Choose the right method

Reuse the same filter across the steps. To control spend, choose reveal explicitly and set limit for inline records or a positive maxRows for a file. See Which endpoint should I use? for a visual comparison of Count, View, Preview, Insights, and Start Export, with free calls and PAYG credit costs labeled. When rate limiting is active, Contact API responses report the limit through X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. See Rate limits and error codes for retry guidance, and Credits and plans for the prices. AYCE includes unlimited contact retrieval for 0 credits; per-request limits still apply.

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. The company search fields also work here. Filter contacts by their company’s size, industry, headquarters, revenue, funding, or technologies, and combine those conditions with a person’s role or location. Company description SmartSearch and look-alike filters are available on contact searches too. See shared company fields for the company-only contact-total exceptions. 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.
COUNTRY_NAME_ORG is a location the company operates from, not necessarily the head office. For “companies headquartered in the United States”, use HEADQUARTERS_COUNTRY_NAME_ORG. See Company location vs headquarters.
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.
Response captured from the local test API on October 13, 2026. Results can change.
The 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

Preview returns full contact rows inline and is charged on PAYG. Use View for a free masked relevance check. The example below buys email without mobile; see credits.
Response: Response captured from the local test API on October 13, 2026 using an AYCE account. Results can change.
Omit 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. First inspect a free View, then estimate the export. Use the same body with an explicit row cap and reveal choice when starting the paid job.
1

Start the export

Returns an exportId when accepted; acceptance is not completion. This bounded example retrieves up to 100 contacts with email, without mobile. It can reserve up to 200 credits on PAYG before writing the file.
Save the exportId returned by your start call as REVENUEBASE_EXPORT_ID. Read your actual status response for row counts and the download link.
2

Poll for status

Poll every 5–10 seconds initially and back off for longer jobs. Stop on COMPLETED, ERROR, or CANCELLED. Status calls cost 0 credits.
3

Download the results

A completed export includes a downloadUrl:Save the exportId returned by your start call as REVENUEBASE_EXPORT_ID. Read your actual status response for row counts and the download link.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.

Track export status

Manage exports

Cancelling an export that has already finished returns its final status unchanged. The complete Export reference explains credit holds, settlement, cancellation, signed-link refresh, and safe retry decisions.

Analyze an audience

POST /v2/contact/insights returns aggregate statistics for a filter instead of rows. Send one section per request.
Response: Response captured from the local test API on October 13, 2026. Results can change.

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.
Response: Response captured from the local test API on October 13, 2026 using an AYCE account. Results can change.
Results are keyed by the address you submitted, so they join directly back to your own list. Addresses with no match are absent from matches; total minus matched is your miss count.

Browse the data

Response: Response captured from the local test API on October 13, 2026. Results can change.
For what each field contains and how it’s sourced, see the Person-Organization-Insight data dictionary. The catalog tells you which columns exist; the data dictionary tells you what they mean.

Find similar companies

Look-alike search is company-grain, so it lives on the company surface — see Search for companies. You can still use a look-alike leg inside a contact filter to find people at similar companies; see SmartSearch.

Next steps