Skip to content
ScrapeField

Blog · Guides ·

What a role pays, from LinkedIn job postings

Some LinkedIn postings print a salary. A search and each posting in full give you the ones that do, for a role in a city, with the company beside each range.

ScrapeField

A salary range in a posting is the market speaking plainly. This guide collects the ranges posted for one role in one city, so you can see what companies offer before you write a posting of your own, or before you answer one.

The search, then each posting

GET /v1/linkedin/jobs finds the postings, 3 credits a page. The search does not carry the salary: GET /v1/linkedin/job does, with the full posting, at 3 credits each. Its salary is the range as the posting prints it, such as “€70K/yr - €90K/yr”, and null where the posting shows none. Many show none, so expect a share of the postings, not all of them.

const headers = { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` };
const params = new URLSearchParams({ query: 'data engineer', location: 'Berlin' });

const res = await fetch(`https://api.scrapefield.com/v1/linkedin/jobs?${params}`, { headers });
const body = await res.json();
if (!res.ok) throw new Error(body.error.message); // a failed call is not charged

const postings = body.data.slice(0, 10);
const ranges = [];
for (const { job_id } of postings) {
  const r = await fetch(`https://api.scrapefield.com/v1/linkedin/job?id=${job_id}`, { headers });
  const full = await r.json();
  if (!r.ok) continue; // a posting filled since the search is not found, and not charged
  const { salary, title, company } = full.data;
  if (salary) ranges.push({ salary, title, company: company.name });
}

console.log(`${ranges.length} of ${postings.length} postings show a salary`);
for (const x of ranges) console.log(`${x.salary}  ${x.title ?? 'untitled'} at ${x.company ?? 'a company'}`);

Reading the ranges

Compare like with like. The postings print their ranges in their own way: a year or an hour, a currency, a “K” or a full number. Read them as they are before you turn them into numbers, and keep the title beside each one: “Senior” and “Junior” are different jobs that share a search. A posting’s seniority_level and employment_type are in the same answer, if you want to group by them.

What it costs

One search and ten postings are 33 credits, about $0.03 on the smallest pack. A posting is cached for three hours. For a few hundred postings, fetch several side by side, up to your limit of calls at once. To see which companies are hiring rather than what they pay, see Find the companies hiring for a role.

More articles