~ / endpoints / Profile API

LinkedIn Profile Scraper API

Our LinkedIn profile scraper takes a public /in/ profile URL or a bare vanity slug and returns structured JSON: name, headline, location, about, profile image, current company, follower count, and experience and education arrays, all in one request.

Get a free API keyBrowse the endpoints
1,000
free requests / mo
2.6s
median response
JSON
structured output
1
flat charge per profile
why it is walled

Why LinkedIn Profile data is login-walled

LinkedIn login-walls the interactive profile, so a datacenter request usually lands on a "Sign in to continue" shell with no data. The logged-out /in/ page only renders a public preview on a clean residential egress, and when it is challenged our endpoint reports the wall plainly instead of returning a half-empty record.

one request

Call the LinkedIn Profile Scraper API in one request

cURL
curl "https://api.linkedinscraperapi.com/api/v1/linkedin/profile?url=https://www.linkedin.com/in/reidhoffman&api_key=$API_KEY"
Python
import requests

BASE = "https://api.linkedinscraperapi.com"
API_KEY = "YOUR_API_KEY"

# Pass a full /in/ profile URL, or use username=reidhoffman instead.
data = requests.get(
    f"{BASE}/api/v1/linkedin/profile",
    params={
        "url": "https://www.linkedin.com/in/reidhoffman",
        "api_key": API_KEY,
    },
    timeout=30,
).json()

print(data["name"], "-", data["headline"])
print("Now at:", data["current_company"], "|", data["followers"], "followers")

# experience[] and education[] come from the public Person JSON-LD:
# the guest render exposes company and school names (roles/dates are null).
for role in data["experience"]:
    print(role["company"])
for school in data["education"]:
    print(school["school"])
inputs

Parameters

ParameterRequiredDefaultNotes
urloptional-A full /in/{slug} profile URL, e.g. https://www.linkedin.com/in/reidhoffman. One of url or username is required.
usernameoptional-The bare vanity slug instead of a URL, e.g. reidhoffman (the {slug} in /in/{slug}). One of url or username is required.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
the JSON

The JSON the LinkedIn Profile Scraper API returns

200 OK
{
  "id": "reidhoffman",
  "name": "Reid Hoffman",
  "headline": "Co-Founder, Executive Board Chair",
  "location": "United States",
  "about": "My current priority is investing in and building with AI to benefit humanity. Recently, I've co-founded Inflection.AI and ManasAI.co. I am active in all facets of the consumer internet and software industries...",
  "url": "https://www.linkedin.com/in/reidhoffman",
  "image": "https://media.licdn.com/dms/image/v2/D5603AQHW7wKzPb3DAg/profile-displayphoto-shrink_200_200/0/1718216204174?e=2147483647&v=beta&t=_CCpDriOmxYQ2dvuyVwU7D63RyTduLzslIJTP75N9eQ",
  "current_company": "Manas AI",
  "followers": 2776004,
  "connections": "500+",
  "experience": [
    { "title": null, "company": "Manas AI", "date_range": null, "location": null },
    { "title": null, "company": "Greylock", "date_range": null, "location": null },
    { "title": null, "company": "Microsoft", "date_range": null, "location": null }
  ],
  "education": [
    { "school": "Oxford University", "degree": null, "date_range": null },
    { "school": "Stanford University", "degree": null, "date_range": null }
  ]
}
FieldTypeDescription
idstringThe profile's vanity slug, the stable identifier from the /in/{slug} URL.
namestringThe member's full display name from the public Person node.
headlinestringThe professional headline shown under the name, e.g. "Co-Founder, Executive Board Chair".
locationstringThe member's location as published on the public preview, e.g. "United States".
aboutstringThe full About / summary text when the guest render exposes it.
urlstringThe canonical /in/ profile URL.
imagestringURL of the profile photo.
current_companystringThe current employer, taken from the first ongoing entry in experience.
followersintegerFollower count when the public render exposes it, otherwise null.
connectionsstringThe connection count label such as "500+" when public, otherwise null. Rarely exposed logged-out.
experiencearrayWork history as { title, company, date_range, location }. The guest Person JSON-LD exposes company names; roles and dates are usually null.
educationarraySchools as { school, degree, date_range }. School names come through; degree and dates are usually null on the guest render.
who uses it

Who pulls LinkedIn data, and for what

>

Sales and recruiting enrichment

Resolve a list of /in/ URLs into name, headline, location, and current_company so reps and recruiters see who a lead is before the first message.
>

Talent sourcing

Read the experience and education arrays to shortlist candidates by past companies and schools, then store the slug as a stable key.
>

CRM hygiene

