Get a LinkedIn profile
Fetch a LinkedIn profile: full_name, headline, about, location, follower_count, connection_count, current_company, experience, education and skills. With detail=with_email, also look for their work email, each address checked with its mail server. Use this to enrich a person from their profile URL.
https://api.scrapefield.com/v1/linkedin/profilehttps://api.scrapefield.com/v1/linkedin/profile?vanity_name=sirlewishamiltonIn your code
const params = new URLSearchParams({
"url": "https://www.linkedin.com/in/example"
});
const res = await fetch(`https://api.scrapefield.com/v1/linkedin/profile?${params}`, {
headers: { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits_charged);Parameters
| Parameter | What it does |
|---|---|
url | The public profile URL, e.g. https://www.linkedin.com/in/someone. A member-id URL (/in/ACoAA… or /in/ACwAA…), as reactions and Sales Navigator give, works too. |
vanity_name | The part after /in/ in the public URL, e.g. someone. A member id (ACoAA…) works too. |
detail | main is the profile as LinkedIn first shows it, without opening a section: up to 5 positions, 2 schools and 2 skills, for less. with_email is the whole profile and a search for their work email, in emails, for more.full · main · with_email, default full |
fresh | Skip the cache and fetch now. Charged normally. Not available on trial credits — buy any pack to unlock it. default false |
Response
Returns one linkedin_profile. This is the demo’s answer, the one the playground above returns, in full rather than abbreviated — including the fields that come back null, because a field is null when the platform does not show it and you should know which ones those are before you build on them. A call with your key returns the account you ask for.
{
"data": {
"vanity_name": "mara-vogel",
"url": "https://www.linkedin.com/in/mara-vogel/",
"full_name": "Mara Vogel",
"first_name": "Mara",
"last_name": "Vogel",
"headline": "Head of Growth at Kestrel",
"about": "I build the boring parts that keep products up. Previously early at two startups; now working on data infrastructure.",
"location": "Brooklyn, United States",
"profile_picture_url": "https://cdn.example/li/kmVExb4fW1Hu.jpg",
"follower_count": 20156,
"connection_count": 500,
"open_to_work": false,
"current_company": {
"name": "Kestrel",
"url": "https://www.linkedin.com/company/kestrel/"
},
"experience": [
{
"title": "Head of Growth",
"company": {
"name": "Kestrel",
"url": "https://www.linkedin.com/company/kestrel/"
},
"employment_type": "Full-time",
"location": "Brooklyn, United States",
"start_date": "2023-01",
"end_date": null,
"is_current": true,
"description": "Own the data platform end to end: ingestion, the warehouse and the on-call rota."
},
{
"title": "Product Designer",
"company": {
"name": "Kestrel",
"url": "https://www.linkedin.com/company/kestrel/"
},
"employment_type": "Full-time",
"location": "Brooklyn, United States",
"start_date": "2020-03",
"end_date": "2023-06",
"is_current": false,
"description": null
},
{
"title": "Founder",
"company": {
"name": "Brightwater",
"url": "https://www.linkedin.com/company/brightwater/"
},
"employment_type": "Contract",
"location": "Brooklyn, United States",
"start_date": "2018-08",
"end_date": "2020-09",
"is_current": false,
"description": null
}
],
"education": [
{
"school": {
"name": "The University of Texas at Austin",
"url": "https://www.linkedin.com/school/theuniversityoftexasataustin/"
},
"degree": "Master of Science - MS",
"field_of_study": "Industrial Design",
"start_year": 2013,
"end_year": 2017
}
],
"skills": [
"Data Modeling",
"Product Strategy",
"SQL",
"TypeScript"
],
"emails": []
},
"meta": {
"request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
"credits_charged": 11,
"credits_remaining": 74218,
"cached": false,
"fetched_at": "2026-09-20T09:12:03Z",
"next_cursor": null
}
}Fields of linkedin_profile
A LinkedIn profile. Named after the words LinkedIn prints, since LinkedIn has no official data API.
| Field | What it is |
|---|---|
vanity_name | The part after /in/ in the profile URL. |
url | The profile. |
full_name | The name, as the profile shows it. |
first_name | The given name. |
last_name | The family name. |
headline | The line under the name. |
about | The About section. |
location | As printed, e.g. "Berlin, Germany". |
profile_picture_url | The profile photo. |
follower_count | How many members follow the profile. |
connection_count | LinkedIn stops counting at 500: a value of 500 means "500+". |
open_to_work | Whether the profile shows the #OpenToWork frame. |
current_company | The employer shown at the top of the profile. |
current_company.name | As the listing prints it. |
current_company.url | The company page, where it has one. |
experience | Positions, most recent first. |
experience[].title | As the position shows it. null where the profile gives none. |
experience[].company | The employer. |
experience[].company.name | As the listing prints it. |
experience[].company.url | The company page, where it has one. |
experience[].employment_type | As printed: "Full-time", "Contract", … |
experience[].location | Where the role is based, as printed. |
experience[].start_date | YYYY-MM, or YYYY where the profile gives only a year. |
experience[].end_date | YYYY-MM or YYYY; null for a current role, or where the profile gives no date: is_current tells which. |
experience[].is_current | true where the profile says the role runs to the present, false where it gives an end date, null where it gives no dates. |
experience[].description | What the profile says about the role. |
education | Schools, most recent first. |
education[].school | The school, and its LinkedIn page where it has one. |
education[].school.name | As the listing prints it. |
education[].school.url | The company page, where it has one. |
education[].degree | As printed, e.g. "Bachelor of Science - BS". |
education[].field_of_study | As printed, e.g. "Computer Science". |
education[].start_year | The year they started. |
education[].end_year | The year they finished, or expect to. |
skills | As listed on the profile. |
emails | Their work email, found with detail=with_email only, best first; empty otherwise, or when none is found. |
emails[].email | The address. |
emails[].status | valid when their mail server accepts it; risky when the server accepts every address, so this one cannot be confirmed. |
emails[].deliverable | Whether mail to it should arrive. |
emails[].catch_all | Whether the domain accepts any address at all, which makes a check meaningless. |
emails[].free_provider | Whether it is at a free mail service, such as Gmail, rather than an employer's domain. |
What it costs
11 credits (7 for detail=main, 33 for detail=with_email) per successful call, whether we fetch it or serve it from cache — you pay for the answer, not for how we produced it. Responses are cached for 12 hours and a cached one tells you when the data was actually fetched. A call we fail costs 0 and is refunded automatically.
On the smallest pack that is $8.58 per 1,000 calls; on the largest, $4.84. The full table.
Questions
How much does the LinkedIn profile scraper API cost?
From 7 to 33 credits a call, depending on what you ask for: $5.46 to $25.74 per 1,000 calls on the smallest pack, $3.08 to $14.51 on the largest. A call that fails costs nothing, and the refund is automatic. A cached answer costs the same as a fresh one. Credits are bought in packs and never expire; there is no plan.
Do I need a LinkedIn account, a login or cookies?
No. You need a key from us and nothing from LinkedIn. We never take a customer's login, cookies or session, at any price, and no account of yours is ever at risk.
Can I try it without signing up?
Yes. Add demo=true and leave the key out, or press Send request in the playground on this page. The demo answers with a real answer about Lewis Hamilton, captured once a week, in exactly the shape a live call returns, whatever you ask, and charges nothing.
How fresh is the data?
An answer is kept for up to 12 hours, and a cached one says when it was fetched, in meta.fetched_at. Add fresh=true to fetch it again now, at the same price; it needs any purchase, not the trial.
What does it return?
One linkedin_profile object. Its fields are named after the words LinkedIn prints, since LinkedIn has no official data API. A field is null when LinkedIn does not show it, never missing. Every field is described on this page.
Can an AI agent call it?
Yes: it is the MCP tool get_linkedin_profile on our MCP server, with the same parameters, answer and price. Without a key, the tool answers from the demo.