Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
LinkedIn Profile Search Scraper icon

LinkedIn Profile Search Scraper

Find public LinkedIn profiles by keyword, title, company, school or location: name, headline, role, profile URL. No login. $0.50 per 1,000.

5 from 2 reviews on Apify 6,442 runs on Apify $0.0005 per profile found ($0.5 / 1,000)
Run this in the cloudRun on Apify →

Social Media Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchQuery, locations, currentJobTitles (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0005 per profile found = $0.5 per 1,000

You are charged forWhenPrice
Profile foundOne matching public LinkedIn profile saved to the dataset - name, headline, location, current role, company, education and profile URL. Sample rows and diagnostic rows are never charged.$0.0005

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-15, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchQueryFree-text people search, e.g. "software engineer" or "head of growth fintech". Combine it with the filters below or use it on its own.string
locationsKeep profiles whose public page mentions one of these places, e.g. "San Francisco". Several values are searched as OR, and are also used to widen the search when you ask for a lot of profiles. This is a text match against the whole public page, not a geo radius.array
currentJobTitlesKeep profiles whose public page mentions one of these job titles, e.g. "Senior Software Engineer". Several values are searched as OR.array
currentCompaniesKeep profiles that mention one of these companies. A company name or a full LinkedIn company URL both work.array
schoolsKeep profiles that mention one of these schools or universities, e.g. "Stanford University".array
maxItemsHow many profiles to return in total. Maximum 120, the box stops there because 120 is the figure that has actually been delivered in full on the cloud (measured 2026-08-17: "marketing manager" + London, 120 requested -> 120 distinct profiles in 18 seconds). A narrow or unusual search returns everything the public index holds for it and then stops early, you are charged per profile actually delivered, never for the number you asked for, so asking for 120 and getting 40 costs you 40.integer

What you get

A structured dataset — each result includes fields like:

recordTypefullNameheadlinelocationcurrentPositioncurrentCompanyprofileUrlpublicIdentifierfirstNamelastNameeducationconnectionssnippetsearchQueryfoundVia

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

2 ready-to-run use cases

LinkedIn Alumni Search by School and Job Title

Find alumni on LinkedIn without logging in. Pair a university with a job title and get names, headlines, current employers and public profile URLs.

LinkedIn Search by Job Title and Location, No Login

Search LinkedIn people by job title and city without an account or cookies. Returns name, headline, location, current role, company and the profile URL.

Ready-made automation using this tool

A finished workflow you can import into n8n and run — this tool does the data-gathering inside it. Free, and yours to change.

Turn a LinkedIn search into a scored lead list

Runs the LinkedIn people search you describe, then reads each profile and scores how well it fits what you sell, with a first line you could actually send. The scores and the reasoning land in a Google Sheet.

All automations →

Related tools in Social Media Scrapers

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

YouTube Shorts Scraper iconSocial Media Scrapers

YouTube Shorts Scraper

Scrape YouTube Shorts by channel or keyword. Titles, ids, URLs, exact views and likes, publish dates, thumbnails. No API key. $0.40/1k.

Ready to run — no setup

TikTok Scraper - Profiles, Videos, Hashtags & Search iconSocial Media Scrapers

TikTok Scraper - Profiles, Videos, Hashtags & Search

Scrape TikTok profiles, videos, hashtags and search. Play, like, comment and share counts. No login needed from you. $0.25 per 1,000.

5 use cases

Instagram Scraper - Profiles, Posts & Reels (No Login) iconSocial Media Scrapers

Instagram Scraper - Profiles, Posts & Reels (No Login)

Scrape Instagram profiles, posts and reels as JSON: followers, caption, likes, comments, media URLs. No login or API key. $0.45 per 1,000 items.

8 use cases

Tweet Scraper iconSocial Media Scrapers

Tweet Scraper

Scrape X (Twitter) tweets by handle or URL, no API key. Rows carry text, likes, retweets, views and author. Search needs your X cookie.

7 use cases

Twitter (X) User Scraper - Profiles & Followers, No Login iconSocial Media Scrapers

Twitter (X) User Scraper - Profiles & Followers, No Login

Scrape X (Twitter) profiles: followers, following, post count, name, bio and verification. No API key, no login. $0.14 per 1,000 profiles.

2 use cases

TikTok User Scraper - Profiles, Followers & Stats (No Login) iconSocial Media Scrapers

TikTok User Scraper - Profiles, Followers & Stats (No Login)

Scrape TikTok profiles without a login. Get follower, following, likes and video counts, bio, verified flag and avatar. $0.35 per 1,000 profiles.

1 use cases

See all Social Media Scrapers →

LinkedIn Profile Search Scraper: find people by title, company or school, no login

Type a job title, a skill or a name, narrow it with a city or a company if you want, and get public LinkedIn profiles back as rows. Full name, headline, location, current role, current company, education, connection count and the profile URL.

No LinkedIn account and no session cookie are involved, so there is nothing for you to paste in and nothing that quietly expires a week later. The trade is that a profile which opted out of public visibility never appears at all.

InputA search query, filters, or both
OutputOne row per public profile
Ceiling120 profiles per run
Account neededNone
Price$0.50 per 1,000 profiles, flat on every plan

🔍 What LinkedIn Profile Search Scraper does

LinkedIn's own people search sits behind the login wall. You cannot open linkedin.com/search/results/people/ signed out, and you cannot script it without an account.

Profile pages are a different matter. LinkedIn publishes every /in/<name> page to the open web so search engines can index it, with the name and headline in the page title and a description spelling out experience, education and location. That published version is what this reads. Your keywords and filters become a search over those public pages, and each match becomes a row.

Nothing here ever requests linkedin.com, so there is no account of yours at risk.

📥 What you give it

Everything is optional. Give it a searchQuery, or filters, or both.

{
  "searchQuery": "software engineer",
  "locations": ["San Francisco"],
  "currentCompanies": ["Stripe"],
  "maxItems": 50
}
FieldDefaultWhat it is
searchQuerynoneFree text. "software engineer", "head of growth fintech", "Sarah Chen". Up to 300 characters.
locationsnoneUp to 20. A profile is kept if its public page mentions one of them. Several values are OR'd.
currentJobTitlesnoneSame, for job titles.
currentCompaniesnoneA company name or a full LinkedIn company URL, either works.
schoolsnoneSchool or university name.
maxItems201 to 120.

Two things worth knowing about how matching works. Words of four letters or more in your searchQuery become mandatory, so every row you get back genuinely contains them. And a query made entirely of short words, "CTO" for instance, has no such guard, so add a filter to keep it tight.

A company URL is reduced to its name. If a company's URL slug is an abbreviation that does not match how people write it on their profile, you will get fewer matches. Use the name people actually type.

📤 What you get back

A real row from a recent run:

{
  "ok": true,
  "charged": true,
  "recordType": "profile",
  "profileUrl": "https://www.linkedin.com/in/brianql",
  "publicIdentifier": "brianql",
  "fullName": "Brian Le",
  "firstName": "Brian",
  "lastName": "Le",
  "headline": "Software Engineer @ Stripe",
  "location": null,
  "currentPosition": "Software Engineer",
  "currentCompany": "Stripe",
  "education": null,
  "connections": null,
  "snippet": "Software Engineer @ Stripe · I solve problems (often using software)! ...",
  "searchQuery": "site:linkedin.com/in software engineer Stripe",
  "foundVia": "secondary-index",
  "scrapedAt": "2026-09-21T01:45:12.585Z"
}

Note the three nulls. That profile's published page carries no location, education line or connection count, so those fields come back empty rather than guessed. Nothing is inferred or padded, on any row.

FieldWhat it is
publicIdentifierThe slug after /in/. Use it as your dedupe key across runs.
profileUrlCountry subdomains like uk.linkedin.com are kept, because that is where the page lives. The same person is never returned twice.
currentPosition, currentCompanySplit out of the headline on "at" or "@", or read from the published Experience line. A headline written as a keyword list is left alone, so you get null rather than a guessed employer.
connectionsA string, because LinkedIn publishes "500+" as often as a number.
snippetThe raw indexed description, so you can see what the match was based on.
lastNamenull for single-word names.

🧾 Reading the output

Three kinds of row, and only profiles cost anything.

RowHow to spot itCharged
A profilerecordType: "profile"yes
The sample row_sample: true, and it only appears when you run with empty inputno
A diagnosticrecordType: "diagnostic" and ok: falseno

Filter on recordType == "profile" and you have your people.

A diagnostic row carries a code, plus requestsMade and droppedOffTarget so you can see what the run actually did:

CodeWhat it means
NO_RESULTSThe search ran and nothing matched, or everything that matched failed your filters. droppedOffTarget tells you which. Loosen a filter.
BLOCKEDThe search could not be completed this time. Nothing is billed. Try again in a few minutes.
NOT_FOUNDNothing at all for those terms.
RATE_LIMITEDToo many searches too close together. Space them out.
TARGET_ERROR, NETWORKSomething upstream answered badly. Re-run it.

Neither a sample nor a diagnostic row fails the run.

▶️ How to run it

1. Open LinkedIn Profile Search Scraper and click Try for free. 2. Put your terms in Search query, for example head of growth fintech. 3. Add a Locations or Company filter if you want to narrow it. 4. Set Maximum number of profiles, then click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$0.50 per 1,000 profiles. Flat on every Apify plan, no volume tiers.

One charge per profile written to your dataset. Duplicates are removed before anything is billed, and sample rows and diagnostic rows are never charged. A search that comes back empty costs you nothing for results.

💡 What people use it for

  • Building a shortlist of people with a given title in a given city, then working through it by hand.
  • Finding alumni of a university who now work in a particular industry.
  • Mapping who holds a role across a set of named companies before a sales push.
  • Checking how a job title is actually worded in a market before writing a job ad for it.

🚧 What it does not do

  • No email addresses or phone numbers. They are not on the public profile page, so they are not

here. This is people search, not contact enrichment.

  • No full work history, skills, certifications or recommendations. Current role and headline as

published, not the whole CV.

  • No profile photos.
  • No connection degree, no "who viewed you", no InMail. All of that needs an account.
  • Private and unindexed profiles are invisible, and there is no keyless way around it.
  • Location is a text match, not a geo radius. "San Francisco" will not pull in Oakland, and

"Greater London Metropolitan Area" matches far less than plain "London". Use the short, common form of a place name.

  • Ordering is relevance, not recency, and you cannot control it.
  • 120 per run, and the input box stops there on purpose. An attempt at 200 came back with 169

and spent more than twice the work getting there.

  • A narrow search returns what exists and then stops. If only 40 public profiles match your

terms, you get 40 and pay for 40.

  • Going deep trades precision for volume. The first results are the closest matches. The further

down the list you go, the looser they get: your terms are genuinely on the page, but the person may not live in the city you typed. Ask for fewer and add a job-title filter when precision matters more than count.

🧭 Which LinkedIn scraper do you need?

If you wantUse
Find people by keyword, title, company or schoolThis one
Profiles when you already have the URLsLinkedIn Profiles Scraper
Everyone who works at one companyLinkedIn Company Employees Scraper
Posts matching a keywordLinkedIn Post Search Scraper
Job listingsLinkedIn Jobs Scraper
Company pagesLinkedIn Companies Scraper

❓ Questions people ask

Do I need a LinkedIn account? No, and there is no cookie field either. Nothing to paste and nothing to renew.

Will my account get restricted? Yours is never used, so there is nothing to restrict.

Why did I get fewer profiles than I asked for? Because that many exist for your terms, or because the search stopped early. Either way you pay only for rows delivered.

Can I get their email? Not from here. Public profile pages do not publish contact details.

Is scraping LinkedIn legal? This reads only pages LinkedIn publishes to the open web for search engines to index. Results still contain personal data, which GDPR and similar laws cover, so have a lawful reason for collecting it. Apify's write-up on scraping and the law is a reasonable starting point, and we are not lawyers.

Can I run several big searches back to back? Space them out. Several 120-profile runs within a few minutes of each other will start returning less.

🆘 If something breaks

Open the Issues tab on the actor page. Send the search query you used and the run ID. The diagnostic row's code and requestsMade usually say what happened on their own.