Re-run a profile on a schedule to catch a title or company change and keep contact records current without manual checks.
>

People databases

Turn a spreadsheet of profile URLs into clean rows of name, headline, image, and follower count for a searchable people catalog.
>

Investor and founder research

Pull public headlines and about text for founders and operators to map who is building what, straight into your research notes.
>

Audience sizing

Capture the follower count where it is public to gauge a member's reach before outreach or a partnership pitch.
why this endpoint

Why teams build on our LinkedIn Profile Scraper API

Pass a /in/ URL or a bare username and we resolve the canonical profile for you, with no LinkedIn login and no cookies to manage. Every request runs through residential proxies, anti-bot handling, and retries, returning validated JSON in about 2.6 seconds, and honestly reports an authwall rather than a partial record when the egress is challenged.

*

URL or username input

One endpoint takes a full /in/ URL or a bare vanity slug and resolves the canonical profile server side.
*

Residential-first routing

We lead with residential proxies and fall back through datacenter and free tiers, because LinkedIn walls datacenter egress on member pages far more often.
*

Honest wall reporting

When a challenged egress serves a sign-in shell, the endpoint reports the wall with matched markers instead of emitting a profile named "Sign Up".
*

Experience and education arrays

We fold the Person JSON-LD worksFor and alumniOf lists into experience[] and education[], de-duped, with company and school names populated.
*

Auto-retry across pools

Failed fetches retry through residential, datacenter, and free proxy tiers before a response is returned.
*

Validated JSON schema

Regression-tested fields return in the same shape on every call, with honest nulls where the public preview omits a value.
measured against

LinkedIn Profile Scraper API measured against the alternatives

Our APIDIY (requests / headless)Official LinkedIn API
Input by URL or slugYes, /in/ URL or usernameManual fetch and parseNo public profile-by-URL endpoint
Public profile fieldsName, headline, location, about, imagePossible, but the parser breaks oftenMembers API is partner-gated and consent-based
SetupAPI key onlyResidential proxies, headless browser, parsersPartner Program approval plus OAuth
Login and cookiesNone, logged-out onlyYou manage sessions and cookiesMember must authorize your app
Anti-bot and proxiesResidential-first, built inYou build and maintain itNot applicable
Experience and educationArrays of company and school namesExtra parsing per sectionOnly for members who connect your app
Behavior when walledReports the authwall honestlySilent partial or empty recordReturns only authorized fields
what it costs

Usage-based pricing, no seats

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is a LinkedIn profile scraper?

A LinkedIn profile scraper is a tool that reads a member's public profile data and returns it in a structured format. Our LinkedIn profile scraper API takes a /in/ URL or a vanity slug and returns the name, headline, location, about text, profile image, current company, follower count, and experience and education arrays as JSON from a single request.

How do I scrape a LinkedIn profile without logging in?

Send one GET request to our linkedin/profile endpoint with the profile url or a username and your API key. We route the request through residential proxies, handle anti-bot checks, and parse the public Person data LinkedIn renders for logged-out visitors, so you get clean JSON back without a LinkedIn account, cookies, or a headless browser of your own.

Can I pass a username instead of a full URL?

Yes. You can pass a full /in/{slug} URL in the url parameter, or the bare vanity slug in the username parameter, for example reidhoffman. One of the two is required, and the endpoint resolves the canonical profile URL either way.

Why are the roles and dates in experience null?

The logged-out profile page exposes a schema.org Person node whose worksFor and alumniOf lists carry company and school names, but usually not the role title or the start and end dates. So experience[] and education[] come back with company and school populated and title, date_range, and degree null. That is the ceiling of what LinkedIn renders publicly, and we return the real names rather than inventing dates.

Are follower and connection counts always returned?

Not always. The follower count appears on some public renders and comes back as an integer when present. The connection count is rarely public logged-out; when LinkedIn does print the owner's cap label we return it as a string like "500+", and otherwise both fields are null. We never guess these numbers.

What happens when LinkedIn blocks the request?

The /in/ page is the most aggressively login-walled surface on LinkedIn. On a challenged egress it serves an authwall or "Sign in" shell with no Person data. When we cannot map a name from the JSON-LD or the og card, the endpoint returns an error that names the wall and the markers it matched, so a block is distinguishable from a genuinely empty profile. We lead with residential proxies to minimize how often this happens.

How fast is the LinkedIn profile scraper API?

Median end-to-end response is about 2.6 seconds, which includes residential proxy routing, anti-bot handling, retries, and parsing. One call returns the full public profile record, so you do not chain extra requests to assemble it.

Ship profile api data as JSON today
Start with 1,000 free requests. No credit card, no LinkedIn login.
Get a free API key Browse the endpoints