Skip to content
ScrapeField

Blog · Guides ·

How to scrape LinkedIn in 2026: three ways

LinkedIn’s partner programs, a scraper that signs in as you, or an API that needs no account of yours: what each gives, what each risks, and the calls for a profile and a job search.

ScrapeField

People want three things from LinkedIn: profiles, companies and jobs. There are three ways to get them, and they differ less in what they return than in whose account carries the risk.

1. LinkedIn’s own API

Open to every developer for signing a member in and posting for them; everything about other members, companies and jobs is in partner programs that LinkedIn approves one by one, on terms it does not publish. If what you build is a sales, recruiting or marketing integration LinkedIn supports, apply. What the LinkedIn API costs goes through each program.

2. A scraper that signs in as you

Browser extensions, and the tools that ask for your LinkedIn cookie, read LinkedIn as you, inside your session. They are quick to start. The trade is that it is your account doing it, at the pace LinkedIn allows one person, and LinkedIn restricts accounts it sees automating. That is why we never take a customer’s login, cookie or session, at any price. PhantomBuster is the best known of these tools, and our comparison says where it is the better choice.

3. An API with no account of yours

One call, a profile’s URL or the name in it, or a search, and the answer is JSON, with nothing of yours signed in. A profile is 7 credits, $5.46 per 1,000 on the smallest pack and $3.08 on the largest; with detail=with_email, it adds a work email where one can be found, for 33. A page of job search results is 3 credits.

curl -H "Authorization: Bearer $SCRAPEFIELD_KEY" \
  "https://api.scrapefield.com/v1/linkedin/profile?vanity_name=example-person"

A profile has full_name, headline, about, location, current_company, experience, education and skills, named the way LinkedIn prints them. Every job posting for a search, in TypeScript:

const base = 'https://api.scrapefield.com/v1/linkedin/jobs';
const headers = { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` };
const jobs = [];
let cursor: string | null = null;
do {
  const q = new URLSearchParams({ query: 'backend engineer', location: 'Berlin', posted_within: 'week' });
  if (cursor) q.set('cursor', cursor);
  const res = await fetch(`${base}?${q}`, { headers });
  const body = await res.json();
  if (!res.ok) throw new Error(body.error.message);
  jobs.push(...body.data);
  cursor = body.meta.next_cursor;
} while (cursor);

And in Python:

import os, requests

base = "https://api.scrapefield.com/v1/linkedin/jobs"
headers = {"Authorization": f"Bearer {os.environ['SCRAPEFIELD_KEY']}"}
jobs, cursor = [], None
while True:
    params = {"query": "backend engineer", "location": "Berlin", "posted_within": "week"}
    if cursor:
        params["cursor"] = cursor
    body = requests.get(base, params=params, headers=headers).json()
    if "error" in body:
        raise RuntimeError(body["error"]["message"])
    jobs += body["data"]
    cursor = body["meta"]["next_cursor"]
    if cursor is None:
        break

Each job has title, company, location, workplace_type, salary where the posting gives one, listed_at and its url; the posting in full adds the description. Every endpoint, with a playground that runs with no key, is on the LinkedIn API page.

Which one

An integration LinkedIn supports: its own API. A few profiles by hand: an extension may do, on your own account. Lists, enrichment and anything that runs every day: an API, so that no one’s account is the one doing it. From here: enrich a list of companies, spot a job change, and find the companies hiring for a role.

More articles