Choose the right surface
Both surfaces read the same underlying data. What differs is the grain of a row and therefore what a count means.
Searching for “software companies with 200–500 employees” on the contact surface returns every person at those companies. On the company surface it returns the companies themselves, each with a count of how many contacts you’d get.
Searches and downloads on both surfaces bill the same way — see Credits & Plans.
Understand the data model
Company rows are built from the contact data on the same schedule, so the two surfaces cannot disagree. Every company row carries the_ORG fields you already know, plus contact totals that are pre-aggregated for you:
Because a company row has no person on it, person fields aren’t available here. Filtering on a
_PER or _PAO column, or on a job title SmartSearch, returns a 422 naming the fix rather than an unhelpful “unknown column”.
Count matching companies
fast / exact split here — one row per company means the count is exact by construction. A mode field is accepted and ignored, so the same request body works against both surfaces.
The contact totals answer the question that usually comes next: this many accounts, and this many reachable people at them.
Preview matching companies
columns and you get a default set covering name, domain, website, size, revenue, country, and the two main contact totals. Same limits as contact preview: 1,000 by default, 50,000 maximum.
With "includeScores": true on a SmartSearch filter, rows come back best-match first — which makes preview the fastest way to judge whether a description search or look-alike is aimed correctly.
Analyze a set of companies
POST /v2/contact/company/insights takes two of the four contact sections. reachability and freshness describe people, so they have no company analogue.
Match companies you already have
POST /v2/contact/company/enrich looks up companies by domain, by LinkedIn URL, or both in one request. Up to 10,000 keys per call, counted across both lists together after canonicalization and de-duplication — 6,000 domains plus 5,000 LinkedIn URLs is over the cap. Over it returns 400; split the input and merge the responses. See Limits.
matches is keyed by the canonical form — so HTTPS://Northwind.com/ and northwind.com land on the same entry. RBID_ORG is always included, which is what you feed back into a look-alike search.
Find similar companies
POST /v2/contact/company/lookalike returns companies whose business resembles one you name, ranked by description similarity.
match / maxDistance pair as a look-alike filter leg — one or the other, never both — and defaults to similar when you send neither. limit is optional and uncapped: it pages what the floor already selected, so omitting it returns every company above the floor. The response echoes the limit, match, and minSimilarity it ran with, and a short list always means that is all there is.
To build an account list with other filters applied — size, geography, industry — use a look-alike filter leg with POST /v2/contact/company/count and /preview instead. See SmartSearch.
Export a company list
Identical to the contact flow — start, poll, download — against/v2/contact/company/exports.
1
Start the export
2
Poll for status
3
Download the results
A completed export carries a
downloadUrl valid for one hour.Browse company fields
The company catalog lists org-grain fields only, so anything it returns is safe to use in a company filter. For what each field contains and how it’s sourced, see the Person-Organization-Insight data dictionary.
