App Logo
linkedin.com

Search LinkedIn jobs

Search LinkedIn job postings by keywords, with optional location, date-posted window, workplace-type filter, sort, and pagination (25/page). Returns total, page, resolvedLocation, and jobs (jobId, title, company, location, benefits, postedAgo, easyApply, url). Searches worldwide by default, unlike LinkedIn's own UI which silently restricts to the viewer's country. Experience, salary, and industry filters are not exposed, and postedAgo is null when LinkedIn shows a "Viewed" marker instead of a date.

Input

keywords required

Free-text job search query, same as the jobs search box (e.g. "data engineer").

page optional

1-based page, 25 jobs per page (start=(page-1)*25). Caller loops while (page-1)*25 < total. Job lists move as postings open/close; cross-page fan-out can skip/dupe near edits.

Default: 1
sortBy optional

Sort order. Default: relevance (LinkedIn's own default).

Default: "relevance"
location optional

Free-text location (e.g. "Paris, France", "Germany"). Resolved server-side by LinkedIn's own geo resolution (battle-tested: "Paris, France" → "Paris, Île-de-France, France"). Omit for Worldwide — the script then pins geoId=92000000 ON PURPOSE because LinkedIn's UI default silently restricts to the viewer's country.

datePosted optional

Posted-date window (f_TPR). Omit for any time.

workplaceTypes optional

Workplace-type filter (f_WT), several allowed (OR). Omit for all.

Output

jobs required
page required
total required

Total matching postings for this filter, read from the SSR blob. 0 with empty jobs[] = no matching jobs (first-class outcome, not an error).

resolvedLocation optional

The location label LinkedIn resolved the free-text `location` arg to (e.g. "Paris, Île-de-France, France"), read from the search box. "Worldwide" when no location was given. Returned so the caller can detect a mis-resolved location.

Start building not clicking