LinkedIn People Search Scraper avatar

LinkedIn People Search Scraper

Pricing

from $5.50 / 1,000 results

Go to Apify Store
LinkedIn People Search Scraper

LinkedIn People Search Scraper

Find public LinkedIn profiles by job title, keyword, location and company with no login or cookies. Get name, headline, current company, work history, education and followers. Bulk searches, auto proxy fallback. Export JSON, CSV or Excel for lead generation.

Pricing

from $5.50 / 1,000 results

Rating

0.0

(0)

Developer

Data Minds

Data Minds

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Security

Limited permissions

Share

What is LinkedIn People Search Scraper?

LinkedIn People Search Scraper is a LinkedIn people search scraper that finds public LinkedIn profiles by job title, skill, location and current company. Enter keywords or search links and get names, headlines, employers and locations, plus work history, education and career metrics with Full details, as spreadsheet-ready data with no login or cookies. Set a result limit for each search and export the list to CSV or Excel. Pay per profile, from $5.50 per 1,000 on the Gold plan. 🚀 Try it free

  • LinkedIn lead generation: collect LinkedIn leads for a role, city or company.
  • LinkedIn talent sourcing: run a LinkedIn candidate search by job title, location and seniority for recruiting.
  • Sales prospecting: build a LinkedIn prospect list of the people at a target account.
  • CRM enrichment: add seniority, function and company data to the people you already track.
  • Market research: study who holds a job title in a region and how long they stay in a role.

The Apify platform adds an API, scheduling, webhooks, integrations and export to JSON, CSV, Excel, XML or HTML.

What can LinkedIn People Search Scraper do?

  • 🔍 Use it as a LinkedIn people extractor for several searches in one run, each with its own result limit.
  • 📍 Keep only people in the cities or countries you list.
  • 🏢 Keep only people whose current employer matches the companies you list.
  • 🧩 Choose Basic for quick profile data or Full for work history, education, followers, about text and career metrics.
  • 🎯 Flag LinkedIn decision makers, people open to work and people who are hiring.
  • ⏩ Save each profile to the dataset as soon as it is ready, so you can watch results arrive.

What data can LinkedIn People Search Scraper extract?

Every row has the same fields. A field is null when the profile does not show it.

DataFields
👤 IdentitypublicIdentifier, linkedinUrl, firstName, lastName, fullName, credentials
💼 Current roleheadline, currentTitle, currentCompany, currentCompanyUrl, seniority, function, isDecisionMaker
📍 Place and reachlocation, connectionsCount, followerCount
📝 About and signalsabout, openToWork, hiring, badges, websites, profilePicture
📈 Career metricsyearsOfExperience, currentRoleTenureYears, averageTenureYears
📋 Work historyexperience: one entry per job with title, company, companyUrl, location, startDate, endDate, isCurrent, duration, description
🎓 Educationeducation: one entry per school with school, schoolUrl, degree, startYear, endYear
📰 Articlesarticles: up to 10 entries with title, url, publishedAt, likes
🤝 Similar profilessimilarProfiles: up to 8 entries with publicIdentifier, fullName, headline, linkedinUrl
🔖 Run detailsdetailsStatus, foundVia (the search entry that found the person)

Note: Work history, followers, about text, photo, articles, similar profiles and career metrics come from Full details and are filled only when LinkedIn shows them. With Basic details, expect the quick profile data and, at most, the school name under education.

What data can't LinkedIn People Search Scraper extract?

Email addresses, phone numbers, skills, certifications, recommendations, mutual connections and connection degree are not returned, because they are not part of a public profile.

How to scrape LinkedIn people search results

  1. Create a free Apify account and open the Actor page.
  2. Add job titles, skills or keywords to urls, for example Head of Marketing. You can also paste LinkedIn people-search links.
  3. Add cities or countries to locations and employers to companies if you want to narrow the list.
  4. Choose details: basic for speed or full for work history and career metrics.
  5. Set maxItems to the number of profiles you want for each search entry.
  6. Click Start and watch the Output tab fill with profiles.
  7. Export the dataset as JSON, CSV, Excel, XML or HTML.

How much does it cost to scrape LinkedIn?

This Actor uses pay-per-event pricing: you pay for each profile saved, and platform usage is billed in addition. The price per profile depends on your Apify plan.

PlanPrice per profilePrice per 1,000 profiles
Free$0.00699$6.99
Bronze$0.0065$6.50
Silver$0.006$6.00
Gold$0.0055$5.50

Each run also pays a start event of $0.00005 per GB of memory, with a minimum of one. The Actor's default memory is 1024 MB, so a run is charged one start event of $0.00005.

Worked example: 2,000 profiles on the Gold plan cost 2,000 x $0.0055 = $11.00, plus the $0.00005 start event, with platform usage billed in addition.

Free plan math: the $5 monthly Apify credit covers about 715 profiles at the Free price of $0.00699, before platform usage.

