LinkedIn People Search Scraper — 35+ Filters, Free Counts avatar

LinkedIn People Search Scraper — 35+ Filters, Free Counts

Pricing

from $0.76 / 1,000 person delivereds

Go to Apify Store
LinkedIn People Search Scraper — 35+ Filters, Free Counts

LinkedIn People Search Scraper — 35+ Filters, Free Counts

LinkedIn people search by title, seniority, employer, company size, industry, past employer, tenure, city: 35+ filters, no login. Free counts and market breakdowns before you buy, then $0.95 per 1,000 people, about 4× below the most used people search. Full profiles $3.20, with emails & phones $8.

Pricing

from $0.76 / 1,000 person delivereds

Rating

5.0

(3)

Developer

B2B Enrich Search

B2B Enrich Search

Maintained by Community

Actor stats

0

Bookmarked

240

Total users

20

Monthly active users

2 days ago

Last modified

Share

$0.95 per 1,000 people. You pay per person delivered, never per search page. Counts and market breakdowns carry no per-row charge, and repeats and skipped people are never billed.

Search a database of over 800 million professional profiles with 35+ filters: title, seniority, employer, employer size, industry and HQ country, past employer and when they left, career length, tenure, city, languages. Before you buy a row, ask how many people match and what the segment looks like (countries, seniority, employer size, industries, top titles, top employers). That part has no per-row charge: a run pays only the platform's start fee.

This is a database lookup, not a live scrape. A run takes seconds, needs no login or cookies, has no 2,500-row cap, and stamps every row with its freshness.

Three modes

modeWhat you getPrice
people (default)the people, one row each$0.95 per 1,000 rows · $3.20 with the full profile · $8 with emails & phones
counthow many people match, one row per segmentno per-row charge
marketthe segment's shape: countries, seniority, employer size and industry, career start year, top job titles and employers, personal-email ceilingno per-row charge

Typical flow: run market to see who is there, change one filter, count again, then switch to people and buy exactly the rows you need.

What people use it for

Each recipe is a complete input you can paste. The numbers come from runs on 4 October 2026.

1. Size a talent or sales market before you commit

How many data engineers are there in five European countries, and who employs them?

{
"mode": "market",
"countries": ["gb", "de", "es", "nl", "pl"],
"titleKeywords": ["data engineer"]
}

55,157 people: UK 38%, Germany 19%, Spain 17%, the Netherlands 16%, Poland 10%. 30% work at companies with 1,001–10,000 employees and another 31% at companies above that. 29% work in IT services. At most 15,790 (29%) have a personal email on record. Cost: the run's start fee, nothing per row.

2. Compare segments side by side

Up to 10 segments in one run. Each one is the input above with a few fields changed:

{
"mode": "count",
"titleKeywords": ["data engineer"],
"segments": [
{ "name": "Germany", "countries": ["de"] },
{ "name": "Poland", "countries": ["pl"] }
]
}

Germany 10,275, Poland 5,504. Use the same pattern for "seniors vs juniors", "fintech vs banking", or "left in 2024 vs 2025". market takes segments too.

3. Hire from a competitor, or follow an ex-customer's champions

People who left a company, where they work now, and when they left:

{
"countries": ["us"],
"pastEmployerDomains": ["stripe.com"],
"leftPastEmployerAfterYear": 2022,
"maxResults": 500
}

6,199 people in the US left Stripe in 2022 or later. People still at the company are left out: an internal promotion also closes a position, and about a third of raw matches are people who never left. Set stillThereCounts to keep them. A brand domain resolves to the real employer, so meta.com finds 78,337 former Meta people in the US, not the 114 at a small page that shares the domain.

4. Account-based lists: a few people per company, minus your customers

{
"countries": ["de", "at", "ch"],
"titleKeywords": ["head of marketing", "cmo"],
"employeeCountMin": 50,
"employeeCountMax": 1000,
"maxPerCompany": 2,
"excludeCompanyDomains": ["your-customer-1.com", "your-customer-2.com"]
}

