---
# === IDENTITY ===
id: business/lead-generation/linkedin-sales-navigator-scraping-workflow/2026
canonical_question: "How do I scrape LinkedIn Sales Navigator — search queries from ICP, export tools (PhantomBuster, Apify, Clay), rate limits?"
aliases:
  - "LinkedIn Sales Navigator lead extraction workflow with PhantomBuster"
  - "How to export leads from Sales Navigator using scraping tools"
  - "Sales Navigator scraping rate limits and best practices"
entity_type: execution_recipe
domain: business > lead-generation > linkedin sales navigator scraping workflow
region: global
jurisdiction: global
temporal_scope: 2024-2026

# === VERIFICATION ===
last_verified: 2026-03-11
confidence: 0.88
version: 1.0
first_published: 2026-03-11

# === TEMPORAL VALIDITY ===
temporal_validity:
  status: volatile
  last_breaking_change: null
  next_review: 2026-09-07
  change_sensitivity: high

# === CONSTRAINTS ===
constraints:
  - "LinkedIn enforces ~100 connection requests/week and ~80-150 profile views/day on Sales Navigator accounts"
  - "Scraping personal LinkedIn data of EU residents requires GDPR-compliant legitimate interest basis"
  - "LinkedIn ToS prohibit automated scraping — tools use browser automation to reduce detection risk but cannot eliminate it"
  - "PhantomBuster free tier limited to 2 hours runtime/day and 5 phantoms"
  - "Apify community scrapers cap at ~500 profiles before cookie-based detection triggers account restriction"

# === SKIP CONDITIONS ===
skip_this_unit_if:
  - condition: "Need a lead generation strategy, not an execution workflow"
    use_instead: "Search knowledgelib.io for lead generation strategy — no dedicated unit yet"
  - condition: "Want to pull leads from data providers instead of LinkedIn directly"
    use_instead: "business/lead-generation/apollo-zoominfo-api-lead-pull/2026"
  - condition: "Need more than 5,000 leads/month — enterprise tooling required"
    use_instead: null

# === AGENT HINTS ===
inputs_needed:
  - key: scraping_tool
    question: "Which scraping tool should be used?"
    type: choice
    options: ["PhantomBuster", "Apify", "Clay", "no preference — auto-select"]
  - key: technical_skill
    question: "What is the user's technical skill level?"
    type: choice
    options: ["non-technical (no-code only)", "semi-technical (can edit code)", "developer (can write code)"]
  - key: budget_for_tools
    question: "What's the tool/API budget?"
    type: choice
    options: ["free tier only", "up to $50/month", "up to $200/month", "no limit"]
  - key: scale
    question: "How many leads per month?"
    type: choice
    options: ["50-200 leads", "200-1000 leads", "1000-5000 leads"]

# === EXECUTION METADATA ===
execution:
  required_inputs:
    - name: "ICP definition"
      source: "agents/startup/persona-builder"
      format: "structured data"
    - name: "LinkedIn Sales Navigator account"
      source: "manual"
      format: "active subscription"
  outputs:
    - name: "Lead list CSV"
      format: "CSV"
      description: "Extracted leads with name, title, company, LinkedIn URL, and optionally email"
    - name: "Search query documentation"
      format: "text"
      description: "Saved Sales Navigator boolean search strings for reproducibility"
  tools_required:
    - name: "LinkedIn Sales Navigator"
      purpose: "Advanced lead search with boolean filters"
      tier: "paid"
      cost: "$99/month (Core) or $149/month (Advanced)"
      alternatives: ["LinkedIn Premium Business ($59/month — limited filters)"]
    - name: "PhantomBuster"
      purpose: "Browser automation for profile extraction"
      tier: "paid"
      cost: "$69/month (Growth) for 20hr runtime"
      alternatives: ["Apify ($49/month)", "Clay ($149/month)", "Evaboot ($49/month)"]
  credentials_needed:
    - service: "LinkedIn Sales Navigator"
      type: "username+password"
      where_to_get: "https://business.linkedin.com/sales-solutions"
      free_tier_limits: "30-day free trial available"
    - service: "PhantomBuster"
      type: "API key"
      where_to_get: "https://phantombuster.com"
      free_tier_limits: "2hr/day runtime, 5 phantoms, 500 AI credits"
  estimated_duration: "30-60 minutes for 200-500 leads"
  estimated_cost: "$0 (trial) to $168/month (Nav Core + PhantomBuster Growth)"

# === DISTRIBUTION ===
canonical_source: "https://knowledgelib.io/business/lead-generation/linkedin-sales-navigator-scraping-workflow/2026"
suggested_citation: "Source: knowledgelib.io — AI Knowledge Library (verified 2026-03-11)"

