# How to Export LinkedIn Search Results to Excel or CSV

How to export LinkedIn search results to Excel or CSV – by hand, with an extension, an AI agent or an API – and the 250-result limit on free accounts.

You built a search on LinkedIn and want the people in a spreadsheet. This guide shows how to export LinkedIn search results – by hand, with a browser extension, with an AI agent or with a few lines of code – what LinkedIn itself allows, and how to get the file open in Excel or Google Sheets without garbled names.

> **The short version.** There are three practical ways to export LinkedIn search results. For a handful of people, copy the rows into a sheet by hand. For a one-off list, a browser extension can save the results pages you have open to a CSV file. For a list you will refresh, enrich or send on to a CRM, run the same search on your own account through an API or an AI agent and write the rows to a CSV, a sheet or the CRM directly. LinkedIn itself offers no export button for standard search – its Help documents a CSV export only in LinkedIn Recruiter – and it shows a free account at most 250 results per search, so split a larger search into narrower ones. A result row gives you the name, headline, location and profile link; search-result rows contain no email addresses, and finding missing emails is a separate enrichment step.

## Can you export LinkedIn search results?

Not from a standard LinkedIn search. What LinkedIn documents, product by product:

| Product | Native export | Results you can see |
|---|---|---|
| **Standard search, free account** | No export option in LinkedIn Help | "A maximum of 250 results per search or 25 pages of search results" ([LinkedIn Help](https://www.linkedin.com/help/linkedin/answer/a520842)) |
| **Premium** | No export option in LinkedIn Help | "Everything listed above for free members", plus more people searches on Premium Business and above (same page) – no separate number |
| **Sales Navigator** | "LinkedIn currently doesn't offer the option to export account and lead information from Sales Navigator into a CSV or XLS file"; CRM Sync on Advanced Plus ([Sales Navigator Help](https://www.linkedin.com/help/sales-navigator/answer/a102031)) | Up to 2,500 lead results across 100 pages ([Sales Navigator Help](https://www.linkedin.com/help/sales-navigator/answer/a106030)) |
| **LinkedIn Recruiter** | PDF or CSV: "200 profiles per month, per seat via PDF"; by CSV "a total of 5000 unique profiles and 200 files per month, per seat"; "up to 25 candidates per export"; "Recruiter Lite doesn't support exporting to CSV" ([Recruiter Help](https://www.linkedin.com/help/recruiter/answer/a412149)) | – |

Recruiter's CSV comes from a project's Pipeline, not from a button on the search page. Exporting Sales Navigator leads is its own topic – see our [Sales Navigator scraper guide](/guides/linkedin-sales-navigator-scraper).

Two details people trip over. LinkedIn's data archive, "Download your data", contains your connections and your "Search Queries" – the words and dates of your searches – not the results ([LinkedIn Help](https://www.linkedin.com/help/linkedin/answer/a1339364)); exporting your own network is covered in our [connections export guide](/guides/export-linkedin-connections). And export tools commonly state that a standard search reaches 1,000 results (100 pages of 10), while LinkedIn's Help states 250 for a free account. Plan for LinkedIn's figure.

## What a LinkedIn search result contains

A search shows a short card per result, and an export captures what is on that card. Linked API's search response returns these fields:

- **People:** name, headline, location, profile link and your connection degree (API output also carries the photo URL and a permanent member ID).
- **Companies:** name, industry, location and the company page link.

Linked API's search response does not separate current company and title (some extensions split them out of the card); fetch the profile for those fields and for experience, education, skills and the About section. Each profile visit counts toward LinkedIn's commercial use limit, which LinkedIn does not publish as a number ([LinkedIn Help](https://www.linkedin.com/help/linkedin/answer/a564226)), so read profiles only for the rows you will use. Our [LinkedIn profile scraper guide](/guides/linkedin-profile-scraper) covers that step.

Search-result rows contain no email addresses. Finding missing emails is a separate enrichment step, usually charged per email found.

One more thing: results are personal. "LinkedIn uses proprietary relevance algorithms to generate a results order that's unique to each member" ([LinkedIn Help](https://www.linkedin.com/help/linkedin/answer/a524188)), so the same search can return a different list on a colleague's account.

## Three ways to export LinkedIn search results

| Route | How it reads LinkedIn | Rows per run | Where the data goes | Best for |
|---|---|---|---|---|
| **By hand** | You, page by page | A page at a time | Wherever you paste | Up to a few dozen people |
| **Browser extension or export tool** | Reads the results page in your browser, or runs in the vendor's cloud on your session | As the tool allows, within LinkedIn's limit | A CSV file | A one-off list |
| **API or AI agent on your own account** | Runs the search from your own account | Up to LinkedIn's limit per search, repeatable | A CSV, a sheet, a CRM or your product | A list you refresh, enrich or act on |

## Export with a browser extension or export tool

**By hand, step by step.** Run the search on LinkedIn. Open a sheet with four columns: name, headline, location, profile URL. For each result, copy the name and headline, and right-click the name to copy the profile link. Move to the next page and repeat. It is fine for a few dozen people and slow beyond that.

**With a browser extension, step by step.** The "LinkedIn → CSV Exporter" extension on the Chrome Web Store describes its own steps: install it and pin it to the toolbar; log in to LinkedIn and run a people search – "Make sure you see a list of people profiles in the results", on a URL like linkedin.com/search/results/people/; click the extension icon; "Select how many result pages you want to export"; then "Click Export Search Results and download your CSV file". Its free tier exports one results page per export.

Tools work in different ways, and the difference matters for your account:

| Tool | How it reaches LinkedIn | Standard search | Emails in the export |
|---|---|---|---|
| **LinkedIn → CSV Exporter** | An extension in your own browser; "Works only on LinkedIn search pages that show people" | Yes – not Sales Navigator or Recruiter | No |
| **PhantomBuster LinkedIn Search Export** | Runs in PhantomBuster's cloud on your LinkedIn session cookie, connected through its browser extension or pasted by hand | Yes – Sales Navigator has a separate Phantom | Not in the search export |
| **Simular** | A computer-use agent that, in Simular's words, "runs your search in a real browser on a cloud VM and writes each row into your sheet" | Yes, and Sales Navigator | Profile enrichment as a separate step |
| **Evaboot** | A Sales Navigator export tool – its pricing FAQ answers "Do I need a Sales Navigator account?" with yes | No | Yes, per credit |
| **Linked API** | Your own account in a real, dedicated cloud browser; you drive it with code or an AI agent | Yes, people and companies | No |

Before you pick one, check four things: how it signs in to your account (your browser, your session cookie, your password, or a dedicated browser), the per-run and per-day limits it states, whether emails cost extra, and where the file ends up.

## Export with an AI agent

With an AI agent, you describe the list instead of clicking through it:

> Find heads of sales at fintech companies in London, up to 200 people, and save them to search-results.csv with name, headline, location and profile link. Tell me how many rows came back.

The agent runs the search on your LinkedIn account and writes the file. Through the [MCP server](/mcp/overview) or the AI-agent-friendly [CLI](/cli/getting-started), the search tools take keywords and filters – title, location, industry, current and past company, school, connection degree – so the agent rebuilds your search from them. To reuse a search URL you copied from LinkedIn, the agent runs it as a one-action custom workflow: `execute_custom_workflow` in MCP, or `linkedin workflow run` in the CLI. Our [advanced search guide](/guides/linkedin-advanced-search) shows that workflow. Ready-made [skills](/skills) cover people and company search too.

Ask the agent to report the row count. A short result usually means LinkedIn's limit or a narrow search, not a failed export. For how agents connect to a LinkedIn account, see the [LinkedIn AI agent guide](/guides/linkedin-ai-agent).

## Export with code: a LinkedIn search to CSV

The same search, in your own code. Paste the URL of a people search you built in the browser – or build the search from a keyword and filters – and the script writes `search-results.csv`. A failed search stops with LinkedIn's message instead of writing an empty file.

```typescript
import { writeFile } from "node:fs/promises";
import LinkedApi, { LinkedApiError } from "@linkedapi/node";

const linkedapi = new LinkedApi({
  linkedApiToken: "your-linked-api-token",
  identificationToken: "your-identification-token",
});

// The URL of a LinkedIn people search you built in the browser.
const SEARCH_URL =
  "https://www.linkedin.com/search/results/people/?keywords=head%20of%20sales&geoUrn=%5B%22102257491%22%5D";

function csvCell(value: string | null): string {
  const text = value ?? "";
  return /[",\r\n]/.test(text) ? `"${text.replace(/"/g, '""')}"` : text;
}

async function main(): Promise<void> {
  try {
    const workflow = await linkedapi.searchPeople.execute({
      customSearchUrl: SEARCH_URL,
      // Or build the search from filters: term: "head of sales", filter: { locations: ["London"] },
      limit: 250,
    });
    const { data, errors } = await linkedapi.searchPeople.result(workflow.workflowId);
    if (!data) {
      console.error(`Search failed: ${errors.map(({ message }) => message).join("; ")}`);
      process.exitCode = 1;
      return;
    }
    const header = ["name", "headline", "location", "connection_degree", "profile_url"];
    const rows = data.map((person) =>
      [person.name, person.headline, person.location, person.viewerState.connectionDegree, person.publicUrl]
        .map(csvCell)
        .join(","),
    );
    // The byte-order mark tells Excel the file is UTF-8, so non-Latin names open correctly.
    await writeFile("search-results.csv", "﻿" + [header.join(","), ...rows].join("\r\n") + "\r\n", "utf8");
    console.log(`${data.length} rows written to search-results.csv`);
  } catch (caught) {
    if (caught instanceof LinkedApiError) {
      console.error(`Linked API error: ${caught.message}`);
      process.exitCode = 1;
      return;
    }
    throw caught;
  }
}

main();
```

```python
import csv
import sys

from linkedapi import LinkedApi, LinkedApiConfig, LinkedApiError, SearchPeopleParams

linkedapi = LinkedApi(
    LinkedApiConfig(
        linked_api_token="your-linked-api-token",
        identification_token="your-identification-token",
    )
)

# The URL of a LinkedIn people search you built in the browser.
SEARCH_URL = "https://www.linkedin.com/search/results/people/?keywords=head%20of%20sales&geoUrn=%5B%22102257491%22%5D"

try:
    workflow = linkedapi.search_people.execute(
        SearchPeopleParams(
            custom_search_url=SEARCH_URL,
            # Or build the search from filters: term="head of sales", filter={"locations": ["London"]},
            limit=250,
        )
    )
    result = linkedapi.search_people.result(workflow.workflow_id)
except LinkedApiError as caught:
    sys.exit(f"Linked API error: {caught.message}")

if result.data is None:
    sys.exit("Search failed: " + "; ".join(error.message for error in result.errors))

# utf-8-sig writes a byte-order mark, so Excel opens non-Latin names correctly.
with open("search-results.csv", "w", newline="", encoding="utf-8-sig") as file:
    writer = csv.writer(file)
    writer.writerow(["name", "headline", "location", "connection_degree", "profile_url"])
    for person in result.data:
        degree = person.viewer_state.connection_degree if person.viewer_state else None
        writer.writerow([person.name, person.headline, person.location, degree, person.public_url])

print(f"{len(result.data)} rows written to search-results.csv")
```

The `limit` can go up to 1,000 per call, but LinkedIn still decides how many results your account sees. A company search works the same way with [`searchCompanies`](/docs/action-st-search-companies). Every filter is listed under [`st.searchPeople`](/docs/action-st-search-people), with walkthroughs in [searching for people](/docs/searching-for-people) and [searching for companies](/docs/searching-for-companies). If you are comparing scraper APIs and datasets across profiles, companies and posts, our [LinkedIn scraper API guide](/guides/linkedin-scraper-api) covers that choice.

## Send the results to Excel, Google Sheets or a CRM

**Open the file correctly.** In Excel, use Data → From Text/CSV, set File Origin to 65001: Unicode (UTF-8) and the delimiter to Comma, then Load – double-clicking a CSV can garble accented and non-Latin names. In Google Sheets, use File → Import → Upload, then choose where the data goes and the separator ([Google Docs Help](https://support.google.com/docs/answer/40608)).

**Keep a sheet or CRM updated.** For a sheet that refreshes, write rows with the Google Sheets API or an [n8n](/integrations/n8n/overview) or [Make](/integrations/make/overview) workflow; for HubSpot, see the [HubSpot integration](/integrations/hubspot-linkedin-integration). Keeping CRM records current is its own job – our [CRM hygiene guide](/guides/crm-hygiene) covers it. To re-run a saved search and pick up only new people, use the routine in the [advanced search guide](/guides/linkedin-advanced-search).

## How to export more than 250 results

250 is LinkedIn's figure for a free account; it publishes no separate number for Premium. Either way, the fix is the same: split the search into narrower ones that each fit under the limit – by location, current company, industry, connection degree or title – then merge the files and remove duplicates by profile link. A [Boolean search](/guides/linkedin-boolean-search) helps you build tight variants.

Judge by the rows you get back, not by the counter. LinkedIn says "Search results are always approximate and the actual results may differ from the results counter at the top of search results page" ([LinkedIn Help](https://www.linkedin.com/help/linkedin/answer/a525054)). If you need bigger lists, Sales Navigator shows up to 2,500 leads per search, and Recruiter's CSV export is counted per seat.

## Keep your account in good standing while exporting

Searches and profile visits count toward LinkedIn's commercial use limit, so export what you will actually use and keep a human pace. Linked API runs your own account in a real, dedicated cloud browser – LinkedIn's own pages, at a human pace, within the per-account [limits](/docs/admin-limits) you set – and never stores your password. Like any automation, it carries some risk, which is why volume and pace matter more than the tool. For what LinkedIn's terms say about collecting data, see our guide on [how to scrape LinkedIn](/guides/how-to-scrape-linkedin).

## Frequently Asked Questions (FAQ)

#### Can you export LinkedIn search results to Excel?

Not natively from a standard LinkedIn search – LinkedIn's Help documents an export only in LinkedIn Recruiter, as PDF or CSV from a project. To get a standard search into Excel, copy the rows by hand, use a browser extension that saves the results to CSV, or run the search through an API or an AI agent and write a CSV, then open it in Excel with UTF-8 encoding.

#### Is there a free way to export LinkedIn search results?

Yes, for small lists. Copying rows by hand costs nothing, and some browser extensions have a free tier – the "LinkedIn → CSV Exporter" extension, for example, exports one results page per export for free.

#### How many LinkedIn search results can I export?

LinkedIn shows a free account up to 250 results per search, across 25 pages, and publishes no separate number for Premium. Sales Navigator shows up to 2,500 leads per search. To export more from a standard search, split it into narrower searches and merge the files.

#### Can I get email addresses from a LinkedIn search export?

Not from the search itself – search-result rows contain no email addresses. Finding missing emails is a separate enrichment step, usually charged per email found.

#### Can I export a Sales Navigator search?

LinkedIn's Sales Navigator Help says it does not offer an export of leads or accounts to CSV or XLS; CRM Sync on the Advanced Plus plan is the alternative it names. Our [Sales Navigator scraper guide](/guides/linkedin-sales-navigator-scraper) compares the tools people use instead.

#### Why does my export have fewer rows than LinkedIn's counter?

Three reasons: LinkedIn's limit on how many results an account can see (250 on a free account), a counter LinkedIn itself calls approximate, and results that are ordered and filtered for each member. Split the search into narrower ones and count the rows you actually get.

## Build it in, or hand it to an agent

Build search exports into your own product, CRM sync or workflow with the REST API, the [Node and Python SDKs](/sdks/installation) or the shell [CLI](/cli/getting-started). Or have an AI agent run them out of the box through the [MCP server](/mcp/overview), the agent-friendly CLI or a ready-made [skill](/skills) – searching on your own LinkedIn account and writing the rows wherever you need them. Plans are flat per seat, from $49/mo billed annually – see [pricing](/pricing).

*Facts verified November 3, 2026 – LinkedIn Help pages and the vendor pages named here checked on that date.*
