LinkedIn Profile Search Scraper - Find People, No Login avatar

LinkedIn Profile Search Scraper - Find People, No Login

Pricing

from $0.50 / 1,000 profile founds

Go to Apify Store
LinkedIn Profile Search Scraper - Find People, No Login

LinkedIn Profile Search Scraper - Find People, No Login

Find public LinkedIn profiles by keyword, job title, company, school or location. You get the name, headline, location, current role, company, education and profile URL. No LinkedIn account or cookie is used. The limit is 120 profiles per run. $0.50 per 1,000.

Pricing

from $0.50 / 1,000 profile founds

Rating

5.0

(2)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

178

Total users

92

Monthly active users

a day ago

Last modified

Share

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.