# === RELATED UNITS ===
related_kos:
  depends_on:
    - id: "business/customer-research/ideal-customer-profile-framework/2026"
      label: "Building an ICP — firmographic (B2B) or demographic (B2C) criteria, behavioral signals, disqualification criteria"
  feeds_into:
    - id: "business/lead-generation/lead-enrichment-pipeline/2026"
      label: "Enrich extracted leads with email, phone, firmographic data"
    - id: "business/lead-generation/lead-scoring-implementation/2026"
      label: "Score leads before outreach"
  related_to:
    - id: "business/lead-generation/apollo-zoominfo-api-lead-pull/2026"
      label: "Alternative data provider approach"
  alternative_to:
    - id: "business/lead-generation/web-scraping-for-lead-lists/2026"
      label: "Broader web scraping for non-LinkedIn sources"

# === SOURCES ===
sources:
  - id: src1
    title: "LinkedIn Automation Rate Limits — 2025 Guide"
    author: PhantomBuster
    url: https://phantombuster.com/blog/guides/linkedin-automation-rate-limits-5pFlkXZFjtku79DltwBF0M
    type: technical_blog
    published: 2025-10-15
    reliability: authoritative
  - id: src2
    title: "Best LinkedIn Sales Navigator Scrapers of 2026"
    author: Lobstr.io
    url: https://www.lobstr.io/blog/best-sales-navigator-companies-scraper
    type: technical_blog
    published: 2026-01-20
    reliability: high
  - id: src3
    title: "LinkedIn Sales Navigator — Official Product Page"
    author: LinkedIn
    url: https://business.linkedin.com/sales-solutions/sales-navigator
    type: official_docs
    published: 2026-01-01
    reliability: authoritative
  - id: src4
    title: "Best LinkedIn Scraper for Public Data"
    author: PhantomBuster
    url: https://phantombuster.com/blog/sales-prospecting/linkedin-scraper/
    type: technical_blog
    published: 2025-11-10
    reliability: high
  - id: src5
    title: "Best Tools for Scraping LinkedIn Sales Navigator"
    author: CodeWords
    url: https://www.codewords.ai/blog/best-tools-for-scraping-linkedin-sales-navigator
    type: technical_blog
    published: 2025-12-05
    reliability: high
  - id: src6
    title: "LinkedIn Lead Scraping Tools — Complete 2025 Comparison"
    author: Kondo
    url: https://www.trykondo.com/blog/linkedin-lead-scraping-tools-review
    type: industry_report
    published: 2025-09-20
    reliability: high
---

# LinkedIn Sales Navigator Scraping Workflow

## Purpose

This recipe produces a cleaned, deduplicated CSV of 200-2,000 leads extracted from LinkedIn Sales Navigator, matching your ICP filters — with names, titles, companies, LinkedIn URLs, and optionally work emails. The output is ready for enrichment pipeline ingestion or direct CRM import.

## Prerequisites

