ScrapeField

LinkedIn scraper API

Public profiles, company pages, posts and job listings, as clean JSON. Logged-out, public data only — and we never ask for your login.

Endpoints
4
From
4 credits a call
Returns
profile, company, post, job
linkedin.com/in/example
MN

Mara Novak

Backend Engineer at Ravel

Prague, Czechia · Contact info

2,499 followers · 453 connections

FollowMore

Ravel

The same page, from the API sample data

  1. 1full_name "Mara Novak"
  2. 2headline "Backend Engineer at Ravel"
  3. 3location "Prague, Czechia"
  4. 4follower_count 2499connection_count 453
  5. 5current_company.name "Ravel"
  6. 6about null
  7. +experience[0].title "Backend Engineer"education[0].school.name "Universidade de Lisboa"skills ["Product Strategy","Figma"]in the response, not on the page

Try it now

Every LinkedIn endpoint, as an MCP tool, as a REST call, or as a question in plain English. Each one runs against the live API in demo mode — no key, no account.

POSThttps://scrapefield.com/mcp
4 tools
Transport
HTTP, JSON-RPC 2.0
Methods
initialize · tools/list · tools/call
Auth
Bearer key — or none, for demo mode
claude mcp add --transport http scrapefield https://scrapefield.com/mcp
Runs against the live server. No key, no account.
// press Call — the server lists its 4 tools,
// each with the schema an agent reads before calling it

What people build with it

Three worked examples, each with the calls it makes and what a run costs — multiplied out from the published price of every call.

01

Track who is hiring, every week

Run the same job searches every Monday, restricted to the last seven days, and count listings by company. A company that suddenly posts ten data roles is telling you something before any press release does.

GET linkedin/jobs× 80320 cr
a month, 20 searches every week320 cr

≈ $0.191 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const searches = [
  { query: 'data engineer', location: 'Berlin' },
  { query: 'data engineer', location: 'London' },
  { query: 'backend engineer', workplace_type: 'remote' },
];
const byCompany = {};

for (const s of searches) {
  const q = { ...s, posted_within_days: 7, limit: 25 };
  const { data } = await sf('linkedin/jobs', q);
  for (const job of data) {
    const name = job.company.name;
    byCompany[name] = (byCompany[name] ?? 0) + 1;
  }
}

const top = Object.entries(byCompany).sort((a, b) => b[1] - a[1]);
console.table(top.slice(0, 10));
02

Fill in the blanks in your CRM

For every account with a LinkedIn URL, fetch the company page and write back its industry, size band, founding year, headquarters and follower count. Five hundred accounts is one loop — or one batch job, if you would rather not wait on it.

GET linkedin/company× 5003,000 cr
500 accounts, once3,000 cr

≈ $1.79 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

for (const account of accounts) {
  const q = { url: account.linkedin_url };
  const { data: c, error } = await sf('linkedin/company', q);
  if (error) continue; // a page that is gone is refunded, not charged

  await crm.update(account.id, {
    industry: c.industry,
    size: c.company_size,
    founded: c.founded,
    hq: c.headquarters?.city,
    followers: c.follower_count,
  });
}
03

Read what competitors post

Pull the recent posts of the companies you watch once a week and keep the ones that landed — reactions, comments and reposts come with every post, with the reactions broken down by kind.

GET linkedin/posts× 40240 cr
a month, 10 companies weekly240 cr

≈ $0.143 at the 250k pack

const API = 'https://api.scrapefield.com/v1';
const sf = (path, q) =>
  fetch(API + '/' + path + '?' + new URLSearchParams(q), {
    headers: { Authorization: 'Bearer ' + process.env.SCRAPEFIELD_KEY },
  }).then((r) => r.json());

const week = Date.now() - 7 * 24 * 3600 * 1000;

for (const company_url of competitors) {
  const { data } = await sf('linkedin/posts', { company_url, limit: 20 });

  for (const p of data.filter((p) => Date.parse(p.published_at) > week)) {
    const { reaction_count, comment_count, text } = p;
    console.log(reaction_count, comment_count, text?.slice(0, 80));
  }
}

