Skip to content
linkedin

Finding jobs

Search the jobs board through the anonymous guest endpoint, filter it down, and read a posting in full.

The jobs board reads reliably for anonymous visitors, because search and detail both run through LinkedIn's guest endpoints. Search the board with jobs, narrow it with the filters, then read a posting in full with job.

Search the board

linkedin jobs "golang engineer" -n 25

jobs searches through the anonymous guest endpoint (/jobs-guest/jobs/api/seeMoreJobPostings/search), paginating in pages of 25 until -n results or the endpoint runs dry. Each row is a JobStub (the title, company, company logo, location, id, and URL).

Filters

The filters map onto the board's own parameters:

Flag Meaning
--location Free-text location, e.g. Remote, "United States", a city
--geo-id LinkedIn geo id, when you know it
--posted Posting age: r86400 (24h), r604800 (week), r2592000 (month)
--remote Workplace: 1 on-site, 2 remote, 3 hybrid
--experience Experience level, 1..6
--job-type Type: F, P, C, T, I, V, O
--sort R relevance, DD date

Remote roles posted in the last week, sorted by date:

linkedin jobs "golang engineer" --remote 2 --posted r604800 --sort DD -n 50

In a city, full-time, mid-senior:

linkedin jobs "backend engineer" --location "Berlin" --job-type F --experience 4

Full records with --hydrate

A stub is thin. Add --hydrate to follow each one to its detail page and emit a full Job record instead:

linkedin jobs "golang engineer" --hydrate -n 10 --output json

With --hydrate, --save upserts each job into the local store as it goes:

linkedin jobs "golang engineer" --hydrate --save -n 50

Read one posting in full

linkedin job 3801234567

job takes a job id or a full URL and reads the guest job-detail fragment (/jobs-guest/jobs/api/jobPosting/<id>). A job record carries the title, company, company logo, location, applicant count, posting date, the full description, and the criteria (seniority, employment type, job function, industries). It takes several ids at once:

linkedin job 3801234567 3809876543 --output csv

From a search to a record

A stub carries the job id, so a search composes straight into a detail lookup:

linkedin jobs "golang engineer" --output jsonl | jq -r .job_id | head -1
# then: linkedin job <that id>

Or just use --hydrate to get the full records in one pass. For saving a search into a local dataset, see storing records.