- [ ] **ICP definition** available from `persona-builder` agent — [ICP Definition](/business/customer-research/ideal-customer-profile-definition/2026)
- [ ] **LinkedIn Sales Navigator** — active Core ($99/mo) or Advanced ($149/mo) subscription
- [ ] **PhantomBuster account** — API key from [phantombuster.com](https://phantombuster.com) (free tier: 2hr/day)
- [ ] **Sales Navigator cookie** — extracted from browser session (required for PhantomBuster)

## Constraints

- LinkedIn allows ~80-150 profile views/day on Sales Navigator accounts. Exceeding this triggers temporary restrictions. [src1]
- Connection requests capped at ~100/week across all LinkedIn account types. [src1]
- PhantomBuster processes ~1 profile every 30 seconds. A batch of 500 profiles takes ~4 hours. [src2]
- GDPR applies to personal data of EU residents regardless of where your company is located — B2B work emails are generally permissible under legitimate interest. [src1]
- Apify community scrapers are limited to ~500 profiles per session before LinkedIn detection kicks in. [src2]

## Tool Selection Decision

```
Which path?
├── User is non-technical AND budget = free
│   └── PATH A: Manual Export — Sales Navigator CSV + Google Sheets
├── User is non-technical AND budget > $0
│   └── PATH B: No-Code Paid — PhantomBuster or Evaboot
├── User is semi-technical AND budget = free
│   └── PATH C: Apify Community Scraper (free tier)
└── User is developer AND budget > $0
    └── PATH D: PhantomBuster API + Custom Script
```

| Path | Tools | Cost | Speed | Output Quality |
|------|-------|------|-------|---------------|
| A: Manual Export | Sales Navigator + Sheets | $99/mo (Nav only) | 2-3 hours/200 leads | Basic — no emails |
| B: No-Code Paid | PhantomBuster + Nav | $168/mo | 30 min/500 leads | High — with email discovery |
| C: Apify Free | Apify + Nav | $99/mo (Nav only) | 45 min/500 leads | Medium — cap at 500/session |
| D: Code + Paid | PhantomBuster API + script | $168/mo | 15 min/500 leads | Highest — full automation |

## Execution Flow

### Step 1: Build Sales Navigator Boolean Search

**Duration**: 10-15 minutes
**Tool**: LinkedIn Sales Navigator

Translate your ICP into Sales Navigator boolean search queries. Use Lead filters (not Account filters) for individual contacts.

```
Example boolean search for SaaS VP Sales at mid-market companies:

Title: (VP OR "Vice President" OR Director OR Head) AND (Sales OR Revenue OR "Business Development")
Company headcount: 51-500
Industry: Computer Software, Internet, SaaS
Geography: United States
Seniority: VP, Director
```

Save the search in Sales Navigator for future re-runs. Copy the full search URL — this is your input for the scraper.

**Verify**: Search returns 200-5,000 results. If fewer than 200, broaden criteria. If more than 5,000, narrow with additional filters.
**If failed**: Add or remove filters incrementally. Check that boolean operators are uppercase (AND, OR, NOT).

### Step 2: Extract Sales Navigator Cookie

**Duration**: 2-3 minutes
**Tool**: Browser DevTools

PhantomBuster and Apify require your Sales Navigator session cookie to operate.

```
Steps:
1. Open Sales Navigator in Chrome
2. Press F12 → Application tab → Cookies → linkedin.com
3. Find the cookie named "li_at"
4. Copy its value (long alphanumeric string)
5. Paste into PhantomBuster's LinkedIn Session Cookie field
```

**Verify**: Cookie value starts with "AQ" and is 200+ characters long.
**If failed**: Log out and back into LinkedIn, then re-extract. Cookies expire every 30-90 days.

### Step 3: Configure and Run Scraper

**Duration**: 5-10 minutes setup + 30-120 minutes runtime
**Tool**: PhantomBuster (Sales Navigator Search Export phantom)
**Rate limit**: Max 80-150 profiles/day per LinkedIn account. Spread across multiple sessions if needed. [src1]

```
PhantomBuster Configuration:
- Phantom: "Sales Navigator Search Export"
- Session cookie: [paste li_at value]
- Search URL: [paste saved search URL from Step 1]
- Number of profiles: 500 (recommended per run)
- Behavior:
  - Time between launches: 60 minutes minimum
  - Lines per launch: 100
  - Add email discovery: Yes (uses email credits)
```

**Expected output**: CSV with columns — linkedInProfileUrl, firstName, lastName, title, companyName, location, connectionDegree, sharedConnections
**Verify**: Row count matches expected range. No columns with 100% null values.
**If failed**: If account restricted, pause 24 hours. Reduce lines per launch to 50. Rotate to backup LinkedIn account if available.

### Step 4: Clean and Deduplicate

**Duration**: 10-15 minutes
**Tool**: Google Sheets, Excel, or Python

```python
import pandas as pd

df = pd.read_csv('phantombuster_export.csv')

# Remove duplicates by LinkedIn URL
df = df.drop_duplicates(subset=['linkedInProfileUrl'])

# Remove rows missing critical fields
df = df.dropna(subset=['firstName', 'lastName', 'companyName'])

# Normalize titles for consistency
df['title'] = df['title'].str.strip().str.title()

# Filter to ICP-matching titles only
icp_titles = ['vp', 'vice president', 'director', 'head']
df = df[df['title'].str.lower().str.contains('|'.join(icp_titles))]

df.to_csv('cleaned_leads.csv', index=False)
print(f"Cleaned: {len(df)} leads from {len(pd.read_csv('phantombuster_export.csv'))} raw")
```

**Verify**: Dedup reduces list by less than 10%. If more, search overlap between runs is too high.
**If failed**: Check that the linkedInProfileUrl column is present and correctly formatted.

### Step 5: Export Final Lead List

**Duration**: 5 minutes

Generate the final deliverable in CRM-ready format.

```python
output = df[['firstName', 'lastName', 'title', 'companyName',
             'linkedInProfileUrl', 'location', 'email']].copy()
output.columns = ['First Name', 'Last Name', 'Job Title', 'Company',
                   'LinkedIn URL', 'Location', 'Email']
output['Lead Source'] = 'LinkedIn Sales Navigator'
output['Date Scraped'] = '2026-03-11'
output.to_csv('final_leads.csv', index=False)
```

**Output files**:
- `final_leads.csv` — Primary lead list, sorted by company name
- `search_queries.txt` — Saved boolean searches for reproducibility

## Output Schema

```json
{
  "output_type": "lead_list",
  "format": "CSV",
  "columns": [
    {"name": "First Name", "type": "string", "description": "Contact first name", "required": true},
    {"name": "Last Name", "type": "string", "description": "Contact last name", "required": true},
    {"name": "Job Title", "type": "string", "description": "Current job title", "required": true},
    {"name": "Company", "type": "string", "description": "Current employer", "required": true},
    {"name": "LinkedIn URL", "type": "string", "description": "Full LinkedIn profile URL", "required": true},
    {"name": "Location", "type": "string", "description": "Geographic location", "required": false},
    {"name": "Email", "type": "string", "description": "Work email (if discovered)", "required": false},
    {"name": "Lead Source", "type": "string", "description": "Always 'LinkedIn Sales Navigator'", "required": true},
    {"name": "Date Scraped", "type": "date", "description": "Extraction date", "required": true}
  ],
  "expected_row_count": "150-2000",
  "sort_order": "company ascending",
  "deduplication_key": "LinkedIn URL"
}
```

## Quality Benchmarks

| Quality Metric | Minimum Acceptable | Good | Excellent |
|---------------|-------------------|------|-----------|
| ICP title match rate | > 70% | > 85% | > 95% |
| Data completeness (name + company + title) | > 90% | > 95% | > 99% |
| Email discovery rate | > 30% | > 50% | > 70% |
| Duplicate rate post-dedup | < 10% | < 5% | < 2% |

**If below minimum**: Refine Sales Navigator boolean search. Overly broad searches dilute ICP match rate.

## Error Handling

| Error | Likely Cause | Recovery Action |
|-------|-------------|----------------|
| LinkedIn account restricted | Exceeded daily profile view limit | Pause 24 hours, reduce batch to 50 profiles/launch |
| PhantomBuster "cookie expired" | Session cookie invalidated | Re-extract li_at cookie from browser |
| Empty CSV output | Search URL malformed or cookie rejected | Verify search URL loads in browser, re-paste cookie |
| Partial extraction (stopped mid-run) | PhantomBuster runtime limit hit | Upgrade plan or split into multiple smaller runs |
| Email discovery returns 0% | LinkedIn privacy settings blocking | Use enrichment pipeline as fallback for email discovery |

## Cost Breakdown

| Component | Free Tier | Paid Tier | At Scale |
|-----------|-----------|-----------|----------|
| Sales Navigator | $0 (30-day trial) | $99/mo (Core) | $149/mo (Advanced) |
| PhantomBuster | 2hr/day, 500 AI credits | $69/mo (20hr) | $159/mo (80hr) |
| Email discovery (credits) | 500 included | Included in plan | $0.10-$0.20/email |
| **Total for 500 leads** | **$0** | **$168/mo** | **$308/mo** |

## Anti-Patterns

### Wrong: Running scraper at maximum speed without delays
Blasting 1,000 profile views in an hour triggers LinkedIn's automated detection. Account gets restricted for 7-30 days, losing access to all saved leads and InMails. [src1]

### Correct: Throttle to 50-100 profiles per session with 60+ minute gaps
Spread extraction across multiple sessions. PhantomBuster's built-in rate limiting helps, but set conservative launch intervals. [src1]

### Wrong: Using personal LinkedIn account for scraping
If the account gets restricted, you lose your professional network and messaging history. Recovery is uncertain.

### Correct: Use a dedicated Sales Navigator seat for scraping
Separate scraping activity from your primary professional account. If restricted, only the scraping seat is affected. [src4]

## When This Matters

Use when the agent needs to extract a targeted lead list from LinkedIn Sales Navigator based on ICP criteria. Requires an active Sales Navigator subscription and produces a CSV ready for enrichment or CRM import.

## Related Units

- [ICP Definition](/business/customer-research/ideal-customer-profile-definition/2026)
- [Lead Enrichment Pipeline](/business/lead-generation/lead-enrichment-pipeline/2026)
- [Lead Scoring Implementation](/business/lead-generation/lead-scoring-implementation/2026)
- [Apollo/ZoomInfo API Lead Pull](/business/lead-generation/apollo-zoominfo-api-lead-pull/2026)
- [Email Verification Workflow](/business/lead-generation/email-verification-workflow/2026)
