# LinkedIn Sales Navigator Account Scraper (`khadinakbar/linkedin-sales-account-scraper`) Actor

Turn a LinkedIn Sales Navigator account search URL into public company records: name, industry, size, HQ, website. Cookieless, no SN seat. Decodes SN company filters and enriches public LinkedIn company pages. MCP-ready.

- **URL**: https://apify.com/khadinakbar/linkedin-sales-account-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, Social media, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 account founds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## LinkedIn Sales Navigator Account Scraper

Turn a LinkedIn Sales Navigator **account** (company) search into public LinkedIn company records. Paste the URL from Sales Navigator Account search — or type an industry and location — and get one dataset row per company with name, LinkedIn URL, industry, employee count, headquarters, and website. No Sales Navigator seat, no cookies, no login.

Built for SDRs, ABM teams, and AI agents who already designed the account search in Sales Navigator and need a bulk public-company export they can actually download. Pair it with [LinkedIn Sales Navigator Scraper](https://apify.com/khadinakbar/linkedin-sales-navigator-scraper) when you also need people at those accounts.

### What you get

| Output | What it answers |
|---|---|
| `companyName` + `linkedinUrl` + `handle` | **Which company** matched, and the public `/company/` page |
| `industry`, `employeeCount`, `companySize`, `headquarters` | **Firmographics** from the public company page (when enrichment is on) |
| `website`, `founded`, `followerCount`, `description` | **How to reach and qualify** the account |
| `isEnriched` + `enrichmentSource` | **Whether** deep public fields landed, and which provider supplied them |
| `OUTPUT` / `RUN_SUMMARY` outcomes | **Provenance** — complete, empty, invalid input, or upstream outage |

### Who it is for (and why it matters)

- **Sales development / ABM** — convert a Sales Navigator account search into a CRM-ready company list without a seat or cookie.
- **Market researchers** — pull public industry, size, HQ, and website for a niche + city.
- **RevOps** — enrich an exported list of `linkedin.com/company/<slug>` URLs.
- **AI agents** — one tool call with an SN account URL or filters returns structured company rows and an `outcome`.

### When to use this Actor

Use this actor when:

- You have a Sales Navigator **Account** search URL (`/sales/search/company`) and need public company pages.
- You want industry + location targeting without logging into LinkedIn.
- You already have public company URLs and only need firmographics.

### Related workflows

- For **people / leads** from a Sales Navigator people search, start with [LinkedIn Sales Navigator Scraper](https://apify.com/khadinakbar/linkedin-sales-navigator-scraper).
- For a keyword company search without an SN URL, continue with [LinkedIn Company Search Scraper](https://apify.com/khadinakbar/linkedin-company-search-scraper).
- This Actor stays on public company pages. Seat-only SN fields (buying intent, saved lists, `/sales/company/{id}`) stay out of scope.

### Best fit for this Actor

- Strongest starting condition: an Account search URL that includes **industry, location, company name, or keywords**.
- Headcount, revenue, and "tech used" filters are SN-only; they are dropped and listed in the run log — they are not faked.
- Useful output: one billed row per unique public company page.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `salesNavigatorUrl` | string | — | Full `/sales/search/company?...` URL from the address bar |
| `industry` | string | — | Manual industry phrase (prefill: Software Development) |
| `location` | string | — | City / region / country (prefill: San Francisco) |
| `companyName` | string | — | Optional company-name phrase |
| `keywords` | string | — | Extra Google keywords |
| `companyUrls` | array | — | Public `linkedin.com/company/<slug>` URLs to enrich directly |
| `enrichAccounts` | boolean | true | Add size, HQ, website, founded, followers ($0.02/row extra) |
| `maxResults` | integer | 25 | Cap 1–250 (prefill 3 for the quality window) |
| `resultsRegion` | string | `US` | Google region code |
| `providerOrder` | enum | `scrapecreators-first` | Public-data provider priority |

Provide **one** of: `salesNavigatorUrl`, `companyUrls`, or at least one of `industry` / `location` / `companyName` / `keywords`.

#### Quick start input

```json
{
    "industry": "Software Development",
    "location": "San Francisco",
    "maxResults": 3,
    "enrichAccounts": true
}
```

That input is the saved quality-test prefill: three public company pages in a few seconds, inside the five-minute health window.

#### Example — Sales Navigator account URL

```json
{
    "salesNavigatorUrl": "https://www.linkedin.com/sales/search/company?query=(filters:List((type:INDUSTRY,values:List((text:Software Development,selectionType:INCLUDED))),(type:REGION,values:List((text:San Francisco Bay Area,selectionType:INCLUDED)))))",
    "maxResults": 25,
    "enrichAccounts": true
}
```

#### Example — enrich an account list you already have

```json
{
    "companyUrls": [
        "https://www.linkedin.com/company/stripe",
        "https://www.linkedin.com/company/shopify"
    ]
}
```

### What data you receive

One dataset item is one public LinkedIn company account.

```json
{
    "companyName": "Stripe",
    "linkedinUrl": "https://www.linkedin.com/company/stripe",
    "handle": "stripe",
    "industry": "Technology, Information and Internet",
    "website": "https://stripe.com",
    "employeeCount": 17085,
    "companySize": "5,001-10,000 employees",
    "headquarters": "South San Francisco, California",
    "founded": 2010,
    "isEnriched": true,
    "enrichmentSource": "scrapecreators",
    "scrapedAt": "2026-08-21T07:00:00.000Z"
}
```

Every terminal run also writes `OUTPUT` and `RUN_SUMMARY` with a named `outcome`, dropped SN-only filters, provider diagnostics, and billing counters.

### How it actually works (honest version)

LinkedIn Sales Navigator is a login-walled, paid product. **There is no way to read its live account-search grid without an authenticated Sales Navigator session.** This actor does **not** log into your account and does **not** return SN-only fields such as buying intent, account lists, or private revenue bands.

Instead it does something cookieless and legitimate:

1. **Decodes** the human-readable filters in your Account search URL — industry, region, company name, keywords.
2. **Searches public LinkedIn company pages** that match those filters via managed Google Search (`site:linkedin.com/company`).
3. **Enriches** each public company page through ScrapeCreators (primary) with SociaVault as automatic fallback.

This is a **public-data Sales Navigator account alternative**, not a tool that scrapes the logged-in product. Cookie-based competitors that claim the live SN grid require your `li_at` cookie and can get the seat restricted; this actor never asks for that.

#### How SN-only filters are handled

**Company headcount, annual revenue, company type, tech used, account lists, department headcount, and similar SN-only signals** have no public-search equivalent. When your URL contains them, the actor decodes the rest, **skips those filters, and lists them in the run log** so you can see exactly which public filters were used.

#### Data you will NOT get

Because everything is public, incognito-visible data: **no employee emails, no buying-intent scores, no saved SN lists, no `/sales/company/{numericId}` resolution.** Pair people outreach with [LinkedIn Sales Navigator Scraper](https://apify.com/khadinakbar/linkedin-sales-navigator-scraper) and emails with [LinkedIn Profile Email Scraper](https://apify.com/khadinakbar/linkedin-profile-email-scraper).

### Workflow story: from an SN account search to a CRM company list

An ABM lead built a Sales Navigator Account search for Software Development companies in the San Francisco Bay Area. LinkedIn will not let her export it. She pastes the URL here with `maxResults` at 25 and enrichment on. The actor drops the headcount filter she had also applied, keeps industry + region, and returns 25 public company pages with website, employee count, and HQ. She imports `linkedinUrl` + `website` into the CRM, then runs the people sibling on the same industry/location to find Head of Growth contacts at those accounts. Event cost for 25 enriched accounts is about $0.75.

### Use through the API

```bash
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~linkedin-sales-account-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "industry": "Software Development",
    "location": "San Francisco",
    "maxResults": 3,
    "enrichAccounts": true
  }'
```

Results land in the run's default dataset: `https://api.apify.com/v2/datasets/{datasetId}/items?clean=true`. The same Actor is exposed through Apify MCP as `apify--linkedin-sales-account-scraper`.

### Use with AI agents through Apify MCP

> Given this LinkedIn Sales Navigator account search URL, return public company name, LinkedIn URL, industry, employee count, headquarters, and website. Cap at 25 accounts. Keep the public-data scope: industry, location, and company-name filters, plus public firmographics.

Inspect the terminal `outcome`, read the dataset, keep `linkedinUrl` as the source identifier, and treat `VALID_EMPTY` as a completed search with no public matches. Connect through [Apify MCP](https://mcp.apify.com).

```json
{
    "salesNavigatorUrl": "https://www.linkedin.com/sales/search/company?query=(filters:List((type:INDUSTRY,values:List((text:Software Development,selectionType:INCLUDED))),(type:REGION,values:List((text:San Francisco Bay Area,selectionType:INCLUDED)))))",
    "maxResults": 25,
    "enrichAccounts": true
}
```

### Pricing

This Actor uses Pay per event plus Apify platform usage. Open the live Pricing tab for current event details.

| Event | Price | Charged when |
|---|---|---|
| Actor start | $0.00005 | Once per run (scaled by memory) |
| `account-found` | $0.01 | One public company account saved |
| `account-enriched` | $0.02 | Additional, only when enrichment succeeded |

Invalid input and empty searches are not billed as `account-found`.

| Run | Rows | Enrichment | Event cost (approx.) |
|---|---|---|---|
| Quality prefill | 3 rows | on | ~$0.09 |
| Typical ABM list | 25 rows | off | ~$0.25 |
| Typical ABM list | 25 rows | on | ~$0.75 |
| Larger export | 100 rows | on | ~$3.00 |

When you need current rates, open the live [Pricing tab](https://apify.com/khadinakbar/linkedin-sales-account-scraper/pricing) after a test run and compare it to the event table above. Platform usage is billed on top at Apify's rates.

### Best results

- Copy the **full** Account search URL, including `query=`. People-search URLs are routed to the people actor.
- Include industry or location in the SN search so public Google discovery has a usable query.
- Use public `linkedin.com/company/<slug>` URLs in `companyUrls`. `/sales/company/{id}` is a seat ID; public pages use the company slug.
- Turn off `enrichAccounts` when you only need name + URL for a cheap first pass.
- After you have company URLs, find people at those firms with [LinkedIn Sales Navigator Scraper](https://apify.com/khadinakbar/linkedin-sales-navigator-scraper) or [LinkedIn Profile Search Scraper](https://apify.com/khadinakbar/linkedin-profile-search-scraper).

### Limits, reliability, and troubleshooting

- **Headcount-only SN URLs** finish as `INVALID_INPUT`. Recovery: add industry, location, or keywords in Sales Navigator and copy the URL again.
- **People-search URLs** are routed to [LinkedIn Sales Navigator Scraper](https://apify.com/khadinakbar/linkedin-sales-navigator-scraper).
- **`/sales/company/{id}`** needs a public `https://www.linkedin.com/company/<slug>` URL in `companyUrls` instead.
- **Empty but valid searches** finish `VALID_EMPTY` with zero `account-found` charges. Broaden industry/location.
- **Provider outages** finish `UPSTREAM_FAILED` so you can retry. Useful search-level rows are kept as `PARTIAL` when some enrichment is missing.
- Google discovery is public-web recall, matching the live SN grid only where public pages overlap.
- Retry once on `UPSTREAM_FAILED`. If it repeats, set `providerOrder` to `sociavault-first` or reduce `maxResults`.

### Builder's note

I built this after looking at cookieless Store competitors that advertise "Sales Navigator account scrape without cookies" while returning people-shaped rows and a two-step `request_id` poll. ScrapeCreators and SociaVault have **no Sales Navigator endpoint** — they expose public LinkedIn company pages and Google Search. The honest product is therefore: decode the SN Account URL, search `site:linkedin.com/company`, enrich the public page. That is why headcount is dropped instead of faked, why `/sales/company/{id}` is rejected, and why people-search URLs are routed to the sibling actor.

### Responsible use

Use this Actor on account lists you are authorized to process for legitimate sales, recruiting, or research. It reads **public web search results and public LinkedIn company pages only**. It does not log into LinkedIn, does not use your cookies, and is not a Sales Navigator seat exporter. Follow GDPR, CCPA, LinkedIn's terms, and any local law that applies to your outreach.

This tool is provided for lawful public-data collection. You are responsible for how you use the output.

# Actor input Schema

## `salesNavigatorUrl` (type: `string`):

Full URL from the address bar of a LinkedIn Sales Navigator Account search, for example https://www.linkedin.com/sales/search/company?query=(filters:List((type:INDUSTRY,values:List((text:Software Development,selectionType:INCLUDED))))). The actor decodes industry, location, company name, and keywords, then finds matching PUBLIC company pages via Google. SN-only filters such as headcount and revenue are skipped with a notice. NOT a people-search URL and NOT a /sales/company/{id} detail link.

## `industry` (type: `string`):

Manual filter used when you are NOT pasting a Sales Navigator URL. Industry phrase quoted on Google (e.g. Software Development). Combine with location or companyName to narrow. If salesNavigatorUrl is provided, that URL's industry filter takes precedence. NOT a NAICS code.

## `location` (type: `string`):

Manual filter: city, region, or country to match against public company pages (e.g. San Francisco or United Kingdom). Leave empty for worldwide. Overridden by a salesNavigatorUrl when one is supplied. NOT a postal code lookup.

## `companyName` (type: `string`):

Manual filter: company name to search for on public LinkedIn company pages (e.g. Stripe). Quoted as a phrase so Google matches it exactly. Overridden by a salesNavigatorUrl. NOT a LinkedIn company URL — put those in companyUrls.

## `keywords` (type: `string`):

Manual filter: extra keywords added to the Google query (e.g. fintech payments). Supports Google boolean operators. Merged with a salesNavigatorUrl's decoded keywords. NOT a Sales Navigator URL.

## `companyUrls` (type: `array`):

Optional list of public LinkedIn company page URLs (https://www.linkedin.com/company/<slug>). When provided and no salesNavigatorUrl is set, search is skipped and these pages are enriched directly. Use this for an exported account list you already have. NOT personal /in/ profiles and NOT /sales/company/{id} seat URLs.

## `enrichAccounts` (type: `boolean`):

When true (default), each company is fetched for public firmographics: industry, employee count, size, headquarters, website, founded year, followers, description. When false, only search-level fields (name, URL, industry signal) are returned at the lower price. Enrichment is billed per successfully enriched account.

## `maxResults` (type: `integer`):

Maximum number of company accounts to return (1-250). Caps both search depth and total event cost. Defaults to 25. Prefill is 3 so Apify quality tests finish inside five minutes. In direct-URL mode it caps how many of the supplied URLs are processed.

## `resultsRegion` (type: `string`):

Two-letter country code for the Google search region (e.g. US, GB, DE). Affects which localized company pages surface. Defaults to US. NOT the company's headquarters filter — use the location field or Sales Navigator URL for that.

## `providerOrder` (type: `string`):

Which public-data provider to try first for Google discovery and company enrichment; the other is the automatic fallback. scrapecreators-first (default) is usually cheaper; sociavault-first routes through SociaVault first. Leave on default unless you specifically want SociaVault first. Both run cookieless with the same public data.

## Actor input object example

```json
{
  "salesNavigatorUrl": "https://www.linkedin.com/sales/search/company?query=(filters:List((type:INDUSTRY,values:List((text:Software Development,selectionType:INCLUDED))),(type:REGION,values:List((text:San Francisco Bay Area,selectionType:INCLUDED)))))",
  "industry": "Financial Services",
  "location": "London",
  "companyName": "Stripe",
  "keywords": "fintech payments",
  "companyUrls": [
    "https://www.linkedin.com/company/stripe"
  ],
  "enrichAccounts": true,
  "maxResults": 3,
  "resultsRegion": "GB",
  "providerOrder": "scrapecreators-first"
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset items containing company name, LinkedIn URL, industry, size, HQ, website, and optional enrichment.

## `summary` (type: `string`):

Run summary including outcome, itemsPushed, provider diagnostics, and billing counters.

## `runSummary` (type: `string`):

Machine-readable RUN\_SUMMARY record mirroring OUTPUT for integrations that read RUN\_SUMMARY directly.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "industry": "Software Development",
    "location": "San Francisco",
    "enrichAccounts": true,
    "maxResults": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/linkedin-sales-account-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "industry": "Software Development",
    "location": "San Francisco",
    "enrichAccounts": True,
    "maxResults": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/linkedin-sales-account-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "industry": "Software Development",
  "location": "San Francisco",
  "enrichAccounts": true,
  "maxResults": 3
}' |
apify call khadinakbar/linkedin-sales-account-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,khadinakbar/linkedin-sales-account-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/52YUfbphiN2IesXUi/builds/2A5Oz2R52S0EGARU8/openapi.json
