# LinkedIn Company URL - Mass Profile Finder (`socialdataapi/linkedin-company-url-mass-profile-finder`) Actor

LinkedIn Company URL – Mass Profile Finder — Find LinkedIn employee profiles from company URLs in bulk. Extract names, job titles, locations, profile URLs, and company details. Useful for lead generation, recruiting, prospecting, competitor research, and sales intelligence.

- **URL**: https://apify.com/socialdataapi/linkedin-company-url-mass-profile-finder.md
- **Developed by:** [Social Data API](https://apify.com/socialdataapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### LinkedIn Company URL Finder — Company Names to LinkedIn Pages in Bulk

LinkedIn Company URL Finder turns a list of company names into their LinkedIn company pages. Paste names such as Tesla, OpenAI or Stripe and get one row per name: the clean LinkedIn company URL, its page title and the name's position in your list. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a CRM enrichment pipeline. No LinkedIn account or cookies needed. **Paste a whole column of names and scale from a handful to thousands of lookups.**

![LinkedIn Company URL Finder hero: company names to LinkedIn company URLs as JSON](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/b-linkedin-company-url-hero.webp)

***

### What data can I extract with LinkedIn Company URL Finder?

Using this LinkedIn company bulk finder, you will be able to extract the following data for every company name:

| 🏢 Company name as you entered it | 🔢 Position in your input list | 🔗 LinkedIn company page URL | 📝 LinkedIn page title |
|---|---|---|---|

***

### How to use LinkedIn Company URL Finder

Built for anyone who has to find LinkedIn company URL from name lists at scale: one run turns a spreadsheet column of company names into a column of LinkedIn company pages, in the same order.

**Copy to your AI assistant:**

```text
`linkedin-company-url-mass-profile-finder` (Apify Actor ID: socialdataapi/linkedin-company-url-mass-profile-finder, https://apify.com/socialdataapi/linkedin-company-url-mass-profile-finder) is an Apify Actor that finds the LinkedIn company page for each company name and returns structured JSON, one item per name: mySearch (the name as entered), queryId (1-based position in the input list), linkedinUrl (canonical https://www.linkedin.com/company/<slug>, or null when no page was found) and info (the LinkedIn page title, e.g. "Tesla - LinkedIn", or null). Use it whenever someone needs LinkedIn company URLs for a list of companies without a LinkedIn login - CRM enrichment, lead lists, account research, or data cleaning. Run it with curl: curl -X POST "https://api.apify.com/v2/acts/linkedin-company-url-mass-profile-finder/run-sync-get-dataset-items?token=APIFY_TOKEN" -H "Content-Type: application/json" -d '{"queries":["Tesla","OpenAI","Stripe"]}'. Or in Python: ApifyClient("APIFY_TOKEN").actor("linkedin-company-url-mass-profile-finder").call(run_input={"queries": ["Tesla", "OpenAI"]}) then client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: queries (array of strings, company names, required), region (string, "us-en" | "uk-en" | "ca-en" | "au-en" | "in-en" | "wt-wt", default "us-en"), maxConcurrency (integer 1-100, parallel lookups, default 10), querySuffix (string, words added to each name, default "linkedin company"), includeNotFound (boolean, keep a null row for names with no page, default true), requestTimeout (integer 5-120 seconds, default 20), maxRetries (integer 1-12, default 6), retryBackoff (integer 1-10 seconds, default 2), proxyConfiguration (object, Apify Proxy settings, off by default). Rows come back in input order. Each row with a LinkedIn URL is charged as the row_result event; rows without one are not charged. Full input schema, every enum and default, and the complete output field list: GET https://api.apify.com/v2/acts/linkedin-company-url-mass-profile-finder/builds/default
```

#### LinkedIn Company URL Finder MCP Server: use these Actors from ChatGPT, Claude or Cursor

Point your AI assistant at Apify and it can look up LinkedIn company pages on its own: give it company names, get back the LinkedIn URL and page title for each. No glue code, no scraping logic in your prompts.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/linkedin-company-url-mass-profile-finder"
```

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **[LinkedIn Company URL - Mass Profile Finder](https://apify.com/socialdataapi/linkedin-company-url-mass-profile-finder)** in the Apify Store.
3. Paste your company names, one per line.
4. Click **Start** (or send your API request).
5. Download or stream your results in JSON, CSV or Excel.

#### How to scale LinkedIn Company URL Finder to bulk

Paste a whole column of company names into the list for a bulk LinkedIn company search; the actor looks up several names at the same time (10 by default, up to 100) and saves the rows in your input order, each one as soon as it and the rows before it are ready. A name that appears twice gets two rows but only one search. Keep "Include not-found rows" on and row N of the output always belongs to row N of your list, which makes this a drop-in company name to LinkedIn URL step for any spreadsheet or CRM import. For recurring LinkedIn URL enrichment, schedule the run in Apify Console or trigger it from your own code through the API.

***

### ✨ Features

This LinkedIn company profile finder works as a LinkedIn company URL scraper for plain company names, turning them into clean, structured LinkedIn data 🔗. It's ideal for CRM enrichment, lead generation, account research and cleaning company lists.

It returns, per company name:

- **The LinkedIn company page** – always in the clean form `https://www.linkedin.com/company/<slug>`, with country subdomains, subpages such as `/about` and tracking parameters removed
- **The page title** – for example "Tesla - LinkedIn", so you can see at a glance whether the match is right
- **Your own name and position** – the name exactly as you typed it and its place in your list, for easy joins back to your sheet
- **A row for every name** – names with no LinkedIn company page get an empty row instead of disappearing (switchable)

⚡ Look up to 100 names at the same time, in six search regions.

***

### Use cases 💡

- **Sales team** — add LinkedIn pages to a target account list.
- **Recruiter** — open each hiring company's LinkedIn page quickly.
- **RevOps** — enrich CRM company records with LinkedIn URLs.
- **Data team** — dedupe company lists by their LinkedIn page.
- **AI agent builder** — let an LLM find a company's LinkedIn page.

Building an AI agent? [Connect LinkedIn Company URL Finder over MCP](#mcp-integration-for-ai-agents) and let it call the actor on its own.

***

### Why choose this actor?

- **Clean, joinable URLs.** In a recorded run of 30 well-known companies, all 30 came back with their LinkedIn company page, every one in the same `https://www.linkedin.com/company/<slug>` form — Tesla as `tesla-motors`, Notion Labs as `notionhq`, Nestle as `nestle-s-a-`.
- **Output that lines up with your input.** Every name keeps its position, repeated names keep their own rows, and names without a page keep an empty row, so you can paste the result next to your original column.
- **You only pay for found pages.** Rows without a LinkedIn URL, whether no page exists or the lookup failed, are saved but not charged.

***

### ⬇️ Input

![LinkedIn Company URL Finder input: queries, region, maxConcurrency and includeNotFound](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/b-linkedin-company-url-input.webp)

The actor takes a list of company names; the names list is the only required field.

| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
| `queries` | Yes | array | Company names, one per line. | `["Tesla", "OpenAI", "Stripe"]` |
| `region` | No | string | Search region: `us-en`, `uk-en`, `ca-en`, `au-en`, `in-en` or `wt-wt` (worldwide). Default `us-en`. | `"uk-en"` |
| `maxConcurrency` | No | integer | Lookups running at the same time, 1 to 100. Default `10`. | `10` |
| `querySuffix` | No | string | Words added after each name so the LinkedIn company page comes up first. Default `linkedin company`. | `"linkedin company"` |
| `includeNotFound` | No | boolean | Keep an empty row for names with no page found (not charged). Default `true`. | `true` |
| `requestTimeout` | No | integer | Seconds to wait for an answer before retrying, 5 to 120. Default `20`. | `20` |
| `maxRetries` | No | integer | Attempts for a blocked lookup on the last proxy level, 1 to 12. Default `6`. | `6` |
| `retryBackoff` | No | integer | Base wait in seconds between retries, growing per attempt up to about 8 seconds. Default `2`. | `2` |
| `proxyConfiguration` | No | object | Apify Proxy settings. Off by default; a proxy is added automatically if requests get blocked. | `{"useApifyProxy": false}` |

#### Free plan limits

Free plan: up to 20 names per run (all names together) and 200 per month; paid plans have no limit.

#### Example input

```json
{
  "queries": ["Tesla", "OpenAI", "Stripe", "Microsoft", "Notion Labs"],
  "region": "us-en",
  "maxConcurrency": 10,
  "includeNotFound": true
}
```

***

### ⬆️ Output

![LinkedIn Company URL Finder output: mySearch, queryId, linkedinUrl and info fields](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/b-linkedin-company-url-output.webp)

Every company name is one typed, normalized JSON item with the same four fields, in the order of your input list. When no LinkedIn company page is found, `linkedinUrl` and `info` are `null`. Export the dataset as JSON (default), CSV or Excel.

#### Example output

```json
[
  {
    "mySearch": "Tesla",
    "queryId": 1,
    "linkedinUrl": "https://www.linkedin.com/company/tesla-motors",
    "info": "Tesla - LinkedIn"
  },
  {
    "mySearch": "Notion Labs",
    "queryId": 5,
    "linkedinUrl": "https://www.linkedin.com/company/notionhq",
    "info": "Notion - LinkedIn"
  },
  {
    "mySearch": "Unknown Startup 9931",
    "queryId": 6,
    "linkedinUrl": null,
    "info": null
  }
]
```

The first two rows come from a recorded run; the third shows the shape of a name with no LinkedIn company page.

***

### How does it work?

For each name, the actor looks the company up in public web data, together with the search suffix ("linkedin company" by default), takes the first match that is a LinkedIn company page and cleans its URL. It never logs in to LinkedIn and never opens LinkedIn itself, so no LinkedIn account, cookie or session is involved. If the searches start getting blocked, the actor retries and switches to a proxy on its own. It returns only publicly available data — what any visitor sees without logging in. The first matching result wins, so for a common or shared name compare `info` with your name before you rely on the row.

***

### How do you integrate LinkedIn Company URL Finder into your stack?

It works with what you already use: the REST API from any language, MCP for AI agents, and no-code tools. Called over the API, it behaves like a LinkedIn company lookup service: send names, get LinkedIn URLs back as JSON.

#### Using LinkedIn Company URL Finder with the Apify API

```python
import requests

response = requests.post(
    "https://api.apify.com/v2/acts/linkedin-company-url-mass-profile-finder/run-sync-get-dataset-items",
    params={"token": "APIFY_TOKEN"},
    json={"queries": ["Tesla", "OpenAI", "Stripe"]},
)
for row in response.json():
    print(row["queryId"], row["mySearch"], row["linkedinUrl"], row["info"])
```

*Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.*

#### MCP integration for AI agents

Add the Apify MCP server to your AI client with one command:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/linkedin-company-url-mass-profile-finder"
```

This registers LinkedIn Company URL Finder as a tool your agent can call directly. Ask your agent to find LinkedIn company page links for a list of companies and it runs the actor and reads the JSON back. It works in Claude Code, Cursor and Windsurf.

#### No-code tools (n8n, Make, LangChain)

**n8n:** add the Apify node and choose "Run an Actor", or use the HTTP Request node pointed at the run-sync endpoint with your token. Map `linkedinUrl` into a Google Sheet or CRM column in the next node.

**Make:** use the Apify app's "Run an Actor" module, then "Get Dataset Items" to pull the rows into the rest of your scenario.

**LangChain:** install `langchain-apify` and wrap the actor with `ApifyActorsTool("linkedin-company-url-mass-profile-finder")` so your agent can find LinkedIn company pages by name.

***

### Is it legal to scrape LinkedIn company URLs?

Collecting publicly available data is generally lawful, as long as you stay out of logged-in areas and private information. This actor returns only publicly available data — what any visitor sees without logging in. The output is company-level: a company name, a public LinkedIn company page address and its title, with no personal data. LinkedIn's terms still apply to how you use the pages you find, so check them for your use case and consult legal counsel if you plan to republish a compiled list.

***

### Frequently asked questions

#### What fields does LinkedIn Company URL Finder return?

It returns four fields per company name: the name as you entered it, its position in your list, the LinkedIn company page URL and the LinkedIn page title. See [the data fields section](#what-data-can-i-extract-with-linkedin-company-url-finder) for details.

#### Does LinkedIn Company URL Finder require a LinkedIn account or login?

No. Only public data is used, and no credentials are needed. The actor never logs in to LinkedIn.

#### How fast does LinkedIn Company URL Finder run?

Lookups run in parallel, 10 at a time by default and up to 100. In a recorded run, 30 company names were all found in about 4 seconds. Every run reads live search results, not a cache, so a busy moment or a needed proxy adds to the run time.

#### What happens if a company has no LinkedIn page or the lookup is blocked?

With "Include not-found rows" on, the name still gets a row with an empty `linkedinUrl` and `info`, so the output stays in line with your list; with it off, no row is saved for that name. A lookup that keeps getting blocked is retried on fresh IPs and, if it still fails, also gets an empty row. These empty rows are not charged. The log and the run's status message say how many names were found, not found and could not be searched.

#### Can I look up multiple companies at once?

Yes. Paste as many names as you need, one per line; one run looks them all up and returns one row per name in your order.

#### Does LinkedIn Company URL Finder work with Claude, ChatGPT, and other AI agent tools?

Yes — LinkedIn Company URL Finder is available as an MCP tool. Register it in Claude Code, Cursor or Windsurf with `claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/linkedin-company-url-mass-profile-finder"`. Any agent that can call an HTTP endpoint can use the REST API directly.

#### Does LinkedIn Company URL Finder return data in a format LLMs can use directly?

Yes. Each row is typed, normalized JSON with four consistent field names, so there is no HTML parsing and no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool — no transformation step.

#### What happens when LinkedIn changes its layout or updates its anti-bot system?

The actor is maintained, and when the pages it reads change, it is updated so your calls keep returning the same JSON fields with no changes on your end.

#### Can I use LinkedIn Company URL Finder without managing proxies or browser infrastructure?

Yes. No browser is needed, and the proxy and the retries when searches get blocked run on the actor's side. You send one request and get structured JSON back, with no proxy accounts and no maintenance.

#### Which LinkedIn company fields work best for AI training data and RAG indexing?

For RAG, use `linkedinUrl` as the stable key for a company and `info` as its display name on LinkedIn. For training data, pair `mySearch` with `linkedinUrl` and `info` to get name-to-company matches, and filter out rows where `linkedinUrl` is `null`. All four fields are plain strings and integers, so no normalization is needed.

***

### Your feedback

Found a bug or a wrong match? Let us know in the actor's Issues tab. Every report is read, and fixes ship as new versions of the actor.

# Changelog

This Actor's version history is a separate document: https://apify.com/socialdataapi/linkedin-company-url-mass-profile-finder/changelog.md

# Actor input Schema

## `queries` (type: `array`):

One company name per line, for example <code>Tesla</code>, <code>OpenAI</code>, <code>Stripe</code>. Each name gets one row with its LinkedIn company page. Repeated names each get their own row. Free plan users are limited to 20 items per input and 200 items per month; paid plans have no limit.

## `region` (type: `string`):

Region and language used for the lookup. <code>us-en</code> returns English page titles like <i>“Tesla - LinkedIn”</i>.

## `maxConcurrency` (type: `integer`):

How many company lookups run at the same time. Higher is faster but gets blocked sooner, which then needs a proxy.

## `querySuffix` (type: `string`):

Words added after each company name so its LinkedIn company page comes up first. Keep the default unless a whole batch matches badly.

## `includeNotFound` (type: `boolean`):

When on, a company with no LinkedIn page found (or whose lookup failed) still gets a row with an empty URL, so the output lines up 1-to-1 with your input. These empty rows are not charged.

## `requestTimeout` (type: `integer`):

Seconds to wait for an answer before the attempt counts as failed and is retried on a fresh IP. Default is 20.

## `maxRetries` (type: `integer`):

How many attempts a blocked lookup gets on the last proxy level before it is marked as failed. Each attempt uses a fresh IP. Default is 6.

## `retryBackoff` (type: `integer`):

Base wait between retries, growing with each attempt (capped at about 8 seconds). Example: 2 waits about 2, 4, 6 seconds between tries. Default is 2.

## `proxyConfiguration` (type: `object`):

Off by default. When set, your proxy is used from the start. If requests get blocked, the Actor switches to a residential proxy (starting without a proxy, it tries a datacenter proxy first) and keeps the residential proxy for the rest of the run. The proxy country you pick also applies to those fallback proxies.

## Actor input object example

```json
{
  "queries": [
    "Tesla",
    "OpenAI",
    "Stripe"
  ],
  "region": "us-en",
  "maxConcurrency": 10,
  "querySuffix": "linkedin company",
  "includeNotFound": true,
  "requestTimeout": 20,
  "maxRetries": 6,
  "retryBackoff": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One row per input company name, in input order, with the LinkedIn company page URL found for it and its page title. Rows appear while the run is going.

# 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 = {
    "queries": [
        "Tesla",
        "OpenAI",
        "Stripe",
        "Microsoft",
        "Notion Labs"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("socialdataapi/linkedin-company-url-mass-profile-finder").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 = {
    "queries": [
        "Tesla",
        "OpenAI",
        "Stripe",
        "Microsoft",
        "Notion Labs",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("socialdataapi/linkedin-company-url-mass-profile-finder").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 '{
  "queries": [
    "Tesla",
    "OpenAI",
    "Stripe",
    "Microsoft",
    "Notion Labs"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call socialdataapi/linkedin-company-url-mass-profile-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,socialdataapi/linkedin-company-url-mass-profile-finder"
        }
    }
}
```

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/CrDcBCxi3lwKCjpvl/builds/cwOzvqgq2ZWcl7lCV/openapi.json