Everything that comes back

The complete response behind the LinkedIn view at the top of this page, from GET /v1/linkedin/profile — every field, including the ones that are null. Fields are named after LinkedIn's own pages, since LinkedIn has no public data API, so if you have read those docs you already know them. Every field of linkedin_profile, linkedin_company, linkedin_post and linkedin_job is documented.

{
  "data": {
    "vanity_name": "example",
    "url": "https://www.linkedin.com/in/example/",
    "full_name": "Mara Novak",
    "first_name": "Mara",
    "last_name": "Novak",
    "headline": "Backend Engineer at Ravel",
    "about": null,
    "location": "Prague, Czechia",
    "profile_picture_url": "https://cdn.example/li/n2PSSiHZq_2x.jpg",
    "follower_count": 2499,
    "connection_count": 453,
    "open_to_work": false,
    "current_company": {
      "name": "Ravel",
      "url": "https://www.linkedin.com/company/ravel/"
    },
    "experience": [
      {
        "title": "Backend Engineer",
        "company": {
          "name": "Ravel",
          "url": "https://www.linkedin.com/company/ravel/"
        },
        "employment_type": "Full-time",
        "location": "Prague, Czechia",
        "start_date": "2022-04",
        "end_date": null,
        "description": "Own the data platform end to end: ingestion, the warehouse and the on-call rota."
      },
      {
        "title": "Founder",
        "company": {
          "name": "Northbank",
          "url": "https://www.linkedin.com/company/northbank/"
        },
        "employment_type": "Full-time",
        "location": "Prague, Czechia",
        "start_date": "2021-01",
        "end_date": "2022-06",
        "description": null
      },
      {
        "title": "Product Designer",
        "company": {
          "name": "Northbank",
          "url": "https://www.linkedin.com/company/northbank/"
        },
        "employment_type": "Full-time",
        "location": "Prague, Czechia",
        "start_date": "2017-02",
        "end_date": "2021-06",
        "description": null
      }
    ],
    "education": [
      {
        "school": {
          "name": "Universidade de Lisboa",
          "url": "https://www.linkedin.com/school/universidadedelisboa/"
        },
        "degree": "Bachelor of Science - BS",
        "field_of_study": "Economics",
        "start_year": 2012,
        "end_year": 2016
      }
    ],
    "skills": [
      "Product Strategy",
      "Figma"
    ]
  },
  "meta": {
    "request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
    "credits_charged": 10,
    "credits_remaining": 74218,
    "cached": false,
    "fetched_at": "2026-09-20T09:12:03Z",
    "next_cursor": null
  }
}

Endpoints and prices

One published credit cost per endpoint, charged per call and refunded automatically when a call fails. See what a credit costs.

LinkedIn, specifically

The questions people ask about this platform before they call it.

Do I need a LinkedIn account?
No, and we would refuse yours if offered. You never give us a login, a cookie or a session. Everything comes from public pages a logged-out visitor can see — which is also why nobody’s account is at risk when you use it.
Can I search for people?
No. There is no people search: you fetch a profile you already have the URL of. Job listings are searchable; people are not.
Do profiles include emails or phone numbers?
No. A public LinkedIn profile does not show them, so we do not have them — and anything a logged-out visitor cannot see comes back as null rather than as a guess.
How many jobs does one search return?
Up to 25 per call, with meta.next_cursor for the next page. Narrow it with location, workplace_type (on-site, hybrid or remote), or posted_within_days (1 to 90).
What is in a profile?
What the public profile shows, named the way LinkedIn prints it: the headline, location, followers and connections, the About section, the current company, experience, education and skills. Anything a logged-out visitor cannot see is null.

The same key, three more platforms

One key, one balance and one invoice across all four — and each platform’s data in its own shape, because they are four different systems.

Your first LinkedIn call, in a minute

Get a key