Search
Query 50M+ companies and 500M+ professional profiles with structured filters — count for free, then pull only the results you want.
Search
We index 50M+ companies and 500M+ professional profiles, and expose them through structured filters — Series B fintechs in Berlin under 200 people, or the VPs of Engineering who joined them in the last six months.
Counting matches is free; you pay only for the results you pull.
Prefer to describe your target in plain English? Agentic search resolves a sentence into these same filters and runs the same query — same accuracy, same credit model.
The four search surfaces
| Operation | What you search | Returns |
|---|---|---|
companySearch | Companies by firmographics, funding, tech, location | Company records |
peopleSearch | People by title, employer, tenure, location, keywords | Profile records |
jobPostingSearch | Open job postings | Job records |
paginatedCombinedSearch | Companies and the people who work at them, in one pass | Both, linked |
Every one has a free *Count sibling. Use it first. If you already hold
LinkedIn URLs or domains, skip search entirely and resolve them
directly.
Filtering companies
Company filters, by group:
| Filter group | Examples |
|---|---|
| Identity | domains, linkedinSlugs, nameLike, exactCompanyV2, tlds |
| Size & money | employeeCountV2, revenueRangeUSD, totalFundingUSD, lastFundingUSD, stage |
| Timing | foundedOn, lastFundedOn, employeeTrendsV2 |
| Classification | industriesV2, linkedinIndustries, naicsCodes, crunchbaseCategories, tags |
| Location | headquartersCountryCode, headquartersStateName, headquartersLocation, officeLocationsV2 |
| Signals | technologiesV2, investorsV2, acceleratorsV2, jobPostingStats, fortuneRankings, status |
| Text | keywords with containsAll / containsAny / containsNone |
Most filters take anyOf / allOf / noneOf, so include and exclude logic
lives in the same request. Ranges name their own bounds
(lowerBoundExclusive, upperBoundInclusive), so inclusivity is stated on
the filter rather than buried in a reference table.
fortuneRankings filters to the Fortune 500 or Forbes Global 2000 by list and
year — see Fortune & Forbes lists.
Filtering people
| Filter group | Examples |
|---|---|
| Role | jobTitleV2 (free terms, curated groups like founder or C-suite, or dynamic groups) |
| Employer & tenure | jobs with anyOf / allOf / noneOf, each entry scoped current, past, or any |
| Timing | startedInRole, startedAtCompany — absolute dates or relative windows |
| Location | location (cities, coordinates with radius, polygons, preset regions), country3LetterCode |
| Reach | numConnections, numFollowers |
| Text | keywordsV2 with AND/OR/NOT, scoped by keywordSearchOptions to headline, skills, or experience |
| Identity | exactProfileV2 to pin or exclude specific profiles |
Each jobs entry carries its own company and its own tenure status, so
allOf expresses career paths a flat filter can't: worked at Stripe in the
past and is a VP somewhere now. Naming a company in both anyOf and
noneOf excludes anyone who ever held that role there.
People search also carries stealth status as a filter — see Stealth tracking.
Resolving identifiers you already have
When you already hold identifiers, skip the filters. Pass up to 100 per request and get back the same records search returns:
| Operation | Accepts |
|---|---|
quickCompanyResolve | linkedinSlug, linkedinOrgId, linkedinUrl, domain |
quickPersonResolve | linkedinSlug, linkedinUserId, linkedinUrl, entityUrn |
Both allow 1,500 requests/minute, and you're charged only for the identifiers that resolve — misses are free.
For lookups by other identifiers, such as an email or a name plus a domain, use Kitchen Sink instead.
Count before you spend
Counts are free. Searches are not.
companyCount,peopleSearchCount,jobPostingSearchCount— count-only, no results, no credits.includeCount: trueon a search returns the estimate alongside the page. This charges one extra count credit, so it's for when you want both, not for iterating on filters.
Counts are estimates capped at 10,000. A response showing 10,000 means "10,000 or more", not exactly 10,000. Treat it as a signal that your filters are still broad, not as a total. Under the cap, use the estimate to budget the real run.
Iterate on filters against the count endpoint until the number looks right, then run the search once.
Ordering results
Pass sort when result order matters — clauses apply in the order you give
them.
| Companies | People |
|---|---|
totalFunding, lastRoundFunding, lastFundedAt | careerStartedAt, currentRoleStartedAt, currentCompanyStartedAt |
foundedAt, employeeCount, revenueEstimate | followerCount, connectionCount, jobCount |
followerCount, jobPostingCount | dataUpdatedAt |
Both directions are supported, and records missing the sort value always land
last regardless of direction — so a desc sort on totalFunding never buries
funded companies behind unfunded ones.
A filter-only search has no inherent ranking. With no text query and no
sort, the order you get back is arbitrary and shouldn't be read as
relevance, recency, or size. If you're sampling — pulling 1,000 out of a
50,000-match set — set an explicit sort so the sample is defined rather
than accidental.
Pagination
Pages are cursor-based. Ask for up to 1,000 results per page (pageSize,
default 25), then pass the returned nextCursor to get the next one.
- A cursor belongs to one query. Changing filters, sort, or exclusion lists mid-run invalidates it — start a fresh pagination run instead.
paginatedCombinedSearchcursors validate their parameters and return an error on mismatch. Company and people cursors do not, so a reused cursor there quietly gives you results for the query you started with. Don't recycle cursors.
Combined search
When you want companies and the people who work at them together,
paginatedCombinedSearch runs both in one pass and keeps them linked — so you
skip the fan-out of searching companies, then querying people company by
company.
| Operation | What it does |
|---|---|
combinedSearchCount | Free estimate of both sides before you commit |
paginatedCombinedSearch | Cursor-paginated results, with an independent cursor per entity type |
Independent cursors mean you page companies and people separately, at whatever rate each side needs.
Exclusion lists
Pass companyExclusionListIDs on a search and matching companies are filtered
out before results come back — your existing customers, your do-not-contact
list, whatever you've already worked. Exclusions apply to results; the
estimated count does not account for them. Building and managing the lists
themselves: Exclusion lists.
Using it effectively
- Tune filters against the count endpoints before running the search; filter tuning is free until you pull results.
- Set
pageSizedeliberately and stop paginating when you have enough — nothing caps how far you page. - Any run that pulls a fraction of the matches needs an explicit
sortto be reproducible. - Use
allOfonjobsfor career-path criteria rather than keyword matching. - Company and people search allow 180 requests/minute; job posting search allows 120. Exceeding either returns HTTP 429, so back off and retry.
Use cases
- Outbound sales: find companies matching your ICP, then pull the buying committee at each in a single combined search.
- Recruiting: filter for people who held a specific role at a specific company and have been in their current job long enough to be open to a move.
- Venture sourcing: companies founded in the last 18 months, seed stage, sorted by last funding date.
- Competitive intel: companies running a competitor's technology, sliced by headcount and region.
- Market sizing: count endpoints alone answer "how many X are there" without spending a credit.
Cost
Company and people search bill 1 credit per result returned, so a search
that matches nothing costs nothing. Job posting search bills per job posting
found. Count endpoints are free; includeCount adds one count credit per
request.
The chargeInfo on every response is what you were actually charged — trust
it over any published rate. See Billing & credits.
Related
- Agentic search — the same filters from a plain English prompt.
- Typeaheads — resolve company names, locations, titles, and skills into the exact values these filters expect.
- Google Maps search — local businesses that don't have a LinkedIn footprint.
- Contact Reveal — turn search results into verified emails and phone numbers.