/v2/contact/* for people with their company data attached. Use
/v2/contact/company/* for the company part of that data, deduplicated to
one row per company in search and export results.
It’s the same data as the data feeds, queried live instead of delivered monthly.
What one record is
A record from a contact endpoint is a pre-joined contact: one person, at one company, with that company’s firmographics and insights already attached. There is no join to write and no second call to fetch its available company fields.Person
Name, email, and phone
_PER
+
Their job
Title, seniority, and tenure
_PAO
+
Their company
Size, industry, and location
_ORG
↓
One row from a contact endpoint
Filter on any of the three at once — no join required
Read a column name
The suffix on every column tells you which part of the record it describes. Learn this one thing and the whole API opens up.Developer rule of thumb
COUNTRY_NAME_PER is where the person is. For where the company is, use the HEADQUARTERS_* fields. These are frequently different. For “people in the United States”, you almost always want _PER.RBID_PER for the person, RBID_ORG for the company, RBID_PAO for this person at this company. See Data Overview for the full model, and the Person + Organization + Insights data dictionary for every field.
Company location vs headquarters
Companies operate from more than one place, and the field you pick decides which one you get.
The non-HQ location fields hold a single value today and will become arrays of multiple locations in a future release. Filter on
HEADQUARTERS_* wherever you need a stable, single answer.
Two ways to search
Both read the same graph. What changes is the grain of a row.
Contact Search is the main surface. It returns the whole record — person fields and company fields together — so most work starts and ends here.
Company Search returns the company part of the same data. In contact
results, a company’s fields repeat for each matching person at that company.
Company search and export results deduplicate those companies by
RBID_ORG.
Reach for this surface when you want an account list or a company count.
For example, two contacts at Northwind Analytics and one at Globex are
three contact rows or two company rows:
Use company search fields on contact endpoints
You can filter contact searches directly on company fields: employee size, industry, headquarters, revenue, funding, technologies, and more. Company description SmartSearch and look-alike filters also work on contact searches. Add person or job conditions to find the people you want at those companies. For example, combineHEADQUARTERS_COUNTRY_NAME_ORG = United States,
EMPLOYEE_COUNT_RANGE_ORG = 201-500, and JOB_LEVEL_PER = VP in one filter.
Reuse that filter with contact Count, View, Preview, Insights, or Export.
You do not need to search companies first and pass their IDs to a second query.
The company surface adds three company-only totals:
CONTACT_COUNT,
CONTACTS_WITH_EMAIL, and CONTACTS_WITH_CELLPHONE. Discover supported
fields with /v2/contact/columns for contacts or
/v2/contact/company/columns for companies. Available company fields
returned on a contact row have no separate company-row charge.Company Preview and Company Insights take company filters. Company Count
and Company Export can also apply person or job conditions to the contact
audience and return its distinct companies. See
company filter scope.
Start in three minutes
1
Set your key
Every request takes an API key in the
x-key header. Grab yours from Developers in the dashboard.2
Prove it works
3
Size an audience
This counts VPs located in the United States, using the same audience
as the Count and View examples.Response captured from the local test API on October 13, 2026. Your counts can change.
4
Look at who you got
Reuse the filter with View for a free masked sample.
If the people look right, estimate an export
with an explicit
maxRows and reveal choice, then
start the export.What makes it different
Most contact APIs match characters. A title list of twenty entries misses the forty spellings you didn’t think of, andcontains "marketing" returns Marketing Interns.
SmartSearch matches meaning. Describe a role, describe what a company does, or point at a company you already like — and combine all three in one query, with ordinary filters alongside. Nothing else in this market lets you put five look-alike companies, two job-title searches, and an exclusion in the same request.
The workflow
Use Count, View, Preview, Insights, and Start Export to choose the output you need from the same audience: totals, a masked sample, aggregate analysis, immediate records, or a downloadable file. Start with Count, View, Estimate, then Start Export. The first three steps cost 0 credits. On PAYG, the export charges for returned rows and the contact details you choose, plus any paid SmartSearch filter-node charges.
Preview returns up to 50,000 full contact rows inline
and is charged on PAYG. Enrich retrieves chosen known
records. Export creates a file of up to 1,000,000 rows; use
maxRows to request
a smaller list. See credits and plans for the
additive chart, reveal choices, and the difference between estimates and holds.
Limits
Everything the API caps, in one place. Both surfaces share these unless a row says otherwise.What you send
Both enrich caps count distinct accepted identifiers after normalization and
deduplication, across all supplied lists. For example, 6,000 distinct domains
plus 5,000 distinct LinkedIn URLs exceeds the company cap. Deduplicate inputs
before sending them: both Enrich endpoints reserve PAYG credits using submitted
entries before deduplication. See Contact Enrich and
Company Enrich for their hold calculations.
The two
in list caps are separate and both apply. A single clause may carry 50,000 values, and every in and notIn clause in the filter adds up to at most 50,000 — so four OR-ed clauses of 20,000 each is rejected even though no single clause exceeds the cap.
What you get back
Rate limits
Contact and company endpoints share a default limit of 10 requests per second per authenticated user, across that user’s API keys. Requests over the limit return429. When rate limiting is active, responses include X-RateLimit-Limit,
X-RateLimit-Remaining, and X-RateLimit-Reset. See
Rate limits and error codes for retry guidance
and how to request a higher limit, and Credits & Plans
for usage charges.