At most two people per employer across the whole run. People over the limit are skipped and not charged.

5. Short titles without the noise

The substring "cto" also matches "director" and "doctor". Switch titleMatch to word for short titles:

Poland, title "cto"People
titleMatch: substring89,024
titleMatch: word3,049

6. A weekly feed of new people only

Run the same search every week and pick the earlier datasets in excludeDatasets. Everyone you already have is left out at the source, and anyone who slips through is skipped and never charged twice. Schedule it in Apify, and each run delivers only people who are new to the segment.

7. Recruiting: tenure, career length, between jobs

{
"countries": ["pl"],
"titleKeywords": ["engineering manager"],
"employerHqCountries": ["us"],
"currentRoleStartedBeforeYear": 2022,
"careerStartYearMax": 2014
}

Engineering managers in Poland who work for US-headquartered companies, have been in the role since 2022 or earlier, and started their career by 2014. Use onlyBetweenJobs for people with no current position, and currentRoleStartedAfterDate for recent job changers.

8. A reproducible research sample

"sampleSeed": 7 returns one page of up to 100 people spread across the whole segment, not just the first rows. The same seed always returns the same people.

Input

Fill only what you need. A people run needs at least one filter that says who (title, headline, employer, past employer, industry or city): a country alone matches millions. count and market accept any filters.

Where

  • countries: up to 60 two-letter codes. countryGroups: eu, eea, dach, nordics, baltics, benelux, cee, cis, post_soviet, mena, gcc, latam. excludeCountries removes countries from those lists. Several countries (or a group) share the order evenly, one leg per country in the order given; a country that runs short hands its share to the others, so a dach run is not all Austria.
  • localityKeywords: city or region text (san francisco, greater london).

Who

  • titleKeywords with titleMatch (substring or word).
  • headlineKeywords, plus headlineAlsoKeywords when the headline must match a word from each list ("head of" or "director", AND "data").
  • seniority: cxo, vp, director, manager, founder, other. The bucket comes from the title, so "CTO", "Chief Technology Officer" and "Head of Technology" all count as cxo.
  • excludeTitleKeywords, excludeHeadlineKeywords, pastTitleKeywords.
  • languages: two-letter codes. The language data is still being built; until it is ready, a run with this field stops with a note and charges nothing.

Employer

  • companyDomains (currently there) and excludeCompanyDomains (not there), up to 1,000 each.
  • employerIndustries: industry names in either wording, any letter case, or taxonomy ids (a sector id covers everything under it). The valueId column of a market breakdown gives the ids.
  • employeeCountMin / employeeCountMax. About half the companies on file have no headcount; set includeUnknownEmployerSize to keep them.
  • employerHqCountries: where the employer is headquartered, wherever the person lives.

Career

  • pastEmployerDomains or pastEmployerCountries, with leftPastEmployerAfterYear / leftPastEmployerBeforeYear and stillThereCounts.
  • careerStartYearMin / careerStartYearMax: years since the first recorded position.
  • currentRoleStartedAfterYear, currentRoleStartedBeforeYear (tenure), currentRoleStartedAfterDate (YYYY-MM).
  • requireCurrentPosition or onlyBetweenJobs; connectionsMin / connectionsMax; activeAfter; updatedAfter (record refreshed on or after a date — the stamp behind _freshness and updatedAt); excludeLowSignal.

Run control

  • mode, maxResults (default 500, up to 50,000; 10,000 on the profile tiers), profileDetail, mustHave, compact.
  • segments and marketTopN for count and market runs.
  • maxPerCompany, excludeDatasets, excludePersonIds, sampleSeed.

