Export LinkedIn Sales Navigator Leads to Google Sheets
Scrape leads from any LinkedIn Sales Navigator search and export them to Google Sheets automatically. Extracts name, headline, job title, company, industry, location, tenure, connection degree, and intent signals — with full pagination support for up to 2,500 leads per run.
Key Takeaways
- Export leads from any LinkedIn Sales Navigator search - Paste a single fetch request and get structured lead data in Google Sheets
- 13 data points per lead - Name, LinkedIn URL, headline, job title, company, industry, location, company location, tenure, connection degree, signals, search query, and email placeholder
- Full pagination - Automatically loops through all result pages with 4-second delays between requests
- Up to 2,500 leads per run - Processes up to 100 pages at 25 results per page
- Intent signals - Captures Sales Navigator spotlight badges like active poster, recently hired, and connection degree
What This Workflow Does
This workflow takes any LinkedIn Sales Navigator lead search and exports all matching profiles to a Google Sheet. You run your search in Sales Navigator with whatever filters you want (keywords, seniority, region, company size, industry), copy the API request from your browser's DevTools, paste it into the workflow, and hit run. The workflow parses your request, paginates through every page of results, extracts rich profile data, and writes it row by row to your spreadsheet.
Use cases:
- Building targeted outreach lists from Sales Navigator saved searches
- Exporting ICP-matched leads with job title, company, and seniority data
- Monitoring connection degree and intent signals for warm outreach prioritization
- Bulk lead capture for ABM campaigns with company and industry enrichment
- Creating segmented prospect lists by region, tenure, or company size
How It Works
| Step | What Happens |
|---|---|
| 1. Manual trigger | You paste the fetch() request copied from Sales Navigator DevTools |
| 2. Parse fetch request | A code node extracts the API URL, headers, CSRF token, cookies, and search keywords |
| 3. Pagination loop | Iterates through result pages (up to 100 pages, 25 per page) |
| 4. Build page URL | Updates the API URL with the current page offset |
| 5. Wait 4 seconds | Pauses between requests to respect rate limits |
| 6. HTTP request | Fetches the current page of leads from LinkedIn's Sales Navigator API |
| 7. Extract profiles | Parses the API response to pull out profile data, positions, signals, and deduplicates results |
| 8. Save to Google Sheets | GPT-4.1 writes each batch of profiles as rows to your spreadsheet using Add Multiple Rows |
| 9. Check pagination | Determines if there are more pages and continues the loop |
Workflow Nodes
| Node | Role |
|---|---|
| Manual Trigger | Accepts the pasted fetch() request from Sales Navigator DevTools |
| Code (Parse Fetch) | Extracts URL, headers, CSRF token, cookies, search keywords, and pagination count |
| Loop | Iterates through result pages (condition: hasMore and page < 100) |
| Code (Build URL) | Constructs the API URL for the current page offset using baseUrl template |
| Wait (4s) | Delays 4 seconds between API calls |
| HTTP Request | Sends a GET request to LinkedIn's Sales Navigator Lead Search API |
| Merge | Combines the HTTP response with the build context (search keywords, page info) |
| Code (Extract Profiles) | Parses the Sales Nav response, extracts lead data, positions, signals, deduplicates |
| Code (Emit Profiles) | Returns the profiles array for the AI node |
| AI Agent (GPT-4.1) | Saves profiles to Google Sheets using add_multiple_rows tool |
| Code (Pagination Info) | Passes pagination state (hasMore, totalResults) back to the loop |
| Merge | Combines AI save results with pagination data |
| Code (Extract Pagination) | Extracts hasMore and totalResults for the next loop iteration |
Data Exported Per Lead
| Column | Field | Description |
|---|---|---|
| A | name | Full name as shown on LinkedIn |
| B | linkedin_url | Full LinkedIn profile URL or Sales Nav lead URL |
| C | headline | Professional headline |
| D | job_title | Current job title from their primary position |
| E | company | Current company name |
| F | industry | Company industry (when available) |
| G | location | Person's geographic region |
| H | company_location | Company headquarters location |
| I | tenure | Time in current position (e.g. "2y 3m") |
| J | connection_degree | LinkedIn connection degree (1st, 2nd, 3rd) |
| K | signals | Intent signals: active_poster, recently_hired, etc. |
| L | search_query | The keywords used in the Sales Navigator search |
| M | Email placeholder (empty by default, enrich separately) |
Setup Instructions
- Add the "Export LinkedIn Sales Navigator Leads to Google Sheets" template to Needle
- Go to LinkedIn Sales Navigator and run your lead search with desired filters
- Open browser DevTools (F12) and go to the Network tab
- Scroll down in Sales Nav results to trigger the API request
- Find the request to
salesApiLeadSearch(look for JSON responses around 20-100+ kB) - Right-click the request, then select Copy, then Copy as fetch
- Important: Make sure the fetch includes the
cookieheader with yourli_atvalue. If it is missing, go to DevTools > Application > Cookies > linkedin.com, copy theli_atvalue, and add"cookie": "li_at=YOUR_VALUE"to the headers - Paste the copied fetch() into the Manual Trigger node
- Connect your Google Sheets account in the AI Agent node
- Update the Google Sheet URL in the AI Agent prompt
- Run the workflow
Customization
| What You Can Change | How |
|---|---|
| Google Sheet columns | Update the column mapping in the AI Agent prompt (default: A=name through M=email) |
| Target spreadsheet | Update the sheet URL in the AI Agent prompt |
| Page delay | Change the Wait node duration (default: 4 seconds) |
| Max pages | Change the loop condition (default: page < 100) |
| AI model | Switch the AI Agent from GPT-4.1 to another model |
| Signal detection | Edit the Extract Profiles code node to capture additional spotlight badges |
FAQ
Q: How do I find the right network request to copy?
A: In the Network tab, filter by "salesApi" or "LeadSearch". The request URL will contain salesApiLeadSearch and return a JSON response with an elements array of lead profiles.
Q: My workflow is returning errors or empty results. What should I do?
A: Your LinkedIn session cookie expires after roughly 24 hours. Go back to Sales Navigator, open DevTools, and copy a fresh fetch() request. Make sure the li_at cookie is included in the headers.
Q: Does this require a Sales Navigator subscription? A: Yes. The workflow uses LinkedIn's Sales Navigator API, which is only available with an active Sales Navigator subscription (Core, Advanced, or Advanced Plus).
Q: Why are some fields like industry or company_location empty? A: LinkedIn's Sales Navigator API does not always return all fields for every lead. Industry and company location depend on the company's profile completeness and what LinkedIn includes in search results.
Q: Can I scrape more than 2,500 leads? A: The default limit is 100 pages (2,500 leads). Sales Navigator itself typically limits search results to around 2,500. For larger datasets, split your search into multiple queries with different filters and run the workflow once per query.
Q: What are the intent signals? A: Sales Navigator provides spotlight badges for certain leads. The workflow captures "active_poster" (posted on LinkedIn recently), "recently_hired" (changed jobs recently), and connection degree information. These help prioritize leads for outreach.
Want to showcase your own workflows?
Become a Needle workflow partner and turn your expertise into recurring revenue.