LinkedIn Fresh Profile Data Scraper avatar

LinkedIn Fresh Profile Data Scraper

Pricing

from $10.00 / 1,000 linkedin profile scrapeds

Go to Apify Store
LinkedIn Fresh Profile Data Scraper

LinkedIn Fresh Profile Data Scraper

Scrape public LinkedIn profile data from profile URLs or handles: name, about, location, followers, affiliated organizations, education, articles, and recent posts, with optional company-page enrichment. Provider-backed via ScrapeCreators and SociaVault; no LinkedIn login or cookies.

Pricing

from $10.00 / 1,000 linkedin profile scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

Turn a LinkedIn profile URL or handle into one public profile record for recruiters, CRM enrichment, and AI agents. Each row includes name, about, location, follower count, affiliated organizations, education, published articles, and recent posts when LinkedIn exposes them on the public page. Optional company-page enrichment adds industry, website, employee count, and headquarters. No LinkedIn login or cookies.

This Actor reads the same public JSON-LD view you get in an incognito browser. It does not return login-only job titles, skills, certifications, emails, or phone numbers. For those logged-in fields, no cookieless provider in this stack exposes them.

Best fit for this Actor

  • Enrich a list of known /in/ profile URLs into structured people records for a CRM or ATS.
  • Attach recent public posts and published LinkedIn articles to a person record.
  • Add the current company's public LinkedIn page (industry, headcount, website) when enrichCompany is true.

To search for profiles by keyword, use LinkedIn Profile Search Scraper. For emails, use LinkedIn Profile Email Scraper. For a leaner identity-only row, use LinkedIn Profile Details Scraper.

Practical scenario

A recruiting coordinator pastes https://www.linkedin.com/in/williamhgates/ and satyanadella. The run returns one row per person: name, Seattle/Redmond location, follower counts, Gates Foundation / Microsoft as affiliated organizations, Harvard education dates when public, recent posts, and Pulse articles. A missing handle finishes SUCCEEDED with a NOT_FOUND row and no profile-scraped charge. The coordinator exports CSV into the ATS and routes company-page enrichment to a second run when they need industry and headcount.

Quick start input

{
"profileUrls": ["https://www.linkedin.com/in/williamhgates/"],
"maxProfiles": 10,
"enrichCompany": false,
"outputMode": "full",
"providerOrder": "scrapecreators-first"
}

profileUrls accepts full /in/ URLs, locale hosts such as uk.linkedin.com/in/..., or a bare handle. One unique profile produces one dataset row.

Input reference

FieldTypeWhat it controls
profileUrlsarrayRequired person URLs or handles. Example: https://www.linkedin.com/in/williamhgates/. Max 100. Company, post, and Sales Navigator URLs are out of scope.
maxProfilesintegerCap on unique profiles processed. Default 50, max 100.
enrichCompanybooleanFetch the current company's public LinkedIn page. Default false. Adds $0.02 per successful enrich.
outputModeenumfull (default) or compact (first 3 of each list).
providerOrderenumscrapecreators-first (default) or sociavault-first.
maxConcurrencyintegerParallel profile fetches. Default 2, max 5.
includeRawDatabooleanAttach raw provider JSON under rawProfile. Default false.

What data you receive

One dataset item is one LinkedIn person.

{
"profileUrl": "https://www.linkedin.com/in/williamhgates/",
"publicId": "williamhgates",
"fullName": "Bill Gates",
"about": "Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft.",
"location": "Seattle, Washington, United States",
"followerCount": 40588779,
"currentCompanyName": "Gates Foundation",
"currentCompanyUrl": "https://www.linkedin.com/company/gates-foundation",
"experience": [
{ "company": "Gates Foundation", "companyUrl": "https://www.linkedin.com/company/gates-foundation" }
],
"education": [
{ "school": "Harvard University", "startDate": "1973", "endDate": "1975" }
],
"recentPosts": [
{ "title": "Suriname is officially malaria-free.", "publishedAt": "2026-08-20T23:49:40.110Z" }
],
"outcome": "OK",
"provider": "scrapecreators",
"scrapedAt": "2026-08-21T07:00:00.000Z"
}
FieldMeaning
experience[]Affiliated organizations from LinkedIn's public structured data. Dates appear when JSON-LD includes them. Per-role job titles are not in this public view.
recentPosts[]Public posts LinkedIn lists on the profile, with URL and timestamp.
outcomeOK is billed. NOT_FOUND is an honest empty/private public page with no profile-scraped charge.
companyIndustry / companyEmployeeCountPresent only when enrichCompany succeeded.

OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, and chargedEventCounts.

Use through the API

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~linkedin-fresh-profile-data-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"profileUrls":["https://www.linkedin.com/in/williamhgates/"]}'

Download rows as JSON, CSV, Excel, or HTML from the Dataset tab.

Use with AI agents through Apify MCP

Scrape public LinkedIn profile data for https://www.linkedin.com/in/williamhgates/ and satyanadella. Return fullName, location, currentCompanyName, followerCount, recentPosts titles, outcome, and provider.

Connect via https://mcp.apify.com. Read OUTPUT.outcome and itemsPushed to confirm whether the dataset contains OK rows, a NOT_FOUND row, or a valid empty result.

Connect the workflow

Pricing

Pay per event plus platform usage. Confirm current event prices on the live Pricing tab; that tab is the source of truth if this page ever lags.

  • apify-actor-start: $0.00005 per run
  • profile-scraped: $0.01 per OK row
  • company-enriched: $0.02 per successfully enriched company page

A one-profile run without company enrich is about $0.01 in result events plus a few seconds of Apify platform usage. NOT_FOUND rows have no profile-scraped charge. Provider credits are paid by the Actor owner.

How it works

  1. Normalize and deduplicate /in/ URLs and handles.
  2. Fetch the public profile from ScrapeCreators, then SociaVault if needed.
  3. Map JSON-LD organizations, education, articles, and recent posts into a flat row.
  4. Optionally fetch the current company's public LinkedIn page.
  5. Charge profile-scraped only after a usable public record, then write the row.

Private or missing profiles return HTTP 404 not_found from the providers and finish SUCCEEDED with NOT_FOUND / VALID_EMPTY.

Best results

  • Pass person profile URLs or handles. Keep company pages, posts, and Sales Navigator URLs for those Actors.
  • Use fullName, currentCompanyName, location, and recentPosts as the decision fields. Treat experience[].company as an affiliated organization, not a job title.
  • Keep maxConcurrency at 2 unless you are batching many URLs.
  • A typo handle finishes SUCCEEDED with a NOT_FOUND row and no profile-scraped charge.

Builder's note

I found that ScrapeCreators GET /v1/linkedin/profile and SociaVault GET /v1/scrape/linkedin/profile return LinkedIn's public JSON-LD on a well-known public profile: name, about, location, followers, affiliated organizations, education dates, articles, and recent posts. In my testing the live payload matched the vendor docs for this public view. Company enrich is a second call to /v1/linkedin/company because the person payload carries the company name and URL. My goal is a useful CRM identity-plus-activity row from that public page.

Use this Actor on public LinkedIn data you are authorized to process, follow applicable law and LinkedIn's terms, and keep the output in your own compliance workflow. This Actor is independent of LinkedIn and does not log into LinkedIn.

Issues and feature requests: use the Actor Issues tab on Apify.