profileDetail and mustHave

  • row ($0.95 per 1,000): name, headline, location, the current role and employer card, email flags.
  • profile ($3.20 per 1,000): adds the whole career profile.
  • contacts ($8 per 1,000 people with a working contact): adds emails, phones and social links. A person with no contact that reaches them today ships at the $3.20 profile price. In our measurement on 30 September 2026, the contacts price applied to 53% of people in the US, 42% in India, 40% in France, 33% in the UK and 32% in Germany.

mustHave lists what a person must have to be delivered: email, personalEmail, workEmail, currentWorkEmail, phone, github, twitter, facebook. People without it are skipped for free, and one skipped_must_have row says how many. The three email flags work on every tier; the rest need contacts. personalEmail also narrows the count.

Every row carries profileUrl, so a list from this Actor goes straight into our lookups. Buy only the contacts you need, and only for the people you keep:

You needActorPrice (misses are free)
Every phone on record, plus name, title and company (US)LinkedIn to Phone$12 per 1,000 found
Email addresses on recordLinkedIn Email Finder$8 per 1,000 at the current employer, $3 for older addresses
The full profile with every contact and social linkProfile Lookup$8 per 1,000
X, GitHub or Facebook handles you already haveSocial Handle Lookup$3.20 per 1,000 found, $8 with contacts

Or stay in this Actor with profileDetail: contacts: $8 per 1,000 people who have a working contact, and the profile price for everyone else.

Only need an email per person? B2B Leads Finder takes the same filters and returns flat lead rows — name, title, company and a work email at the current company or a personal one — from $1.50 per 1,000 leads. People without such an email are skipped free.

What you get

GroupFields
Identityfull name, headline, profileUrl, slug, personId
Current role (flat columns)jobTitle, companyName, companyDomain, companyIndustry, companyEmployeeCount — the position your filters matched (title, seniority, size and start year hold for that one job)
Other current role (profile tiers)primaryTitle, primaryCompany when the profile lists another job first; _employerUnconfirmed: true when the profile no longer lists the matched employer
All current positionstitle, seniority, start year, and a live employer card for each (domain, country, headcount, industry, funding, founding year)
Locationcity, countryCode
Email flagshasPersonalEmail, hasWorkEmail
SignallowSignal, connection count, first position year
Richer tiersthe career profile, plus email, emailType, workEmails, personalEmails, phone, phones
Freshness_freshness bucket and the exact updatedAt
Market rowssegment, dimension, value, count, share, countedBy, valueId

A market run writes one row per bucket. Excerpt from recipe 1:

dimensionvaluecountshare
totalpeople matching55,157100
contactpersonal email on record (at most)15,79028.63
countrygb21,18038.4
employer size1001-1000016,83730.53
employer industryIT Services and IT Consulting16,01229.03

The Output tab has three views: Overview, Current positions and Market breakdown.

Pricing

EventPriceWhen
Person delivered$0.00095one distinct person, search row
Person delivered (full profile)$0.0032profile, or contacts without a working contact
Person delivered (profile + contacts)$0.008contacts, with a contact that reaches the person today
Counts, market breakdowns, repeats, skipped people$0 per rowalways; a run pays only the platform start fee

Prices above are for Apify's Free and Starter plans. Scale plans pay 10% less and Business plans and up 20% less, applied by Apify automatically; the Store page quotes the lowest of these as "from".

The data keeps historical snapshots of a person under separate ids (26% of the rows in one full segment we measured). The Actor remembers who it has delivered, so a repeat never reaches your dataset or your bill.

Honest limits

  • It is a snapshot, not a live scrape. Every row says how fresh it is. Job start dates are dense through 2025 and thin for the last few months, so look for job changers over a year, not a week.
  • Titles match as text. Substring matching is wide and word matching is exact. A market breakdown can only use substring matching; with titleMatch: word it adds a whole-word total on its own row.
  • Market shares of seniority, employer size, industry, title and employer count current positions, so someone with two jobs counts twice and those shares can add up past 100%. Top titles and top employers are close approximations.
  • "Personal email on record" is a ceiling, not a promise of delivery.

