To enrich a lead with LinkedIn data, send the lead's profile URL to Scavio's LinkedIn API. POST /api/v1/linkedin/person returns the member's name, location, follower count, school and current employer with that employer's LinkedIn page id; POST /api/v1/linkedin/company with that id returns headcount, size band, industry, website and headquarters. Each is 1 credit, about $0.002 on the Growth plan billed yearly. Job search adds a hiring signal and person posts add the headline and what the lead talks about, at 10 credits each.
LinkedIn's own APIs only return the member who signs in to your app, and its User Agreement (section 8.2) prohibits scraping profiles. Everything below reads public, logged-out data with no LinkedIn account of yours involved; store only what your process needs. The example lead is a VP of Sales we found through a Google search for public "VP of Sales" SaaS profiles, and every response is a capture from October 27, 2026.
Step 1: Look up the person
curl -s https://api.scavio.dev/api/v1/linkedin/person \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.linkedin.com/in/chris-n-neely"}'The captured data, with image URLs and the "people also viewed" list trimmed:
{
"public_identifier": "chris-n-neely",
"full_name": "Chris Neely",
"headline": null,
"about": "Sales executive with 20+ years of experience building, scaling, and leading…",
"location": "Houston, Texas, United States",
"city": "Houston",
"country_code": "US",
"follower_count": 3484,
"connection_count": 500,
"current_company": {
"name": "HighRadius",
"company_id": "highradius",
"title": null,
"location": null
},
"experiences": [],
"educations": [],
"education_summary": "The University of Texas at Austin"
}That shape is typical. Across 36 public VP of Sales profiles, all returned name, location and followers, 32 a current employer and 31 the employer's company_id, but none a headline, job title or work history. about is a teaser of about 90 characters, and connection_count stops at 500. Public figures return more: Bill Gates' profile came back with his headline and full work history.
Step 2: Look up the employer
curl -s https://api.scavio.dev/api/v1/linkedin/company \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company": "highradius"}'Trimmed to the fields a lead score uses:
{
"universal_name": "highradius",
"name": "HighRadius",
"website": "https://www.highradius.com/",
"website_domain": "highradius.com",
"industries": ["Software Development"],
"specialties": ["Receivables Management SaaS Solutions", "Cash Application Automation"],
"company_size": "1,001-5,000 employees",
"organization_type": "Privately Held",
"employee_count": 4656,
"follower_count": 494801,
"headquarters": "Houston, Texas",
"country_codes": ["US", "NL"]
}The full response also lists all 8 office addresses, the about text, similar and affiliated companies and the 10 latest company posts with like and comment counts. All 31 employers from our sample returned an employee count, size band and industry. employee_count counts members who list the company, so it can differ from the self-chosen band; one sampled company reported 1,449 against "51-200 employees". Companies repeat across leads, so cache this call by company_id.
Step 3: Fill in the headline and title
The profile left the title empty, but the lead's public headline is still in two places. Each of the lead's own posts carries it in an author block (Step 5), and Google's result for the profile usually shows it in the title and the current role in the snippet. This is the row from the Google search we used to find the lead, through Scavio's Google endpoint:
curl -s https://api.scavio.dev/api/v2/google \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "site:linkedin.com/in \"VP of Sales\" SaaS", "start": 20}'{
"position": 2,
"title": "Chris Neely - VP of Sales | SaaS Revenue Growth",
"link": "https://www.linkedin.com/in/chris-n-neely",
"displayed_link": "3.5K+ followers",
"snippet": "Houston, Texas, United States · Vice President, Enterprise Expansion Sales · HighRadiusChris Neely · VP of Sales | SaaS Revenue Growth | Enterprise & Mid-Market Leader | Expansion Expert | PE & Public Company Experience | Scaling Teams $20M–$200M+ ...Read more",
"source": "LinkedIn · Chris Neely"
}Splitting the title on " - " gives the headline; 39 of the 40 results we pulled had that form, and 10 were cut short with "...". A Google call is 1 credit and returns 10 profiles, which also makes it the way to build a lead list now that LinkedIn people search is retired.
Step 4: Check whether the company is hiring
curl -s https://api.scavio.dev/api/v1/linkedin/search/jobs \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"search": "HighRadius", "location": "United States"}'This returned 17 jobs, all at HighRadius and all posted between October 6 and 24, 2026, from Forward Deployed Engineer to Regional VP of mid-market sales. One row, as captured:
{
"id": "4460637494",
"title": "Enterprise Account Manager",
"url": "https://www.linkedin.com/jobs/view/4460637494",
"company": "HighRadius",
"company_url": "https://www.linkedin.com/company/highradius",
"location": "Houston, TX",
"posted_at": "2026-10-14 10:42:59",
"workplace_type": "On-site",
"salary": null
}A keyword search can return other companies' jobs, so keep the rows whose company_url matches the employer. Location filters by country, and results rotate between identical calls, so dedupe by id. A search is 10 credits; /api/v1/linkedin/job returns one listing in full for 30.
Step 5: Read what the lead posts
curl -s https://api.scavio.dev/api/v1/linkedin/person/posts \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username": "chris-n-neely"}'This returned the lead's 17 posts. The newest, as captured (reaction breakdown trimmed):
{
"id": "7500658176657367040",
"text": "Are you an Enterprise Account Manager looking for a long-term role where you can actually hit your numbers and drive real impact?\n\nWe are expanding our team, and we’re looking for someone who thrives on building strong client relationships and closing high-value strategic deals.\n\nIf you’re ready for your next career move, drop me a message or comment below, and let’s talk!",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7500658176657367040/",
"created_at": "2026-09-01 20:57:44",
"num_comments": 0,
"num_reposts": 2,
"reactions": { "total": 30, "likes": 30 },
"author": {
"public_identifier": "chris-n-neely",
"full_name": "Chris Neely",
"headline": "VP of Sales | SaaS Revenue Growth | Enterprise & Mid-Market Leader | Expansion Expert | PE & Public Company Experience | Scaling Teams $20M–$200M+"
}
}The lead was hiring for the same role the job search found open six weeks later, which is the kind of context that makes a first message relevant. Pass type: "comments" or type: "reactions" for the posts the lead engaged with, and next_cursor to page further. 10 credits a page.
All nine live endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/linkedin/person | Name, location, followers, school, current employer and company id | 1 |
/api/v1/linkedin/person/about | The profile's narrative sections only | 1 |
/api/v1/linkedin/company | Headcount, size band, industry, website, HQ, offices, recent posts | 1 |
/api/v1/linkedin/post | One post's text, timestamp, hashtags and media | 1 |
/api/v1/linkedin/person/posts | A page of a member's posts, comments or reactions | 10 |
/api/v1/linkedin/company/posts | A page of a company's posts | 10 |
/api/v1/linkedin/search/jobs | 25 job listings a page for a keyword and country | 10 |
/api/v1/linkedin/post/comments | A page of comments on a post | 10 |
/api/v1/linkedin/job | One job listing in full | 30 |
People search, contact info, company employees, per-company jobs and post search are retired and answer an unbilled 410. A lead with its company is 2 credits; adding a job search and a page of posts brings it to 22. For how the alternatives compare, see the best LinkedIn lead enrichment APIs.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/linkedin/personwith a profile URL, then to/companywith thecompany_idit returns. Run it from a queue: profile lookups took a median 22 seconds in our test.
Try the LinkedIn API free in the playground first, or call it from Claude and other agents through the MCP server.
Reference: LinkedIn API overview · person · company · job search · person posts
Frequently asked questions
How do I enrich a LinkedIn profile URL with company data?
Look up the profile, read current_company.company_id from the response, and pass it to a company lookup. With Scavio that is POST /api/v1/linkedin/person and then /api/v1/linkedin/company, 1 credit each. In our test of 36 public VP of Sales profiles, 31 carried a company page id, and all 31 company lookups returned headcount, size band and industry.
Why is the headline empty when I look up a LinkedIn profile?
For most ordinary members it comes back empty. None of the 36 ordinary profiles we looked up on October 27, 2026 returned a headline or work history, while public figures did. Take the headline from the author block of the member's posts, or from the Google result for the profile, whose title and snippet usually carry the headline and current role.
Can I find out if a company is hiring from LinkedIn data?
Yes. Search LinkedIn jobs with the company name and a country. Scavio's /api/v1/linkedin/search/jobs returned 17 open HighRadius roles in the United States, all posted October 6 to 24, 2026, with title, location, posting time and workplace type. A search is 10 credits; the old per-company jobs endpoint is retired.
How long does a LinkedIn enrichment call take?
Plan for seconds to a minute. Across our 36 profiles, Scavio's person lookup took a median 22 seconds and up to 73, and company lookups a median 4.9 seconds. Run enrichment from a queue or a scheduled job, and retry the occasional failed call, which is not billed.
Does LinkedIn data include emails and phone numbers?
Not on public profiles, so Scavio's person lookup does not return them, and its contact endpoint is retired. Pair the person and company data with an email-finding provider if outreach needs an address.