Channel-agnostic discovery for people, companies, jobs, and posts — one Search verb with two modes. By keyword: give it a type + keywords to find people/companies/jobs/posts. By company & role (Source): give it roles + a company to source the people in those roles. Most runs are cold, multi-page walks that take minutes — so Search is async-streaming: it returns a job handle immediately, then streams matching results page-by-page over SSE.
Which mode runs?
The discriminator is the same everywhere: an explicit search signal (type or keywords) always runs a keyword search; otherwise roles + a company target (company_name / company_id / company_website / company_linkedin) runs a source job. A source-shaped body can be POSTed to /v2/search or to the dedicated /v2/source route — both dispatch to the same engine. Search jobs poll at /v2/search-jobs/{id}; source jobs poll at /v2/people-finder/{job_id}.
How it works
type and keywords. Returns 202 immediately with the real job id, a stream_url, and stream/self/cancel actions.GET /v2/search-jobs/{id}/stream (SSE). Results arrive page-by-page as page events until a terminal complete or error.GET /v2/search-jobs/{id} for status + accumulated results at any time, or DELETE /v2/search-jobs/{id} to stop the walk (already-found results are kept).Start a search, then stream, poll, or cancel it
The type discriminator selects both the filters and the result-item shape
title, company, industry, location. Result items carry name, title, company, linked_in_public_id, member_id, linked_in_url, location, and headline.keywords. Result items carry name, linked_in_public_id, linked_in_url, industry, and location.location, industry, company. Result items carry job_id, title, company, location, seniority_level, employment_type, posted_at, and work_remote_allowed.keywords. Result items carry post_id, text, author_name, author_headline, author_profile_url, published_at, likes, and comments.Give it roles + a company and it discovers the matching people across LinkedIn, the web, and your enrichment cache. POST to /v2/source — or POST a source-shaped body to /v2/search, which dispatches here. Source jobs live in their own store: poll, stream, or cancel at /v2/people-finder/{job_id}.
Source people across multiple companies at once
Note: bulk imports stay on the /v1/person-searches paths — they're tied to Campaigns and are not part of the v2 launch surface.
Bulk imports support two input methods: HubSpot list (preview/confirm flow) and Excel upload (upload/confirm flow).