# LinkedIn Company Finder & Enricher — Domain → Profile (`yonecode/linkedin-company-enricher`) Actor

Domain → LinkedIn URL + full company profile (industry, size, HQ, contacts, socials). From $2/1K results. No cookie for Fast Mode. Pay per result.

- **URL**: https://apify.com/yonecode/linkedin-company-enricher.md
- **Developed by:** [Yone](https://apify.com/yonecode) (community)
- **Categories:** Lead generation, E-commerce, AI
- **Stats:** 87 total users, 15 monthly users, 98.4% runs succeeded, 9 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 fast result.s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Company Finder & Enricher 🔍

> **Domains in. Full LinkedIn company profiles out.**
> Built for sales prospecting, CRM enrichment, lead generation, and supplier discovery — at any scale.

<p align="center">
  <a href="https://apify.com/yonecode/linkedin-company-enricher"><img alt="Apify Actor" src="https://apify.com/actor-badge?actor=yonecode/linkedin-company-enricher"></a>
  <a href="#-pricing--pay-per-result"><img alt="Pricing" src="https://img.shields.io/badge/pricing-pay--per--result-blue"></a>
  <a href="https://github.com/YoneCode/linkedin-company-enricher"><img alt="GitHub" src="https://img.shields.io/badge/GitHub-docs%20%26%20examples-181717?logo=github&logoColor=white"></a>
</p>

Turn any list of company domains into rich LinkedIn company data — name, industry, size, headquarters, followers, contacts, and social URLs — all in one click. No setup, no scraping infrastructure, no manual searches.

---

### ✨ Why use it

- **Two modes, one Actor.** Free LinkedIn URL discovery, *or* paste your LinkedIn cookie for full profiles.
- **Pay only for hits.** Domains with no LinkedIn page are saved to a separate `misses` dataset and **never billed**.
- **Bulk-friendly.** Paste a domain list, or upload a CSV with a `domain` / `website` column.
- **Country-aware.** Optional country filter prioritises the right regional LinkedIn page (US, UK, Germany, France, …).
- **E-commerce supplier flag.** Automatically tags wholesalers, manufacturers, and distributors plus their product categories.
- **Predictable output.** Every result follows the same fixed schema — no missing keys, no surprise fields.

---

### 🎯 Two modes

<table>
  <thead>
    <tr><th></th><th>Fast Mode</th><th>Deep Mode</th></tr>
  </thead>
  <tbody>
    <tr><td><b>LinkedIn cookie required</b></td><td>❌ No</td><td>✅ Yes</td></tr>
    <tr><td><b>Time per domain</b></td><td>~1–3 s</td><td>~3–8 s</td></tr>
    <tr><td><b>Fields returned</b></td><td>4 (URL, country, confidence, domain)</td><td>20+ (full profile)</td></tr>
    <tr><td><b>Best for</b></td><td>Domain → LinkedIn URL matching at scale</td><td>Full enrichment for sales / CRM / outreach</td></tr>
    <tr><td><b>Per result</b></td><td>$0.002 &nbsp;|&nbsp; $0.0035 with socials</td><td>$0.006 &nbsp;|&nbsp; $0.008 with socials</td></tr>
  </tbody>
</table>

---

### 🚀 How to use it

#### On the Apify Console

1. Open the Actor and paste your domains in the **Domain Names** field — one per row.
2. Leave **LinkedIn Cookies** empty for Fast Mode, or paste your `li_at` value for Deep Mode.
3. Click **Run**. Results stream into the dataset as each domain finishes — export to JSON, CSV, Excel, or HTML.

#### Via the Apify API — Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("yonecode/linkedin-company-enricher").call(run_input={
    "domains": ["tesla.com", "airbnb.com", "zoom.us"],
    # "linkedin_cookies": "AQEDA...",  # uncomment for Deep Mode
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["domain"], "→", item["linkedin_url"])
````

