LinkedIn People Search Scraper — 35+ Filters, Free Counts
Pricing
from $0.76 / 1,000 person delivereds
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
Maintained by CommunityActor stats
0
Bookmarked
240
Total users
20
Monthly active users
2 days ago
Last modified
Categories
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
mode | What you get | Price |
|---|---|---|
people (default) | the people, one row each | $0.95 per 1,000 rows · $3.20 with the full profile · $8 with emails & phones |
count | how many people match, one row per segment | no per-row charge |
market | the segment's shape: countries, seniority, employer size and industry, career start year, top job titles and employers, personal-email ceiling | no 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: substring | 89,024 |
titleMatch: word | 3,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.excludeCountriesremoves 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 adachrun is not all Austria.localityKeywords: city or region text (san francisco, greater london).
Who
titleKeywordswithtitleMatch(substringorword).headlineKeywords, plusheadlineAlsoKeywordswhen 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) andexcludeCompanyDomains(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). ThevalueIdcolumn of a market breakdown gives the ids.employeeCountMin/employeeCountMax. About half the companies on file have no headcount; setincludeUnknownEmployerSizeto keep them.employerHqCountries: where the employer is headquartered, wherever the person lives.
Career
pastEmployerDomainsorpastEmployerCountries, withleftPastEmployerAfterYear/leftPastEmployerBeforeYearandstillThereCounts.careerStartYearMin/careerStartYearMax: years since the first recorded position.currentRoleStartedAfterYear,currentRoleStartedBeforeYear(tenure),currentRoleStartedAfterDate(YYYY-MM).requireCurrentPositionoronlyBetweenJobs;connectionsMin/connectionsMax;activeAfter;updatedAfter(record refreshed on or after a date — the stamp behind_freshnessandupdatedAt);excludeLowSignal.
Run control
mode,maxResults(default 500, up to 50,000; 10,000 on the profile tiers),profileDetail,mustHave,compact.segmentsandmarketTopNfor 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.
Phones, emails and social links for the people you found
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 need | Actor | Price (misses are free) |
|---|---|---|
| Every phone on record, plus name, title and company (US) | LinkedIn to Phone | $12 per 1,000 found |
| Email addresses on record | LinkedIn Email Finder | $8 per 1,000 at the current employer, $3 for older addresses |
| The full profile with every contact and social link | Profile Lookup | $8 per 1,000 |
| X, GitHub or Facebook handles you already have | Social 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
| Group | Fields |
|---|---|
| Identity | full 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 positions | title, seniority, start year, and a live employer card for each (domain, country, headcount, industry, funding, founding year) |
| Location | city, countryCode |
| Email flags | hasPersonalEmail, hasWorkEmail |
| Signal | lowSignal, connection count, first position year |
| Richer tiers | the career profile, plus email, emailType, workEmails, personalEmails, phone, phones |
| Freshness | _freshness bucket and the exact updatedAt |
| Market rows | segment, dimension, value, count, share, countedBy, valueId |
A market run writes one row per bucket. Excerpt from recipe 1:
| dimension | value | count | share |
|---|---|---|---|
| total | people matching | 55,157 | 100 |
| contact | personal email on record (at most) | 15,790 | 28.63 |
| country | gb | 21,180 | 38.4 |
| employer size | 1001-10000 | 16,837 | 30.53 |
| employer industry | IT Services and IT Consulting | 16,012 | 29.03 |
The Output tab has three views: Overview, Current positions and Market breakdown.
Pricing
| Event | Price | When |
|---|---|---|
| Person delivered | $0.00095 | one distinct person, search row |
| Person delivered (full profile) | $0.0032 | profile, or contacts without a working contact |
| Person delivered (profile + contacts) | $0.008 | contacts, with a contact that reaches the person today |
| Counts, market breakdowns, repeats, skipped people | $0 per row | always; 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: wordit 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:
- Start with
"mode": "count"or"mode": "market". Neither charges per row. - Set
maxResultsto what the user asked for. You pay per row. - Use
"compact": truefor rows that go into a context window. Same price, about 2 KB per person. - Short titles (cto, cfo, vp) need
"titleMatch": "word". - Every row has a
_status. A row that is not a person says why in_noteor_error.
From request to input:
| The user says | Input |
|---|---|
| "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.
| Actor | Input → output |
|---|---|
| Profile Lookup | profile URL → full career profile |
| Reverse Email Lookup | email → person, profile URL and employer |
| Name to Profile | name + company domain → profile |
| Social Handle Lookup | GitHub, X/Twitter or Facebook handle → profile |
| Bulk People Enrichment | CSV of emails, URLs, handles or names → profiles |
| LinkedIn Email Finder | profile URL → email addresses on record |
| Work Email Finder | name + company domain → work email candidates |
| Company Employees | company domain → current staff |
| People Database Search (this one) | filters → people, counts and market breakdowns |
| B2B Leads Finder | filters → leads with a work or personal email, from $1.50/1k |
| Company Database Search | filters → 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.