---
title: "Search candidates in my Recruiter, every filter typed"
method: POST
path: "/v1/actions/search_linkedin_recruiter_people"
tags: ["Search"]
---

# Search candidates in my Recruiter, every filter typed

`POST /v1/actions/search_linkedin_recruiter_people`

## Request

- Base URL: `https://api.heyreagent.com`
- URL: `https://api.heyreagent.com/v1/actions/search_linkedin_recruiter_people`
- Auth: HTTP bearer

Search candidates in Recruiter on your own seat, with each Recruiter filter as its own typed input.

At most 100 rows per call: LinkedIn's page size for this search.

LinkedIn returns at most 2,500 rows for one search; narrow the filters to reach the rest.

Needs a Recruiter seat on your own LinkedIn account.

Look filter ids up with lookup_search_ids service RECRUITER: that input selects which product's list is searched.

networkDistance in a row is defined as DISTANCE_1 / DISTANCE_2 / DISTANCE_3 (a published sample row also shows OUT_OF_NETWORK), while a profile reports FIRST_DEGREE / SECOND_DEGREE / THIRD_DEGREE for the same thing: do not compare the two as text.

A Recruiter row often has no publicIdentifier and no profile link: its id is the only handle, and only Recruiter actions take it.

Docs: https://heyreagent.com/docs/actions/search_linkedin_recruiter_people

## Request body