#### Via the Apify API — Node.js

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('yonecode/linkedin-company-enricher').call({
    domains: ['tesla.com', 'airbnb.com', 'zoom.us'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Via cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/yonecode~linkedin-company-enricher/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["tesla.com", "airbnb.com"]}'
```

***

### 📥 Input

<table>
  <thead>
    <tr><th>Field</th><th>Type</th><th>Default</th><th>What it does</th></tr>
  </thead>
  <tbody>
    <tr><td><code>domains</code></td><td>array of strings</td><td>—</td><td>Domain names, one per row (e.g. <code>tesla.com</code>). Optional if you supply <code>csv_file_url</code>.</td></tr>
    <tr><td><code>csv_file_url</code></td><td>string (URL)</td><td><code>""</code></td><td>URL of a CSV with a <code>domain</code> or <code>website</code> column. Use this for bulk uploads of 1,000+ rows.</td></tr>
    <tr><td><code>include_company_details</code></td><td>boolean</td><td><code>true</code></td><td>Extract industry, size, HQ, type, specialties, description, followers, website. Deep Mode only.</td></tr>
    <tr><td><code>include_contact_info</code></td><td>boolean</td><td><code>true</code></td><td>Best-effort email and phone extraction from the company website. Deep Mode only.</td></tr>
    <tr><td><code>extract_socials</code></td><td>boolean</td><td><code>false</code></td><td>Find Facebook, Instagram, and X/Twitter URLs. Adds 3 extra searches per domain — leave off if you don't need socials.</td></tr>
    <tr><td><code>country_filter</code></td><td>array of strings</td><td><code>[]</code></td><td>ISO country codes to prioritise (e.g. <code>["US", "DE", "NL"]</code>). Empty = automatic.</td></tr>
    <tr><td><code>max_concurrent</code></td><td>integer</td><td><code>5</code></td><td>Parallel domains (1–10). Higher is faster, but higher values raise auth-wall risk in Deep Mode.</td></tr>
    <tr><td><code>proxy_configuration</code></td><td>object</td><td>Apify RESIDENTIAL</td><td>Proxy settings for Deep Mode. Datacenter proxies are <b>not supported</b> — LinkedIn blocks them on sight.</td></tr>
    <tr><td><code>linkedin_cookies</code></td><td>string (secret)</td><td><code>""</code></td><td>Your LinkedIn <code>li_at</code> cookie (or full Cookie header / JSON cookie array). Empty = Fast Mode.</td></tr>
  </tbody>
</table>

***

### 📤 Output

#### Fast Mode — sample item

```json
{
  "domain": "airbnb.com",
  "linkedin_url": "https://www.linkedin.com/company/airbnb",
  "linkedin_country": "us",
  "match_confidence": 0.99,
  "company_name": null,
  "industry": null,
  "company_size": null,
  "headquarters": null,
  "company_type": null,
  "specialties": null,
  "description": null,
  "website": null,
  "follower_count": null,
  "email": null,
  "phone": null,
  "facebook_url": null,
  "instagram_url": null,
  "twitter_url": null,
  "is_ecommerce_supplier": null,
  "product_categories": null,
  "error": null
}
```

#### Deep Mode — sample item

```json
{
  "domain": "airbnb.com",
  "linkedin_url": "https://www.linkedin.com/company/airbnb",
  "linkedin_country": "us",
  "match_confidence": 0.99,
  "company_name": "Airbnb",
  "industry": "Software Development",
  "company_size": "5001-10000 employees",
  "headquarters": "San Francisco, CA, US",
  "company_type": "Public Company",
  "specialties": "travel accommodations, collaborative economy, hospitality",
  "description": "Airbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home...",
  "website": "https://airbnb.com",
  "follower_count": 3252959,
  "email": null,
  "phone": null,
  "facebook_url": "https://www.facebook.com/airbnb/",
  "instagram_url": "https://www.instagram.com/airbnb/",
  "twitter_url": "https://twitter.com/Airbnb",
  "is_ecommerce_supplier": false,
  "product_categories": null,
  "error": null
}
```

#### All output fields

<table>
  <thead>
    <tr><th>Field</th><th>Type</th><th>Fast</th><th>Deep</th><th>Notes</th></tr>
  </thead>
  <tbody>
    <tr><td><code>domain</code></td><td>string</td><td>✅</td><td>✅</td><td>Input domain, normalised.</td></tr>
    <tr><td><code>linkedin_url</code></td><td>string</td><td>✅</td><td>✅</td><td>LinkedIn company page URL.</td></tr>
    <tr><td><code>linkedin_country</code></td><td>string</td><td>✅</td><td>✅</td><td>Country code parsed from the LinkedIn subdomain (lowercase ISO).</td></tr>
    <tr><td><code>match_confidence</code></td><td>float (0–1)</td><td>✅</td><td>✅</td><td>How sure we are the URL matches the domain.</td></tr>
    <tr><td><code>company_name</code></td><td>string</td><td>—</td><td>✅</td><td></td></tr>
    <tr><td><code>industry</code></td><td>string</td><td>—</td><td>✅</td><td></td></tr>
    <tr><td><code>company_size</code></td><td>string</td><td>—</td><td>✅</td><td>e.g. <code>"5001-10000 employees"</code>.</td></tr>
    <tr><td><code>headquarters</code></td><td>string</td><td>—</td><td>✅</td><td>City, State, Country.</td></tr>
    <tr><td><code>company_type</code></td><td>string</td><td>—</td><td>✅</td><td>Public, Private, Non-profit, etc.</td></tr>
    <tr><td><code>specialties</code></td><td>string</td><td>—</td><td>✅</td><td>Comma-separated.</td></tr>
    <tr><td><code>description</code></td><td>string</td><td>—</td><td>✅</td><td>About text from the LinkedIn company page.</td></tr>
    <tr><td><code>website</code></td><td>string</td><td>—</td><td>✅</td><td>Outbound website link.</td></tr>
    <tr><td><code>follower_count</code></td><td>integer</td><td>—</td><td>✅</td><td></td></tr>
    <tr><td><code>email</code></td><td>string</td><td>—</td><td>✅</td><td>Best-effort, when published on the company website.</td></tr>
    <tr><td><code>phone</code></td><td>string</td><td>—</td><td>✅</td><td>Best-effort, when published on the company website.</td></tr>
    <tr><td><code>facebook_url</code></td><td>string</td><td>—</td><td>opt-in</td><td>Set <code>extract_socials: true</code>.</td></tr>
    <tr><td><code>instagram_url</code></td><td>string</td><td>—</td><td>opt-in</td><td>Set <code>extract_socials: true</code>.</td></tr>
    <tr><td><code>twitter_url</code></td><td>string</td><td>—</td><td>opt-in</td><td>Set <code>extract_socials: true</code>.</td></tr>
    <tr><td><code>is_ecommerce_supplier</code></td><td>boolean</td><td>—</td><td>✅</td><td>Auto-detected from industry + specialties.</td></tr>
    <tr><td><code>product_categories</code></td><td>list of strings</td><td>—</td><td>✅</td><td><code>null</code> when not a supplier.</td></tr>
    <tr><td><code>error</code></td><td>string</td><td>✅</td><td>✅</td><td><code>null</code> on success.</td></tr>
  </tbody>
</table>

#### Where misses go

Domains with no LinkedIn page (or that hit LinkedIn's login wall in Deep Mode) are saved to a **separate dataset called `misses`** — not the default dataset. This keeps your billable count honest: you only pay for rows that actually carry a LinkedIn URL.

To inspect misses, open the run page → **Storage** tab → select the `misses` dataset.

***

### 💰 Pricing — pay per result

You pay only when a result is delivered. Domains with no LinkedIn page, login-walled pages, and any failed lookups are routed to the `misses` dataset and **never billed**.

<table>
  <thead>
    <tr><th>Event</th><th>What you get</th><th>Price per result</th></tr>
  </thead>
  <tbody>
    <tr>
      <td><code>fast-result</code></td>
      <td>Fast Mode row with a valid LinkedIn URL.</td>
      <td><b>$0.002</b></td>
    </tr>
    <tr>
      <td><code>fast-socials-result</code></td>
      <td>Fast Mode row + Facebook / Instagram / X URLs.</td>
      <td><b>$0.0035</b></td>
    </tr>
    <tr>
      <td><code>deep-result</code></td>
      <td>Full company profile (name, industry, size, HQ, specialties, description, followers, website, email, phone, supplier flag).</td>
      <td><b>$0.006</b></td>
    </tr>
    <tr>
      <td><code>deep-socials-result</code></td>
      <td>Deep result + Facebook / Instagram / X URLs.</td>
      <td><b>$0.008</b></td>
    </tr>
  </tbody>
</table>

#### What you DON'T pay for

- ❌ Domains with no LinkedIn page — saved to `misses`.
- ❌ Pages blocked by LinkedIn's login wall — saved to `misses`.
- ❌ Failed lookups — saved to `misses` with an `error` field explaining what happened.

> 💡 Fresh cookies and larger batches give the highest success rate.

***

### 🎯 Who it's for

#### Sales teams

Match prospect domains from your CRM to LinkedIn company pages. Enrich each row with size, industry, HQ, follower count, and contact info before sending outreach.

#### Recruiters & talent ops

Build company shortlists from a domain list. Filter by company size, industry, and location with one query — no manual LinkedIn searches.

#### Data teams & analysts

Bulk-enrich domains for market analysis, lead scoring, supplier discovery, or competitor mapping. Stream output straight to your warehouse via Apify's API.

#### E-commerce sourcing

Use the built-in `is_ecommerce_supplier` flag and `product_categories` field to surface manufacturers, wholesalers, and distributors from a list of vendor domains.

***

### ⚖️ How this compares

Specs and prices below are the publicly listed values on each provider's Apify Store page at the time of writing — verify on each page before purchase.

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Per result</th>
      <th>Cookie required</th>
      <th>Fields</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><b>This Actor (Fast Mode)</b></td>
      <td><b>$0.002</b></td>
      <td>No</td>
      <td>4 (URL, country, confidence, error)</td>
    </tr>
    <tr>
      <td><b>This Actor (Deep Mode)</b></td>
      <td><b>$0.006</b></td>
      <td>Yes (your <code>li_at</code>)</td>
      <td>~20 (full profile + supplier flag + contacts)</td>
    </tr>
    <tr>
      <td><a href="https://apify.com/harvestapi/linkedin-company">harvestapi/linkedin-company</a></td>
      <td>~$4 / 1k results</td>
      <td>No</td>
      <td>~12</td>
    </tr>
    <tr>
      <td><a href="https://apify.com/anchor/linkedin-company-url-finder">anchor/linkedin-company-url-finder</a></td>
      <td>URL-only tier</td>
      <td>No</td>
      <td>1 (URL)</td>
    </tr>
  </tbody>
</table>

**Pricing changes — always check the current price on each provider's page before running.**

***

### 🔐 Deep Mode setup — getting your `li_at` cookie

Deep Mode requires a valid LinkedIn session cookie:

1. Log into LinkedIn in your browser.
2. Open **DevTools** (F12) → **Application** tab → **Cookies** → `https://www.linkedin.com`.
3. Find the cookie named `li_at` and copy its **Value**.
4. Paste the value into the Actor's **LinkedIn Cookies** field.

The Actor accepts three cookie formats:

- **Bare value**: `AQEDAT...`
- **Cookie header**: `li_at=AQE...; JSESSIONID=...`
- **JSON array** exported by extensions like *EditThisCookie*.

> **Privacy.** Your cookie is used only during the run and is **never stored or logged** by the Actor. We strongly recommend creating a dedicated LinkedIn account for scraping to avoid risk to your primary profile.

***

### ❓ FAQ

<details>
<summary><b>Why didn't the Actor find a LinkedIn page for my domain?</b></summary>

A few possibilities:

- The company genuinely has no LinkedIn presence.
- The page exists but uses a name that didn't surface in the top search results.
- The domain is a redirect or holding-company domain that has no dedicated LinkedIn page.

The row will appear in the `misses` dataset with an explanatory `error` message — and you are not billed for it.

</details>

<details>
<summary><b>What's the difference between Fast Mode and Deep Mode?</b></summary>

**Fast Mode** is *URL discovery only* — it returns the LinkedIn page URL plus country and a match-confidence score. No cookie needed. Great for top-of-funnel lead-gen where you just need to match domains to LinkedIn pages. Billed at `fast-result`.

**Deep Mode** requires your LinkedIn cookie. The Actor pulls each company's full profile (industry, size, HQ, description, follower count, contacts, supplier flag, and more) — typically in about a second per company on a fresh cookie. Billed at `deep-result`.

</details>

<details>
<summary><b>Why does Deep Mode want my LinkedIn cookie?</b></summary>

Without being logged in, LinkedIn shows only a stripped-down public view of company pages and pushes most visitors to a login wall. With your LinkedIn cookie, the Actor can pull the full company profile from your own logged-in session — fast, reliable, and complete.

</details>

<details>
<summary><b>Will using my LinkedIn cookie get my account banned?</b></summary>

LinkedIn does monitor for automation. Risk is low at modest volume (under a few hundred profiles per day), but **never use your primary account**. Create a separate LinkedIn profile dedicated to data work. The Actor uses residential proxies and human-like behaviour to minimise risk — but no setup is 100% safe.

</details>

<details>
<summary><b>Can I bulk-process thousands of domains?</b></summary>

Yes. Use the `csv_file_url` input with a CSV containing a `domain` or `website` column. Deep Mode concurrency is capped at **10** (default 5) to keep success rates high. For very large jobs we recommend running 5,000-domain chunks rather than a single 50,000-domain run — easier to retry if anything goes wrong.

</details>

<details>
<summary><b>Why is <code>extract_socials</code> off by default?</b></summary>

Each domain with socials enabled does 3 extra searches (Facebook, Instagram, X), which adds run time and a small cost. Most users only need LinkedIn data, so socials are opt-in.

</details>

<details>
<summary><b>What proxy do you use? Can I use my own?</b></summary>

Deep Mode uses Apify's **Residential** proxy by default. You can override `proxy_configuration` to provide your own — but datacenter proxies will not work; LinkedIn blocks them on sight.

</details>

<details>
<summary><b>How accurate is <code>match_confidence</code>?</b></summary>

It's a 0.0–1.0 score measuring how closely the LinkedIn page name matches your input domain. **≥ 0.85** is reliable; **0.70–0.85** is almost certainly right but worth a sanity-check; **below 0.70** is rare and usually means the company uses an unusual name on LinkedIn.

</details>

<details>
<summary><b>Does this work for personal LinkedIn profiles (<code>/in/...</code>)?</b></summary>

No — this Actor is scoped to **company pages** (`/company/...`).

</details>

***

### ⚠️ Limits

- **Login wall.** A small percentage of LinkedIn pages refuse anonymous browsing. In Deep Mode these are detected and saved to `misses` (no charge).
- **Email / phone recall.** Best-effort scan of the company website. Companies that hide contact info behind forms or CAPTCHAs will return `null`.
- **Concurrency cap.** Deep Mode is capped at 10 parallel domains (default 5). Higher concurrency means more login-wall rejections.
- **Non-Latin domains.** Currently limited to standard ASCII domain names.

***

### 📄 Terms of use

© 2026 Yonecode. Run the Actor as a service through the Apify platform under the standard Apify Store [Terms of Service](https://apify.com/terms-of-use). Source code is proprietary and not redistributed.

***

### 📧 Contact & support

- **Built by:** [Yonecode](https://apify.com/yonecode)
- **Email:** <YoneCodee@proton.me>
- **Issues / feature requests:** Submit feedback on the Apify Store page or via email.

***

<sub>linkedin scraper, linkedin company scraper, domain to linkedin, company enrichment api, b2b data enrichment, sales prospecting tools, lead generation api, crm enrichment, email finder, company data api, linkedin data extractor, supplier discovery, ecommerce supplier finder, company intelligence, b2b contact data, sales automation, linkedin company search, company url finder, domain enrichment</sub>

# Actor input Schema

## `domains` (type: `array`):

Add domain names (e.g., tesla.com). One per row. Optional if you supply a 'csv\_file\_url' instead.

## `csv_file_url` (type: `string`):

URL to a CSV file containing domains (one per row, column header 'domain' or 'website'). Use this for bulk uploads of 1,000+ domains. Overrides the 'domains' field if provided.

## `include_company_details` (type: `boolean`):

When enabled, the Actor will navigate to each LinkedIn company page and extract: company name, industry, size, headquarters, type, specialties, description, followers, and website. Disable for faster URL-only results.

## `include_contact_info` (type: `boolean`):

Attempt to extract email addresses and phone numbers from the company's LinkedIn page and linked website. Note: contact data is not always available on LinkedIn; this is a best-effort extraction.

## `extract_socials` (type: `boolean`):

Find Facebook, Instagram, and Twitter/X profile URLs for each company. Uses enhanced search sources — no external API keys required. Adds 3 extra Google searches per domain, so leave off unless you need socials.

## `country_filter` (type: `array`):

Prioritize specific LinkedIn country domains (e.g., \['US', 'DE', 'NL']). Leave empty for automatic detection. Useful when targeting companies in specific regions (e.g., EU suppliers).

## `max_concurrent` (type: `integer`):

Number of domains to process in parallel. Higher = faster but uses more proxy resources and is more likely to trigger LinkedIn rate-limits. Recommended: 5 for first runs, raise to 10 once you confirm your cookies survive a 100-domain test.

## `proxy_configuration` (type: `object`):

Proxy settings for LinkedIn access. RESIDENTIAL proxy group is required for reliable LinkedIn company page extraction. Do not use datacenter proxies — LinkedIn will block them instantly. Only used in Deep Mode.

## `linkedin_cookies` (type: `string`):

Paste your LinkedIn `li_at` cookie value (or the full `Cookie:` header, or a JSON cookie-export array). When provided, the Actor runs in DEEP MODE — it launches a browser with your authenticated session and extracts the full company profile (industry, size, HQ, specialties, followers, contacts, socials, supplier detection — 20 fields total). Leave EMPTY for FAST MODE: Google-only lookup that returns just `linkedin_url` + `match_confidence` in under 5s per domain, no browser launched. **Cookie pool**: paste multiple cookie exports (one JSON array per line, or a single JSON array containing cookies from multiple accounts) to distribute load across LinkedIn accounts for large batches.

## `voyager_use_proxy` (type: `boolean`):

When enabled (default), the LinkedIn Voyager API calls go through your Apify residential proxy session — same IP as the browser fallback. When disabled, Voyager calls go directly from the Apify container IP (datacenter). Disabling saves a few cents per 1,000 results in residential bandwidth, but LinkedIn may rate-limit datacenter IPs at volume. Browser fallback ALWAYS uses residential proxy regardless of this flag.

## Actor input object example

```json
{
  "domains": [
    "tesla.com",
    "airbnb.com",
    "zoom.us"
  ],
  "csv_file_url": "",
  "include_company_details": true,
  "include_contact_info": true,
  "extract_socials": false,
  "country_filter": [],
  "max_concurrent": 5,
  "proxy_configuration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "voyager_use_proxy": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

One record per input domain. Fast Mode returns linkedin\_url + match\_confidence. Deep Mode returns all 21 fields including company name, industry, size, headquarters, followers, contacts, and social URLs.

# 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 = {
    "domains": [
        "tesla.com",
        "airbnb.com",
        "zoom.us"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("yonecode/linkedin-company-enricher").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 = { "domains": [
        "tesla.com",
        "airbnb.com",
        "zoom.us",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("yonecode/linkedin-company-enricher").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "domains": [
    "tesla.com",
    "airbnb.com",
    "zoom.us"
  ]
}' |
apify call yonecode/linkedin-company-enricher --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=yonecode/linkedin-company-enricher",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Company Finder & Enricher — Domain → Profile",
        "description": "Domain → LinkedIn URL + full company profile (industry, size, HQ, contacts, socials). From $2/1K results. No cookie for Fast Mode. Pay per result.",
        "version": "1.3",
        "x-build-id": "XM6WobOTp3oBOuG7z"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/yonecode~linkedin-company-enricher/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-yonecode-linkedin-company-enricher",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/yonecode~linkedin-company-enricher/runs": {
            "post": {
                "operationId": "runs-sync-yonecode-linkedin-company-enricher",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/yonecode~linkedin-company-enricher/run-sync": {
            "post": {
                "operationId": "run-sync-yonecode-linkedin-company-enricher",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "domains": {
                        "title": "Domain Names",
                        "type": "array",
                        "description": "Add domain names (e.g., tesla.com). One per row. Optional if you supply a 'csv_file_url' instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "csv_file_url": {
                        "title": "CSV File URL (Optional)",
                        "type": "string",
                        "description": "URL to a CSV file containing domains (one per row, column header 'domain' or 'website'). Use this for bulk uploads of 1,000+ domains. Overrides the 'domains' field if provided.",
                        "default": ""
                    },
                    "include_company_details": {
                        "title": "Extract Company Details",
                        "type": "boolean",
                        "description": "When enabled, the Actor will navigate to each LinkedIn company page and extract: company name, industry, size, headquarters, type, specialties, description, followers, and website. Disable for faster URL-only results.",
                        "default": true
                    },
                    "include_contact_info": {
                        "title": "Extract Contact Information",
                        "type": "boolean",
                        "description": "Attempt to extract email addresses and phone numbers from the company's LinkedIn page and linked website. Note: contact data is not always available on LinkedIn; this is a best-effort extraction.",
                        "default": true
                    },
                    "extract_socials": {
                        "title": "Extract Social Media URLs",
                        "type": "boolean",
                        "description": "Find Facebook, Instagram, and Twitter/X profile URLs for each company. Uses enhanced search sources — no external API keys required. Adds 3 extra Google searches per domain, so leave off unless you need socials.",
                        "default": false
                    },
                    "country_filter": {
                        "title": "Country Filter (Optional)",
                        "type": "array",
                        "description": "Prioritize specific LinkedIn country domains (e.g., ['US', 'DE', 'NL']). Leave empty for automatic detection. Useful when targeting companies in specific regions (e.g., EU suppliers).",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "max_concurrent": {
                        "title": "Max Concurrent Domains",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of domains to process in parallel. Higher = faster but uses more proxy resources and is more likely to trigger LinkedIn rate-limits. Recommended: 5 for first runs, raise to 10 once you confirm your cookies survive a 100-domain test.",
                        "default": 5
                    },
                    "proxy_configuration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for LinkedIn access. RESIDENTIAL proxy group is required for reliable LinkedIn company page extraction. Do not use datacenter proxies — LinkedIn will block them instantly. Only used in Deep Mode.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    },
                    "linkedin_cookies": {
                        "title": "LinkedIn Cookies (Deep Mode)",
                        "type": "string",
                        "description": "Paste your LinkedIn `li_at` cookie value (or the full `Cookie:` header, or a JSON cookie-export array). When provided, the Actor runs in DEEP MODE — it launches a browser with your authenticated session and extracts the full company profile (industry, size, HQ, specialties, followers, contacts, socials, supplier detection — 20 fields total). Leave EMPTY for FAST MODE: Google-only lookup that returns just `linkedin_url` + `match_confidence` in under 5s per domain, no browser launched. **Cookie pool**: paste multiple cookie exports (one JSON array per line, or a single JSON array containing cookies from multiple accounts) to distribute load across LinkedIn accounts for large batches."
                    },
                    "voyager_use_proxy": {
                        "title": "Use residential proxy for Voyager API calls (Advanced)",
                        "type": "boolean",
                        "description": "When enabled (default), the LinkedIn Voyager API calls go through your Apify residential proxy session — same IP as the browser fallback. When disabled, Voyager calls go directly from the Apify container IP (datacenter). Disabling saves a few cents per 1,000 results in residential bandwidth, but LinkedIn may rate-limit datacenter IPs at volume. Browser fallback ALWAYS uses residential proxy regardless of this flag.",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