Every profile row that is saved counts as one result, including rows whose detailsStatus is search-only. See the pricing page for the live prices.

Is scraping LinkedIn people data free?

You can try this Actor on a free Apify account. The monthly credit pays for about 715 profiles at the Free price, before platform usage. Beyond the credit, you pay per profile at your plan's price, and higher plans pay less per profile.

Input

The only required input is at least one entry in urls. proxyConfiguration is pre-filled and can stay as it is. The full list of fields is on the input schema page. The pre-filled example looks like this:

{
"urls": ["Head of Marketing"],
"locations": ["London"],
"proxyConfiguration": { "useApifyProxy": true }
}
FieldTypeRequiredDefaultDescription
urlsarray of stringsYes["Head of Marketing"] (pre-filled)Job titles, skills or keywords, or LinkedIn people-search URLs. Each entry runs as its own search.
locationsarray of stringsNo["London"] (pre-filled)Cities or countries. Only people located there are returned. Empty means anywhere.
companiesarray of stringsNoemptyCurrent employers, as company names or LinkedIn company URLs. Empty means any company.
detailsstringNobasicbasic returns quick profile data. full adds work history, education, followers, about text, photo and career metrics when available.
maxItemsintegerNo25Maximum profiles returned for each entry in urls. 0 means as many as can be found.
proxyConfigurationobjectYesApify Proxy on (pre-filled)Proxy settings for the run.

Tricky fields

  • urls
    • ✅ Good: Head of Marketing, Python developer, or a link such as https://www.linkedin.com/search/results/people/?keywords=head%20of%20marketing.
    • ❌ Bad: adding the city to the keyword, such as Head of Marketing London. Use locations instead.

Warning: For a search link, only the keywords part is used. Other filters in the link are ignored, so move them to locations and companies.

  • locations and companies

    • ✅ Good: Germany, London, Acme Ltd, or a LinkedIn company page link.
    • ❌ Bad: long sentences or several places in one entry. Add one place per entry.
  • maxItems

    • ✅ Good: 25 for a quick test, 0 when you want everything that can be found.
    • ❌ Bad: 0 on a very broad keyword with no filters if you have a small budget.

Warning: The limit applies to each entry in urls, not to the whole run. Three entries with maxItems 25 can return up to 75 profiles.

Output

Results appear in the run's Output tab and in the default dataset as the run progresses. The dataset has six views: overview, about and signals, experience, education, articles and similar profiles. You can download the data as JSON, CSV, Excel, XML or HTML, or read it through the API.

JSON example

{
"publicIdentifier": "jane-example",
"linkedinUrl": "https://www.linkedin.com/in/jane-example",
"firstName": "Jane",
"lastName": "Example",
"fullName": "Jane Example",
"credentials": null,
"headline": "Head of Marketing at Example Co",
"about": "Marketing leader focused on growth.",
"location": { "linkedinText": "London" },
"profilePicture": "https://example.com/photo.jpg",
"connectionsCount": 500,
"followerCount": 683,
"currentTitle": "Head of Marketing",
"currentCompany": "Example Co",
"currentCompanyUrl": "https://example.com/company/example-co",
"seniority": "director",
"function": "marketing",
"isDecisionMaker": true,
"openToWork": false,
"hiring": false,
"badges": null,
"yearsOfExperience": 12.5,
"currentRoleTenureYears": 3.2,
"averageTenureYears": 4.1,
"experience": [
{
"title": "Head of Marketing",
"company": "Example Co",
"companyUrl": "https://example.com/company/example-co",
"location": "London",
"startDate": "Jan 2023",
"endDate": null,
"isCurrent": true,
"duration": "3 years",
"description": "Leads the marketing team."
}
],
"education": [
{
"school": "Example University",
"schoolUrl": "https://example.com/school/example-university",
"degree": "BA Marketing",
"startYear": 2008,
"endYear": 2011
}
],
"websites": ["https://example.com"],
"articles": [
{
"title": "Example article",
"url": "https://example.com/article",
"publishedAt": "2025-01-15",
"likes": 12
}
],
"similarProfiles": [
{
"publicIdentifier": "john-example",
"fullName": "John Example",
"headline": "Marketing Director",
"linkedinUrl": "https://www.linkedin.com/in/john-example"
}
],
"detailsStatus": "full",
"foundVia": "Head of Marketing"
}

At the end of every run, a summary is saved in the key-value store under RUN_SUMMARY:

{
"totalProfiles": 25,
"charged": 25,
"failed": 0,
"skipped": 2,
"durationSecs": 94.3,
"stopReason": "completed"
}

Notes and limitations

  • detailsStatus shows how complete a row is: full, search-only (quick data only), parse-failed, not-found or not-run.
  • With the basic detail level, rows normally carry search-only, because the extra details are not requested.
  • With full, LinkedIn sometimes limits extra details for a while. The run then keeps the quick data for the remaining rows and marks them search-only.
  • People whose location or company does not match your filters are skipped. skipped in the run summary counts them.
  • stopReason is completed, or spend when the run stopped because the maximum cost per run was reached.
  • Only public profile data is returned. Private details are not.

