Docs / Search

search_linkedin_jobs

Search job listings on LinkedIn, with each LinkedIn filter as its own typed input.

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

What you give it

InputWhat it isWhere to get it
keywords
optional
Text. Words to search for.You write it.
sortBy
optional
One of: relevance, date. Order (default relevance).You write it.
datePosted
optional
A number. Posted within this many days.You write it.
region
optional
A search filter id. A country or region: an id from lookup_search_ids type LOCATION.run lookup_search_ids with type LOCATION, and use matches[].id from its answer.
location
optional
A search filter id. Places: ids from lookup_search_ids type LOCATION.run lookup_search_ids with type LOCATION, and use matches[].id from its answer.
locationWithinArea
optional
A number. Miles around the location.You write it.
industry
optional
A search filter id. Industries: ids from lookup_search_ids type INDUSTRY.run lookup_search_ids with type INDUSTRY, and use matches[].id from its answer.
seniority
optional
A list (one of: executive, director, mid_senior, associate, entry, intern). Experience levels.You write it.
function
optional
A search filter id. Job functions: ids from lookup_search_ids type JOB_FUNCTION.run lookup_search_ids with type JOB_FUNCTION, and use matches[].id from its answer.
role
optional
A search filter id. Job titles: ids from lookup_search_ids type JOB_TITLE.run lookup_search_ids with type JOB_TITLE, and use matches[].id from its answer.
jobType
optional
A list (one of: full_time, part_time, contract, temporary, volunteer, internship, other). Job types.You write it.
company
optional
A search filter id. Companies: ids from lookup_search_ids type COMPANY.run lookup_search_ids with type COMPANY, and use matches[].id from its answer.
presence
optional
A list (one of: on_site, hybrid, remote). On site, hybrid or remote.You write it.
easyApply
optional
True or false. Only Easy Apply jobs.You write it.
hasVerifications
optional
True or false. Only jobs with verifications.You write it.
under10Applicants
optional
True or false. Only jobs with fewer than 10 applicants.You write it.
inYourNetwork
optional
True or false. Only jobs at companies where you know someone.You write it.
fairChanceEmployer
optional
True or false. Only fair-chance employers.You write it.
benefits
optional
A list (one of: medical_insurance, vision_insurance, dental_insurance, disability_insurance, 401(k), pension_plan, paid_maternity_leave, paid_paternity_leave, commuter_benefits, student_loan_assistance, tuition_assistance). Benefits offered.You write it.
commitments
optional
A list (one of: career_growth_and_learning, diversity_equity_and_inclusion, environmental_sustainability, social_impact, work_life_balance). Company commitments.You write it.
minimumSalary
optional
A group of fields. Lowest yearly salary, in thousands: one of LinkedIn's own steps for that currency.
What goes inside
  • currency (needed): one of: USD, AUD, CAD.
  • value (needed): one of: 40, 60, 80, 100, 120, 140, 160, 180, 200.
You write it.
limit
optional
A number, 1 to 50. How many to return (1–50, default 10).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 search_linkedin_jobs.
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/search_linkedin_jobs \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{"keywords":"software engineer"}'
The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/search_linkedin_jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_KEY",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "keywords": "software engineer"
  }),
});
const answer = await response.json();
console.log(answer);
The same call in Python
import requests

response = requests.post(
    "https://api.heyreagent.com/v1/actions/search_linkedin_jobs",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={
        "keywords": "software engineer",
    },
)
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/search_linkedin_jobs
Send HeadersOn. Name Authorization, Value Bearer YOUR_KEY
Send BodyOn. Body Content Type JSON, Specify Body Using JSON, then paste the body below
{
  "keywords": "software engineer"
}

Put your own key where it says YOUR_KEY. 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.
results[].typeJOB
results[].idstring
results[].referenceIdstring
results[].titlestring
results[].locationstring or null
results[].postedAtany or null
results[].repostedboolean
results[].urlstring
results[].promotedboolean
results[].benefitsstring[]
results[].easyApplyboolean

A field that does not apply to an answer is left out, or is null. There are 5 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, search_linkedin_jobs, and the same inputs.