All posts
Lead Generation5 min readMay 15, 2025

How to Build a LinkedIn Lead List in 2025 (Without Getting Banned)

LinkedIn is still the highest-quality B2B lead source — but most scraping approaches get accounts flagged. Here's how to do it safely and at scale.

LinkedIn holds the most accurate professional dataset on the web, and the reason is structural: the people in it maintain their own records. Nobody updates a purchased contact database when they change jobs. Almost everybody updates LinkedIn, usually within days of starting.

That currency is why every B2B team wants LinkedIn data and why most of them go about getting it badly. The common failure is treating LinkedIn as a volume play — hammering the platform, bulk-collecting tens of thousands of profiles, and getting accounts restricted within days. The approach that actually works is narrower, slower to start, and considerably more effective.

Start with a specification, not a search

Most bad LinkedIn lists are bad before a single profile is collected, because the targeting was vague. "Marketing people at SaaS companies" is not a specification. It is a category, and it will return a list you then have to clean by hand.

A real specification names four things:

  • **Job title, precisely.** Not "marketing" but "Head of Growth", "VP Demand Generation", "Director of Revenue Marketing". Then list the titles to exclude — "assistant", "intern", "coordinator" — because seniority filters alone let plenty of noise through.
  • **Company size as headcount, not revenue.** Headcount is published consistently; revenue is not. A 50-200 band is a meaningful segment. "Mid-market" is not.
  • **Industry vertical**, narrow enough that the same message makes sense across it.
  • **Geography**, including the exclusions. If you cannot service a region, filtering it out at collection time is cheaper than filtering it out at reply time.

The instinct is to cast wide and narrow later. Resist it. Because credits are consumed per result returned, a broad filter costs more *and* produces a worse list. A tightly filtered 200 outperforms a loose 1,000 on every metric that matters, and it does not need an afternoon of cleanup.

Titles mean different things at different companies

One caveat worth internalising: a title is a self-declared string, and its meaning varies enormously with company size. A "Head of Growth" at a twelve-person startup is likely the person doing the work, holds the budget, and can decide in a week. The same title at a 5,000-person company describes a manager three layers from the budget with a six-month procurement process.

This is why title and headcount filters belong together. Filtering on title alone produces a list that looks coherent and behaves like three different audiences.

The most underused source: comments

If you take one thing from this post, take this. Most teams start from profiles. The higher-yield starting point is comments.

When someone writes a paragraph under a post about a problem you solve, they have publicly self-identified in a way that no firmographic filter can replicate. They have told you they care about the topic, roughly what they think about it, and — crucially — they have done so recently.

The two-step pattern:

  1. 1.Use **LinkedIn Posts** to search by keyword for posts about your problem space. Rank the results by comment count, because comment count is the signal that a post provoked actual discussion rather than passive scrolling.
  2. 2.Use **LinkedIn Comments** on the best of those posts to extract everyone who engaged, along with what they wrote.

Good posts to mine, roughly in order of yield:

  • Posts by industry figures your buyers follow, about the problem you solve
  • Competitor announcements — everyone commenting is, by definition, engaged with the category
  • Posts complaining about the status quo your product replaces

The comment text is the real prize. It is a written statement of that person's position, in their words, which is a far stronger opening than any job title. "I saw your comment on X's post about manual reporting" is a different conversation from "I noticed you're VP Marketing at Acme."

Output quality depends entirely on post selection. A post about your exact problem returns a list of qualified, pre-warmed prospects. A generic motivational post returns a random cross-section of LinkedIn. Check the post before you run against it.

The enrichment loop, and the order that matters

Raw contact data is rarely enough on its own. The sequence that works — and the order is the point — is:

  1. 1.**Source.** Leads Finder for firmographic targeting, or LinkedIn Comments for engagement-based targeting.
  2. 2.**Enrich.** LinkedIn Profiles fills in role, company, tenure, and history for any profile URLs you have.
  3. 3.**Score.** AI Lead Scoring ranks each contact against your saved ICP profile at two credits per row.
  4. 4.**Personalise.** Message Writer drafts an opening line for the top slice at five credits per row.

The critical detail is that scoring comes *before* the expensive steps. Scoring is the cheapest operation in the chain and typically removes half the list. Running it early means the costly personalisation step only ever touches contacts you have already decided are worth reaching. Teams that run these steps in the wrong order routinely spend three to four times more for the same number of booked meetings.

Deprioritise anything below a six. Run Message Writer on the top twenty per cent rather than the whole list — forty well-opened messages consistently outperform two hundred generic ones and cost less to produce.

Credit math, concretely

At **Scout** (1,000 credits/month), the constraint is real and worth planning around:

  • LinkedIn Profiles at 30 credits/result → roughly 33 profiles
  • LinkedIn Comments at 15 credits/result → roughly 66 commenters
  • Leads Finder at 1 credit/result → up to 1,000 contacts

Note the spread. Leads Finder is thirty times cheaper per contact than profile enrichment, which is why it is the right discovery tool and LinkedIn Profiles is the right enrichment tool. Using profile collection for discovery is the single most common way to burn a monthly balance in an afternoon.

At **Starter** (10,000 credits/month), a realistic weekly loop looks like: 200 contacts from Leads Finder (200 credits), AI scoring across all 200 (400 credits), Message Writer on the top forty (200 credits). That is 800 credits per rep per week, so a single rep can run the full loop weekly with substantial headroom for intent monitoring.

What this does not solve

Two honest limitations.

First, matching an ICP is not the same as being in-market. Someone can fit your profile perfectly and have no intention of buying anything this quarter. Firmographic targeting tells you who *could* buy; it says nothing about who is currently looking. That gap is what intent monitoring on Reddit and Twitter is for, and the two approaches complement each other rather than competing.

Second, every list has a shelf life measured in weeks. People change jobs, and a list built in January describes January. Rebuilding a filtered list costs a few hundred credits — far less than the meeting where you debate whether the old one is still accurate.

The compliance part

Collecting publicly visible profile data is broadly established as lawful in several jurisdictions, and none of this touches anything behind a login or a privacy restriction. But public availability is not the same as unrestricted use.

The obligations attach to what you do next. Contacting people is governed by the privacy and anti-spam law applicable to you and to your recipients, and in several markets that means having a documented lawful basis before the first message. That is a real requirement, not a formality, and it is worth resolving before you scale outreach rather than after.

Try this workflow on VoxScrape

Scout plan from $10/mo. Credits only charged for results returned.

Get started →