How Reply.io Pulls 240,000+ Sales Navigator Leads Past the 2,500 Cap

Sasha Bouloudnine●
22 Sept 2026

●
7 min read

Reply.io sells sales automation for a living. Their AI SDR writes the outreach, their database holds over a billion contacts β€” and when their team needs fresh leads from LinkedIn Sales Navigator, they hit the same wall as everyone else.

2,500 results per search. Aggressive rate limits. No export button.

Here's how they built around it β€” 240,595 leads later.

A sales platform that buys its collection layer

Reply.io is an AI-first sales engagement platform: multichannel sequences, a unified inbox, a B2B contact database, and Jason, an AI SDR that prospects and books meetings on its own.
Over 3,000 companies and 30,000 users run their outbound on it.
Reply.io homepage β€” Supercharge your sales team with AI: multichannel sequences, AI agents, and MCP outbound

Which raises a fair question: a platform that already owns a billion-contact database β€” why would it scrape anything?

Because a static database and a live Sales Navigator search answer different questions. The database gives you reach. A fresh search gives you who matches this exact segment, today β€” current title, current company, current headcount.

For that, their ops team runs a dedicated lobstr.io workspace β€” three team members share it, customers since January 2026.

blog-not-found
We already run our own enrichment and sequencing. What we needed was a collection layer for Sales Navigator that keeps up with our volume.
blog-not-found
Anatol Kisil,VP of Product, Reply.io
One workspace, five active Sales Navigator Leads Scraper squids, two synced accounts. And one very specific wall to get past.

Sales Navigator's 2,500-result wall

Sales Navigator is the best B2B filter engine on the market. It is also deliberately hard to get data out of.

Three limits stack up:

  1. Every search displays at most 2,500 results (100 pages of 25), whatever the real match count;
  2. There is no export button β€” LinkedIn wants you reading profiles, not building files;
  3. Pull too fast and LinkedIn answers with "too many requests" β€” then your account cools down for hours. The full list of thresholds is in our LinkedIn limits guide.

Reply.io's segments are exactly the painful kind. Their searches routinely match 3,000 to 9,000+ leads β€” the team once loaded a single task covering about 9,000 of them.

Do the math on that 9,000-lead segment. Past the display cap, 6,500 matches β€” 72% of the segment β€” are simply unreachable. You cannot even scroll to them.

Sales Navigator search matching 66K+ results, but pagination stops at page 100 and the Next button goes dead β€” the 2,500-result display wall

Copy-pasting the visible rest is not a job anyone wants. And scraping it naively creates a subtler cost: recurring searches keep re-collecting the same leads, so you pay every month for profiles you already own.

(And yes, collecting public professional data this way is legal β€” the hiQ precedent settled the core of it.)

So the problem is really three problems: the cap, the blocks, the duplicates. Their configuration solves all three.

Split, dedup, rotate

Reply.io runs the Sales Navigator Leads Scraper in the lobstr.io cloud, fed by Sales Navigator search URLs.
Sales Navigator Leads Scraper on the lobstr.io store β€” extract emails and phones from LinkedIn Sales Navigator at scale

Two toggles in the advanced settings do the heavy lifting.

Skip Collected Leads (1) beats the duplicates. The scraper remembers every lead already in their collection, and stops paging a search when it is only re-finding them.

Split Search (2) beats the 2,500 cap. Instead of paging one big search into the wall, the scraper slices it into narrower sub-searches β€” tighter headcount bands, smaller geographies β€” each landing under the cap. Then it merges the results back into one list.

lobstr.io advanced settings with the two toggles annotated: (1) Skip Collected Leads and (2) Split Search (beat the 2,500 cap), both enabled
blog-not-found
With Skip Collected Leads, we stopped paying twice for the same lead β€” the scraper already knows what we have.
blog-not-found
Anatol Kisil,VP of Product, Reply.io

When the team wants tighter control, they add a third dial: a cap on unique results per run. During one August batch they set it to 500 leads per run β€” small enough to check quality between launches, instead of discovering a problem 9,000 rows deep.

This is their squid #7 processing a real search, on September 21:

Live run log of Reply.io's Sales Navigator Leads Scraper squid, key lines highlighted: search split into 10 sub-searches to reach beyond the 2,500 cap, 3,211 results found, early stop on already-collected pages (search parameters redacted)

