Docs / Jobs

list_job_applicants

List who applied to one of your job postings.

This action only reads. It changes nothing, so it is safe to try.

What you give it

InputWhat it isWhere to get it
jobId
needed
A job id. The job posting id (from list_job_postings).Run list_job_postings and use jobPostings[].id from its answer.
7 more places to get it
service
optional
One of: CLASSIC, RECRUITER. Which LinkedIn product the job posting belongs to (default CLASSIC).You write it.
keywords
optional
Text, up to 200 characters. Only applicants matching these words.You write it.
ratings
optional
A list (one of: UNRATED, GOOD_FIT, MAYBE, NOT_A_FIT), up to 4. CLASSIC only: only these ratings.You write it.
sortBy
optional
One of: relevance, alphabetical, newest_first, screening_requirements. RECRUITER only.You write it.
includeArchived
optional
True or false. RECRUITER only: include archived applicants.You write it.
yearsOfExperience
optional
A group of fields. RECRUITER only.
What goes inside
  • min (optional): a number.
  • max (optional): a number.
You write it.
yearsInCompany
optional
A group of fields. RECRUITER only: years in current company.
What goes inside
  • min (optional): a number.
  • max (optional): a number.
You write it.
yearsInPosition
optional
A group of fields. RECRUITER only: years in current position.
What goes inside
  • min (optional): a number.
  • max (optional): a number.
You write it.
includeDegree
optional
A search filter id. RECRUITER only: degree ids to include (lookup_search_ids type DEGREE).run lookup_search_ids with type DEGREE, and use matches[].id from its answer.
excludeDegree
optional
A search filter id. RECRUITER only: degree ids to exclude.run lookup_search_ids with type DEGREE, and use matches[].id from its answer.
limit
optional
A number, 1 to 100. How many to return (1–100, default 25).You write it.
cursor
optional
A cursor. nextCursor from the previous call, to get the next page. Keep the other arguments the same.The nextCursor from the last answer of list_job_applicants.
connectionId
optional
A connection id. Which of your LinkedIn accounts to act from (its id from list_linkedin_accounts). Omit to use your first live one.Run list_linkedin_accounts and use accounts[].id from its answer.
15 more places to get it

Call it

curl -X POST https://api.heyreagent.com/v1/actions/list_job_applicants \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{"jobId":"PASTE_JOB_ID_HERE"}'
The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/list_job_applicants", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_KEY",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "jobId": "PASTE_JOB_ID_HERE"
  }),
});
const answer = await response.json();
console.log(answer);
The same call in Python
import requests

response = requests.post(
    "https://api.heyreagent.com/v1/actions/list_job_applicants",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={
        "jobId": "PASTE_JOB_ID_HERE",
    },
)
print(response.json())
The same call in n8n

Add an HTTP Request node and fill it in like this:

MethodPOST
URLhttps://api.heyreagent.com/v1/actions/list_job_applicants
Send HeadersOn. Name Authorization, Value Bearer YOUR_KEY
Send BodyOn. Body Content Type JSON, Specify Body Using JSON, then paste the body below
{
  "jobId": "PASTE_JOB_ID_HERE"
}

Put your own key where it says YOUR_KEY. Put your own value where it says PASTE_…_HERE: the table above says where each one comes from. New here? Start with your first call.

What you get back

When it worked, the answer is { "ok": true, "result": { … } }. Inside result:

returnednumber
nextCursorA cursor. Other actions take it.
applicants[].idA applicant id. Other actions take it.
applicants[].profileIdstring
applicants[].publicIdentifierA public identifier. Other actions take it.
applicants[].publicProfileUrlA profile link. Other actions take it.
applicants[].namestring
applicants[].locationstring
applicants[].headlinestring
applicants[].profilePictureUrlstring
applicants[].appliedAtnumber
applicants[].ratingUNRATED | GOOD_FIT | MAYBE | NOT_A_FIT
applicants[].hiringStatestring
applicants[].emailAddressstring
applicants[].phoneNumberstring

A field that does not apply to an answer is left out, or is null. There are 25 more fields nested inside these.

When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.

Good to know

In Claude or ChatGPT

Once connected, ask in your own words. The assistant sees this action as a tool with the same name, list_job_applicants, and the same inputs.