Tips and advanced usage

  • Test with maxItems 25 and basic, then switch to full for the profiles you care about.
  • Use several entries in urls for related titles, such as Head of Marketing and Marketing Director, and compare rows through foundVia.
  • Use isDecisionMaker, seniority and function to filter the dataset after export.
  • For LinkedIn recruiter sourcing, put the skill in urls and your hiring city in locations.
  • For a LinkedIn employee list of one company, put its name in companies.
  • Use it as a LinkedIn profile finder when you know the job title but not the person.
  • Download the results as a LinkedIn contact list for your outreach tool, or as a LinkedIn profile export in CSV or Excel.
  • Set a maximum cost per run in Apify when you use maxItems 0, so a large search stops at a budget you chose.
  • Schedule the Actor to refresh a prospect list on a regular basis, and use a webhook to send each finished run to your own tools.

Integrations and API

Can I use LinkedIn People Search Scraper as an API?

Yes. Start runs and read results with the Apify API or the apify-client packages for Node.js and Python. The API tab shows ready-made calls for this Actor.

How to scrape LinkedIn people with Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("data_minds/linkedin-people-search-scraper").call(
run_input={
"urls": ["Head of Marketing"],
"locations": ["London"],
"proxyConfiguration": {"useApifyProxy": True},
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["fullName"], item["currentCompany"])

Can I integrate LinkedIn People Search Scraper with other apps?

Yes. Connect it to Make, Zapier, Google Sheets or Slack, call a webhook when a run finishes, or schedule runs to keep a list fresh.

Can I use LinkedIn People Search Scraper with AI agents (MCP)?

Yes. Connect AI agents through the Apify MCP server using the MCP tab. Each profile is a JSON row with named fields, which is easy for an agent to read.

Other LinkedIn scrapers

ActorWhat it does
📢 LinkedIn Ads Library ScraperTurns the public LinkedIn Ad Library into a dataset for competitor ad research.
💼 LinkedIn Job ScraperTurns public LinkedIn job listings into a clean dataset with salary, company and description.
🎯 LinkedIn Ads ScraperScrapes the LinkedIn Ad Library by keyword, company, advertiser or payer, with ad text, media and targeting.
📝 LinkedIn Post ScraperScrapes public LinkedIn posts with text, author, media, engagement and comments as structured JSON.
🔁 Post Reshares & Reposts Scraper for LinkedIn (No Cookies)Scrapes public LinkedIn posts from links or IDs, with reactions, comments, media and reposted originals.

FAQ

Profile data can include personal data, so legality depends on your country, your purpose and how you store and use the data. Collect only what you need, respect GDPR, CCPA and anti-spam rules, and read the site's terms. This is not legal advice; see Is web scraping legal? for background.

How does LinkedIn People Search Scraper work?

You give it job titles, skills or search links, plus optional locations and companies. It returns one dataset row per public profile that matches, with the fields listed above. Basic returns quick profile data, and Full adds work history, education and career metrics when they are available.

Why scrape LinkedIn profiles?

Teams use public profile data for lead generation, recruiting, sales prospecting and CRM enrichment. A list of people by job title, seniority and company shows who to contact or hire. Market researchers also use it to see who holds a role in a region and how long they stay.

Why did I get fewer profiles than expected?

Fewer profiles usually mean fewer public matches for your keywords, or your location and company filters removed the rest. Try broader keywords, fewer filters or a higher maxItems. Remember that the limit applies to each entry in urls, and 0 asks for as many profiles as can be found.

Why are some rows marked search-only?

A search-only row holds the quick profile data without work history or education. It is the normal result for basic. With full, it means LinkedIn limited extra details for a while. Nothing is invented, so you can run the same search later to fill the gaps.

Can I get email addresses or phone numbers from LinkedIn profiles?

No. Email addresses and phone numbers are not part of a public profile, so the Actor does not return them. You get public fields such as the name, headline, current company, location, work history and education, which you can use to find the right person to contact elsewhere.

Do I need a LinkedIn account or cookies?

No. The Actor needs no LinkedIn login and no cookies, so there is no personal account to connect or put at risk. You only need an Apify account to start a run and download the results, and nothing you do here touches your own LinkedIn profile.

LinkedIn People Search Scraper not working?

Open the Issues tab on the Actor page and describe the search you ran, including the urls, filters and details setting. Check the detailsStatus and stopReason values first, since they often explain missing details. Add a link to the run so the team can reproduce the problem.

Support and feedback

Found a bug or need a field added? Open a ticket in the Issues tab. For custom solutions, write to hello.dataminds@gmail.com.

Built and maintained by the data_minds team on Apify.

This Actor is an independent tool, is not affiliated with or endorsed by LinkedIn, and collects only publicly available data. You are responsible for using the data in line with the law and the site's terms.