Read the log top to bottom and you see the first two problems dying in order. "Splitting search into 10 sub-searches to reach beyond the 2,500 cap." Then: "3211 results found" β€” a count no manual export can even display.

And at the end: "This search is almost entirely already collected; stopping early instead of re-fetching duplicate pages." That's the third problem β€” duplicates β€” dying too.

The blocks? Two synced Sales Navigator accounts spread the load. When LinkedIn does throw a cooldown, the run pauses itself, uploads what it has, and relaunches at the scheduled retry β€” no babysitting.

Two Sales Navigator accounts synced on the squid β€” one currently active, one synchronized and ready to rotate (account emails redacted)

One more detail, easy to miss in the run parameters: every enrichment function is switched off. No email finding, no profile deep-dive.

Squid basic settings: Email Enrichment, Mobile Enrichment and Get Profile Details toggles all switched off

Reply.io has its own enrichment stack β€” what they need from us is the collection layer, raw and fast. The scraper does one job and stays out of the way.

The deliverable: deduplicated leads, one API call away

What lands on Reply.io's side is deliberately boring: structured rows.

One row per lead β€” name, position, company, LinkedIn profile URL. Already deduplicated against everything the workspace collected before, ready for their own enrichment and sequences.

And they don't click a download button for it. The team plugs their agent straight into the API β€” one call to /results, JSON back:
curl -H "Authorization: Token $LOBSTR_API_KEY" \ "https://api.lobstr.io/v1/results?squid=SQUID_HASH&page=1" { "total_results": 3196, "page": 1, "data": [{ "full_name": "Edouard Tabet", "position": "Co-founder", "company_name": "Eliot (Acquired by Airbnb)", "location": "Mountain View, California, United States", "degree": "3rd", "connections": 1198, "email": null, ... }] }
f
That "email": null is not a bug β€” it is their config. Collection here, enrichment in their own stack. Then their machine takes over.
blog-not-found
We launch the searches and download the files. The caps, the blocks, the retries β€” that's not our problem anymore.
blog-not-found
Anatol Kisil,VP of Product, Reply.io

240,595 leads in four months

I pulled the numbers from our production ledger β€” every run, every result, timestamped.

Between May 14 and September 21, 2026, Reply.io's workspace completed 65 runs and collected 240,595 Sales Navigator leads β€” roughly three runs a week, every week. Their biggest single run: 19,818 leads, in one go, from one search URL.

Cumulative chart: 240,595 Sales Navigator leads collected by Reply.io on lobstr.io between May 14 and September 21, 2026, across 65 runs

The curve flattens on purpose. By September, most of what their recurring searches return is already in their collection β€” so Skip Collected Leads stops the runs early, and they stop paying for leads they already own.

September's 12,153 leads came from 26 runs β€” more runs, fewer new leads. That is the dedup working: on mature segments, each run now skims only what changed since the last one.

Downstream, the leads flow into Reply.io's own machine β€” their enrichment, their sequences, their AI SDR. lobstr.io feeds the top of a funnel the rest of their product owns, the same pattern our Conscious Futures story shows on Instagram data.
Pipeline diagram: Sales Navigator searches flow into lobstr.io (split, dedup, rotate), out as deduplicated CSV/JSON, into Reply.io's stack (enrichment, sequences, AI SDR)

Scale that hardened the product

Case studies usually hide the support tickets. This one is better with them.

In late August, Reply.io's volume surfaced a real edge case: searches that mostly returned already-collected leads kept paging anyway β€” burning requests and triggering LinkedIn cooldowns. Their team reported it on August 26.

We identified the cause within two days and shipped the fix the week after: runs now stop early the moment a search is only re-finding known leads. A second hardening followed on September 8 β€” safer multi-thread behavior, and no re-visiting of already-visited leads within the same run.

Support thread: the September 7 report with squid IDs, and the September 8 fix announcement β€” hardened multi-thread behavior, no re-visiting of already-visited leads (customer side redacted)

That "stopping early" line in the run log above? That is the fix, live, doing its job three weeks later.

This is what a data vendor is actually for: customers like Reply.io push the scraper to volumes that expose the edges, and every fix ships to everyone. Their 240,595 leads made the product tougher for the next team's 240,595.

Want the same pipeline β€” Sales Navigator searches in, deduplicated CSVs out? It takes about five minutes to set up, and the step-by-step guide covers the rest. More customer stories live on our success stories page.

Related Articles

Related Squids