LinkedIn Scraper API: What It Returns and What It Costs (2026)
A LinkedIn scraper API returns structured LinkedIn data – profiles, companies, posts, search results, jobs – to your code, so you never write a selector or run a headless browser. This guide is the evaluation material: what comes back per entity, what each provider charges, and a real request with the JSON it produces. "LinkedIn scraper API" covers three different products, so it also says plainly which one fits which job, including where a dataset or a real-time scraper beats what we build.
The short version. Need millions of cold profiles in bulk? Use a dataset. Need fresh public pages on demand? Use a real-time scraper. Need the data your own account can see – your network, your searches, Sales Navigator, your inbox – and the ability to act on it? Use an account-based API. Only the last kind can send a connection request or a message, and only the first is cheap at a million records.
What a LinkedIn scraper API returns
Here is the whole contract, on one screen. You start a request, you get a handle back, and you read the result:
const profile = await linkedapi.fetchPerson.execute({
personUrl: 'https://www.linkedin.com/in/jane-doe',
retrieveExperience: true,
retrieveSkills: true,
});
// execute() returns a handle, not the data - the work runs in your account
const { data, errors } = await linkedapi.fetchPerson.result(profile.workflowId);data is typed JSON:
{
"name": "Jane Doe",
"publicUrl": "https://www.linkedin.com/in/jane-doe",
"headline": "Head of Growth at Acme",
"location": "San Francisco, California, United States",
"position": "Head of Growth",
"companyName": "Acme",
"followersCount": 4820,
"experiences": [
{
"position": "Head of Growth",
"companyName": "Acme",
"employmentType": "fullTime",
"locationType": "hybrid",
"duration": 26,
"startTime": "2024-01-01T00:00:00Z",
"endTime": null
}
],
"skills": [
{ "name": "Demand Generation" },
{ "name": "SEO" },
{ "name": "Lifecycle Marketing" }
]
}Two things to be clear about, because they are the real difference between the models. First, this is an asynchronous workflow, not one HTTP call that hands back finished JSON: execute starts the work and returns a workflowId, result gives you { data, errors } when it is done. Second, the work runs inside your own LinkedIn account in a dedicated cloud browser, at the pace of a person – a simple fetch takes seconds, a heavy one minutes, and actions run sequentially rather than in parallel. The ceiling is not a rate limit we invented; it is your account's own, and you configure the per-action limits the platform then enforces. Sensible values are in the LinkedIn limits guide.
Every other operation follows the same execute then result pattern – the people search below is the same two steps against a different operation.
Is there a LinkedIn API for scraping?
Not from LinkedIn. Its official API is a partner program: the open tier essentially returns your own profile and lets you publish posts, and reading other people's profiles, search results or audience data needs Partner Program approval, which is selective and slow. The full picture of what you can and cannot get through official channels is in our LinkedIn API access guide.
So "LinkedIn scraper API" always means a third-party product, and there are three of them:
| Model | How it works | Freshness | What it reaches | Can it act? | Risk sits with |
|---|---|---|---|---|---|
| Dataset / database | Query a pre-collected database | Months to years | Bulk public profiles | No | The data holder |
| Real-time scraper | Pass a URL or ID, fetched live through proxies | Live | Public pages | No | The provider |
| Account-based API | Runs your own authenticated account | Live | Your network, searches, Sales Navigator, inbox, public data | Yes | Your account |
What you can extract, per entity
This is the table most "scraper API" pages leave out. Ceilings below are LinkedIn's own daily limits for an established account, not ours:
| Entity | What comes back | Daily ceiling on one account | Method |
|---|---|---|---|
| Person profile | Name, headline, location, current role, company, about, follower count, experience, education, skills, languages | ~80 views on a free account, ~150 on Premium, up to ~1,000 through Sales Navigator | fetchPerson |
| Company | Description, industry, headquarters, size, founding year, specialties, employees, decision-makers | ~100 free, ~200 Premium, up to ~1,000 through Sales Navigator | fetchCompany |
| Posts | Text, author, hashtags, media, reactions and comments with each engager's name and headline | Counts against reading limits, not a separate cap | fetchPost |
| People search | Matching people with filters for role, location, industry, current and past company, school | 300 searches a month on free and Premium Career; unlimited on Premium Business, Sales Navigator and Recruiter. One query returns up to 1,000 results (2,500 in Sales Navigator) | searchPeople |
| Jobs | Job posts and search results – title, company, location, description, posting date | Job search does not count against LinkedIn's commercial-use limit | searchJobs, fetchJob |
| Sales Navigator | Lead and account search, lead data, InMail and the Sales Navigator inbox | Uses your Sales Navigator seat's own limits | nvSearchPeople and the other nv- operations |
Entity-level detail, with working code for each, lives in the dedicated guides: profiles, companies, posts, jobs and Sales Navigator.
What a third-party profile fetch does not reliably give you is someone else's contact details. LinkedIn shows Contact Info at the member's discretion, mostly to connections, and its own OIDC permission returns only the email of the member who consented – so emails and phone numbers at scale do not come from a profile API of any kind. Source them from a consented enrichment provider instead; harvesting them is the fastest route into legal trouble.
LinkedIn scraper APIs compared
Prices and capabilities below come from each vendor's own pricing and product pages.
| Provider | Model | Input | Can it act? | Published price | Free tier |
|---|---|---|---|---|---|
| Bright Data | Real-time scraper plus a pre-collected dataset | URL batches (up to 5,000 per call), keyword discovery | No | $1.50 per 1,000 records pay-as-you-go; $499/mo including 384,000 records; datasets $250 per 100,000 | 5,000 records a month |
| Scrapingdog | Real-time scraper | Profile, company and post IDs; job search by keyword and location | No | Credit-based: a person profile costs 50–100 credits, a company 10, a post 5. $40/mo buys 200,000 credits, so 2,000–4,000 profiles | 200 starting credits |
| Apify | Marketplace of community-built actors – there is no first-party LinkedIn actor | Profile URLs or IDs, or a search URL with filters | Actor-dependent – the read actors cannot; one community actor sends connection requests if you paste in your session cookies | Platform plan from $0 to $999/mo plus per-run actor charges; a representative profile actor charges $4 per 1,000 profiles, $10 with email lookup; the connection-request actor $25/mo plus usage | $5 of usage a month |
| Unipile | Account-based | A connected account plus an identifier | Yes | €5.00 per connected account per month, minimum €49/mo for up to 10 accounts, no per-request fee | 7-day trial |
| Linked API | Account-based, in a dedicated cloud browser | A connected account; actions composed as workflows | Yes | $49 per seat per month billed annually, no per-record metering | 7-day trial |
What the table actually says. The read-focused products cannot act on LinkedIn, and they are explicit about why: they never hold a session. Bright Data's LinkedIn scrapers cover "only publicly available data", Scrapingdog scrapes "publicly available LinkedIn person profiles", and the most-used Apify profile actor sells "no cookies, no login, no browser required" as its headline feature. That property is exactly what keeps them clear of your account – and what stops them sending a connection request, reading your inbox, or seeing a Sales Navigator result.
Apify is the one to qualify rather than dismiss: it is a marketplace, so capability varies by actor. Alongside the read-only scrapers there is a community actor that does send connection requests – by asking you to copy your LinkedIn session cookies out of your browser and paste them into a third-party actor. That is a real capability and a different safety model from either the read-only scrapers or an account-based API, where the session is established once and stays inside the platform.
Unipile is the one genuine peer: it also drives your own account, and it also acts. The difference there is execution rather than capability – it constructs reverse-engineered calls to LinkedIn's private interface and bills per connected account, where Linked API runs a real browser session on LinkedIn's own pages and bills per seat. Our head-to-head with Unipile covers that layer difference properly.
And where the others win, they win clearly. For a million cold profiles, Bright Data's dataset at $250 per 100,000 records is a different order of magnitude from any account-based product, and no per-seat model competes with it. For cheap public reads at moderate volume, Scrapingdog is hard to beat on unit cost. For breadth of odd jobs, Apify's marketplace has an actor for almost anything – at the price of depending on a community maintainer rather than a vendor.
Make your first call
Install the SDK:
# Node.js
npm install -S @linkedapi/node
# Python
pip install linkedapiInitialize the client and run a people search – the same execute then result pattern as the profile fetch above:
import LinkedApi from '@linkedapi/node';
const linkedapi = new LinkedApi({
linkedApiToken: process.env.LINKED_API_TOKEN,
identificationToken: process.env.IDENTIFICATION_TOKEN,
});
const search = await linkedapi.searchPeople.execute({
term: 'head of growth',
limit: 25,
filter: { locations: ['United States'], industries: ['Software Development'] },
});
const { data } = await linkedapi.searchPeople.result(search.workflowId);
data?.forEach((person) => console.log(person.name, '-', person.publicUrl));Grab your tokens from the installation guide. Writing this in Python rather than TypeScript? Scraping LinkedIn in Python puts the same extraction next to a Playwright script and checks the state of the open-source libraries.
Two ways to run it: build it in, or hand it to an agent
Both routes are first-class, and which one you want depends on whether you are building a product or running a workflow.
Build it in. The REST API and the Node and Python SDKs plus the shell CLI give you the primitives above to compose into your own logic – your backend, your CRM, your scheduler.
Get it out of the box. Install a ready-made agent skill with npx @linkedapi/skills, or point an assistant at the MCP server or the AI-agent-friendly CLI (Claude Code, Cursor, Codex), and ask in plain language: "find heads of growth at Series B fintechs in London, pull their profiles, and message the ones who posted about hiring this month." The agent composes and runs the same workflows. Nothing to wire up.
Scraper API vs building your own scraper
The real question for most engineers is "should I just build this myself?" It comes down to maintenance and risk, not difficulty:
| Factor | Build it yourself | Scraper API |
|---|---|---|
| Time to first data | Days to weeks | Minutes |
| Proxies and CAPTCHAs | You manage them | Handled |
| Selectors break | You fix them, forever | Handled |
| Account-ban risk | High, hard to control | Lower, paced for you |
| Cost at low volume | "Free" but your time | Free tier to low monthly |
| Cost at massive volume | Cheaper per record | More per record |
| Best when | You have niche needs and time | You want data and to ship |
If you want to build it anyway, our guide to scraping LinkedIn covers the methods, the detection signals, and why headless scraping breaks.
Is a LinkedIn scraper API legal? Will my account get banned?
In hiQ Labs v. LinkedIn (9th Cir. 2022) the Ninth Circuit affirmed a preliminary injunction, finding hiQ had raised serious questions that scraping public LinkedIn data likely does not violate the CFAA – but it still falls under LinkedIn's terms, and under GDPR and CCPA when personal data is involved. The three-layer model is in our scraping guide.
The cautionary tale for this category is Proxycurl: one of the most popular LinkedIn data APIs until LinkedIn sued its operator in 2025 over fake accounts and scraping, after which the service shut down and its data was slated for deletion. The lesson is about who carries the risk. An account-based API runs your own real session, holds no scraped index, and paces itself – which keeps accounts healthy, but is not immunity and will not pull a hundred thousand profiles a day.
Frequently Asked Questions (FAQ)
No. The official API is partner-gated and does not expose other people's profiles, search results or audience data, which is why every "LinkedIn scraper API" is a third-party product – a dataset, a real-time scraper, or an account-based API that runs your own session.
None are free at working volume, but most have a free tier to test with: Bright Data gives 5,000 records a month, Scrapingdog 200 starting credits, and Apify $5 of monthly usage. Account-based products give trials instead – Linked API a 7-day trial, Unipile the same.
Yes, but restricted. The open tier mainly returns your own profile and lets you share posts. Anything broader needs Partner Program approval, which is selective and can take weeks.
For a scraper API, you sign up with the provider and get a token. For Linked API you get two – an account token and a per-account identification token – from the dashboard; see the installation guide.
The official API exposes a narrow, approved slice of data through OAuth. A scraper API returns what a user can actually see – profiles, companies, posts, search – without partner approval, and operates outside LinkedIn's official program.
Yes, with a real-time scraper or an account-based API. Datasets are not real time: they serve pre-collected records that can be months or years old.
With an account-based API the ceiling is your account's own: roughly 80 profile views a day on a free account, ~150 on Premium, up to ~1,000 through Sales Navigator. Scrapers and datasets go higher because they do not use your account.
Any automation carries risk. It is lowest when requests come from your own authenticated account at human pace, which is how an account-based API is built to behave. Aggressive headless scraping on a logged-in account is what gets flagged.
Want fresh LinkedIn data and the ability to act on it, without running a scraper? Start with Linked API – your account runs in its own dedicated cloud browser at human pace, within the per-action limits you configure, on flat per-seat pricing from $49/mo billed annually with a 7-day trial – and use it both ways: build it into your product with the REST API, SDKs and CLI, or get it out of the box through the MCP server and ready-made agent skills.
Facts verified September 24, 2026 – Bright Data, Scrapingdog, Apify and Unipile pricing, entity coverage and action capability checked against their live product and pricing pages on that date.