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.
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
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.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 Save the
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.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
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.
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.