- object
  - `keywords` string: Words to search for. AND, OR and NOT may be used, e.g. developers AND product owners NOT managers.
  - `locale` 'arabic' | 'bangla' | 'czech' | 'danish' | 'german' | 'greek' | 'english' | 'spanish' | 'persian' | 'finnish' | 'french' | 'hindi' | 'hungarian' | 'indonesian' | 'italian' | 'hebrew' | 'japanese' | 'korean' | 'marathi' | 'malay' | 'dutch' | 'norwegian' | 'punjabi' | 'polish' | 'portuguese' | 'romanian' | 'russian' | 'swedish' | 'telugu' | 'thai' | 'tagalog' | 'turkish' | 'ukrainian' | 'vietnamese' | 'chinese_simplified' | 'chinese_traditional': The language your Recruiter is set to, when results look inconsistent.
  - `savedSearch` object: Run one of your saved searches; it replaces every other filter.
    - `id` string, required: An id from lookup_search_ids type SAVED_SEARCHES, service RECRUITER.
    - `projectId` string, required: The project that saved search belongs to, from lookup_search_ids type SAVED_SEARCHES, service RECRUITER.
    - `newestResultsOnly` boolean
  - `savedFilter` string: One of your saved filters: an id from lookup_search_ids type SAVED_FILTERS, service RECRUITER.
  - `location` object[]: Places. DOESNT_HAVE cannot be combined with locationWithinArea.
    - `id` string, required: An id from lookup_search_ids type LOCATION, service RECRUITER.
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
    - `scope` 'CURRENT' | 'OPEN_TO_RELOCATE_ONLY' | 'CURRENT_OR_OPEN_TO_RELOCATE'
    - `title` string: The title that came with the id in lookup_search_ids.
  - `locationWithinArea` number: Miles around the location.
  - `industry` object: Industries to include and to leave out.
    - `include` string[]: Ids from lookup_search_ids type INDUSTRY, service RECRUITER.
    - `exclude` string[]: Ids from lookup_search_ids type INDUSTRY, service RECRUITER.
  - `role` object[]: Job titles: each one by id or by keywords.
    - `id` string, required: An id from lookup_search_ids type JOB_TITLE, service RECRUITER.
    - `isSelection` boolean, required: true: only people with exactly this title. false: also similar titles.
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
    - `scope` 'CURRENT_OR_PAST' | 'CURRENT' | 'PAST' | 'PAST_NOT_CURRENT' | 'OPEN_TO_WORK'
    - `keywords` string, required
  - `skills` object[]: Skills: each one by id or by keywords.
    - `id` string, required: An id from lookup_search_ids type SKILL, service RECRUITER.
    - `title` string
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
    - `keywords` string, required
  - `company` object[]: Companies: each one by id or by keywords.
    - `id` string, required: An id from lookup_search_ids type COMPANY, service RECRUITER.
    - `name` string
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
    - `scope` 'CURRENT_OR_PAST' | 'CURRENT' | 'PAST' | 'PAST_NOT_CURRENT'
    - `keywords` string, required
  - `companyHeadcount` object[]: Company sizes, as LinkedIn's own bands, e.g. { min: 51, max: 200 }.
    - `min` unknown
    - `max` unknown
  - `currentCompany` object[]: Current companies.
    - `id` string, required: An id from lookup_search_ids type COMPANY, service RECRUITER.
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
  - `pastCompany` object[]: Past companies.
    - `id` string, required: An id from lookup_search_ids type COMPANY, service RECRUITER.
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
  - `school` object[]: Schools.
    - `id` string, required: An id from lookup_search_ids type SCHOOL, service RECRUITER.
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
  - `degree` object: Degrees to include and to leave out.
    - `include` string[]: Ids from lookup_search_ids type DEGREE, service RECRUITER.
    - `exclude` string[]: Ids from lookup_search_ids type DEGREE, service RECRUITER.
  - `employmentType` string[]: Employment types. Recruiter PRO contracts only.
  - `groups` string[]: LinkedIn groups: ids from lookup_search_ids type GROUPS, service RECRUITER.
  - `graduationYear` object: Graduation years, from and to.
    - `min` number
    - `max` number
  - `tenure` object: Years of experience, from and to.
    - `min` number
    - `max` number
  - `tenureInCompany` object: Years in the current company, from and to.
    - `min` number
    - `max` number
  - `tenureInPosition` object: Years in the current position, from and to.
    - `min` number
    - `max` number
  - `seniority` object: Seniority levels to include and to leave out.
    - `include` string[]
    - `exclude` string[]
  - `function` string[]: Job functions: ids from lookup_search_ids type DEPARTMENT, service RECRUITER.
  - `networkDistance` unknown[]: Connection degrees from you (1, 2, 3) or "GROUP" for people in your groups.
    - unknown
  - `spokenLanguages` object[]: Spoken languages and how well. Recruiter PRO contracts only.
    - `language` string, required
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
    - `scope` 'ELEMENTARY' | 'LIMITED_WORKING' | 'PROFESSIONAL_WORKING' | 'FULL_PROFESSIONAL' | 'NATIVE_OR_BILINGUAL'
  - `hidePreviouslyViewed` object: Leave out people you viewed within this many days.
    - `timespan` number, required: Days back.
  - `profileLanguage` string[]: Profile languages, as two-letter codes such as "en".
  - `recentlyJoined` object[]: Joined LinkedIn this many days ago, as LinkedIn's own bands.
    - `min` unknown
    - `max` unknown
  - `spotlights` string[]: Spotlights. Advanced Recruiter subscriptions only.
  - `firstName` string[]: First names.
  - `lastName` string[]: Last names.
  - `hasMilitaryBackground` boolean: Only people with a US military background.
  - `pastApplicants` boolean: Only past applicants.
  - `hiringProjects` object: Your hiring projects to include and to leave out.
    - `include` string[]: Ids from lookup_search_ids type HIRING_PROJECTS, service RECRUITER.
    - `exclude` string[]: Ids from lookup_search_ids type HIRING_PROJECTS, service RECRUITER.
  - `recruitingActivity` object[]: People with, or without, this kind of activity from your team.
    - `id` 'messages' | 'tags' | 'notes' | 'projects' | 'resumes' | 'reviews', required
    - `priority` 'CAN_HAVE' | 'MUST_HAVE' | 'DOESNT_HAVE'
    - `timespan` number: Days back.
  - `notes` string[]: Words in your team's notes on the person.
  - `limit` number: How many to return (1–100, default 10).
  - `cursor` string: nextCursor from the previous call, to get the next page. Keep the other arguments the same.
  - `connectionId` string: Which of your LinkedIn accounts to act from (its id from list_linkedin_accounts). Omit to use your first live one.

## Response `200`

It worked. Inside result: returned, nextCursor, results[].type, results[].id, results[].publicIdentifier, results[].publicProfileUrl, results[].profileUrl, results[].profilePictureUrl, results[].profilePictureUrlLarge, results[].memberUrn, results[].name, results[].firstName, results[].lastName, results[].networkDistance, results[].location, results[].industry, results[].keywordsMatch, results[].headline, results[].connectionsCount, results[].followersCount, results[].pendingInvitation, results[].canSendInmail, results[].hiddenCandidate, results[].interestLikelihood, results[].recruiterCandidateId, results[].recruiterPipelineCategory, results[].premium, results[].verified, results[].sharedConnectionsCount, results[].recentPostsCount, results[].recentlyHired, results[].mentionedInTheNews, results[].interests.

- Worked
  - `ok` true, required
  - `result` object, required: What was asked for. A field that does not apply is left out, or is null.

## Other responses

- `default`: It did not work. The message says why, in plain English.

---

[API](https://skmtc.dev/heyreagent/apis/heyreagent-api.md) · [All operations](https://skmtc.dev/heyreagent/apis/heyreagent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/heyreagent/apis/heyreagent-api/revisions/917360c5f841?raw)
