Skip to content
ScrapeField

Blog · Guides ·

LinkedIn job postings with full descriptions

A job search returns the title, company, place and date of each posting. The description, salary and seniority come with the posting itself. A search, then each posting in full, in a few lines.

ScrapeField

A list of job postings is a list of companies that are hiring, and what for. The search gives you the list; the description, salary and seniority are on each posting. This guide gets both.

Two calls

  • GET /v1/linkedin/jobs searches, with a query and a location. A page holds up to 25 postings, each with its job_id, title, company, location and listed_at. The fields only the posting has are null. A page costs 3 credits.
  • GET /v1/linkedin/job takes a result’s job_id as id and returns the posting in full: description, salary where it shows one, seniority_level, employment_type and workplace_type. A posting costs 3 credits.

The code

const headers = { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` };
const base = 'https://api.scrapefield.com/v1/linkedin';

const q = new URLSearchParams({ query: 'data engineer', location: 'Berlin' });
const search = await (await fetch(`${base}/jobs?${q}`, { headers })).json();
if (search.error) throw new Error(search.error.message);

const postings = [];
for (const job of search.data) {
  const res = await fetch(`${base}/job?id=${job.job_id}`, { headers });
  const body = await res.json();
  // a posting closed since the search is not found, and not charged
  if (!res.ok) { console.error(job.job_id, body.error.code); continue; }
  postings.push(body.data);
}

for (const p of postings) console.log(p.title, '|', p.company.name, '|', p.salary ?? 'no salary shown');

A full page of 25 postings, with each one in full, costs 3 + 25 × 3 = 78 credits. Read more than one page by passing meta.next_cursor back as cursor (how lists work).

Only the new ones

Run it daily and keep the job_ids you have seen: a posting’s id never changes, so fetch in full only the ones you have not. Then a day’s run costs one search page and the new postings, not the whole list again. To have the new postings land in a sheet without code, see LinkedIn jobs into n8n; for thousands of postings, fetch several side by side, up to your limit of calls at once.