With AI agents and MCP

Add it to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server:

https://mcp.apify.com?tools=b2bsearch/people-database-search

Use this Actor when the task is "find people who…", "how many … are there in …", "where do … work", "compare … across countries", or "people who left …". Do not use it to look up one known person (use Profile Lookup) or to get emails for a list of profile URLs you already have (use LinkedIn Email Finder).

Rules that keep an agent's bill small:

  1. Start with "mode": "count" or "mode": "market". Neither charges per row.
  2. Set maxResults to what the user asked for. You pay per row.
  3. Use "compact": true for rows that go into a context window. Same price, about 2 KB per person.
  4. Short titles (cto, cfo, vp) need "titleMatch": "word".
  5. Every row has a _status. A row that is not a person says why in _note or _error.

From request to input:

The user saysInput
"How many fintech CFOs are there in the UK?"{"mode":"count","countries":["gb"],"titleKeywords":["cfo"],"titleMatch":"word","employerIndustries":["Financial Services"]}
"Where do Rust engineers in Europe work?"{"mode":"market","countryGroups":["eu"],"headlineKeywords":["rust"]}
"25 ex-Google product managers in Berlin"{"countries":["de"],"localityKeywords":["berlin"],"titleKeywords":["product manager"],"pastEmployerDomains":["google.com"],"maxResults":25,"compact":true}

Input an agent can send as is:

{
"mode": "people",
"countries": ["nl"],
"titleKeywords": ["founder"],
"maxResults": 25,
"profileDetail": "row",
"compact": true
}

It also works as a tool in LangChain, CrewAI and the OpenAI Agents SDK, and as a step in n8n, Make and Zapier through the Apify integrations.

FAQ

How do I get emails? Set profileDetail to contacts, or add mustHave: ["personalEmail"] to keep only people with a personal mailbox on record at the row price.

Why was my run refused? A people run with only a country (or a country and a seniority bucket) matches millions. Add a title, headline, employer, past employer, industry or city, or run count first.

Can I see the breakdown for more than five countries? Yes. Facets are counted five countries at a time and the Actor adds them up for you.

Who reads the reviews and issues? The people who build it, and they are what we fix first.

Which actor in this family?

One database behind ten listings. Misses are free on every one of them.

ActorInput → output
Profile Lookupprofile URL → full career profile
Reverse Email Lookupemail → person, profile URL and employer
Name to Profilename + company domain → profile
Social Handle LookupGitHub, X/Twitter or Facebook handle → profile
Bulk People EnrichmentCSV of emails, URLs, handles or names → profiles
LinkedIn Email Finderprofile URL → email addresses on record
Work Email Findername + company domain → work email candidates
Company Employeescompany domain → current staff
People Database Search (this one)filters → people, counts and market breakdowns
B2B Leads Finderfilters → leads with a work or personal email, from $1.50/1k
Company Database Searchfilters → companies

Free Apify plan

On a free Apify plan a run you start in Apify Console delivers the first 100 results; a run started through the API, a schedule or an integration delivers the first 25. The run's status line says so, and any paid Apify plan lifts the cap. The rows are the same rows a paid run returns.

Feedback and reviews

How did it go? A rating in the Reviews tab of this Actor tells the next buyer what to expect; we read every word, good or bad. Got a wrong or stale row? Open the Issues tab with the run ID. Issues are public, so leave out emails, phones and names; the run ID is enough for us to find the row. We check every report, fix what is ours to fix and answer in the thread.

Disclaimer

This Actor is an independent product. It is not affiliated with, endorsed by or sponsored by LinkedIn. It does not access, crawl or scrape any of them at run time: answers come from our own database of publicly available professional data, and the network names only describe the kind of data it covers. To have a person's data removed, open an issue on this Actor with only the profile link — nothing else is needed, and it is removed from every listing.