# LinkedIn Company Detail And Email Scraper (`kinaesthetic_millionaire/linkedin-company-detail-email-scraper`) Actor

Scrape LinkedIn company profiles by name or URL and find business emails. Extracts description, industry, size, employee count, headquarters, founding year, specialties and followers, with optional employee contact enrichment (name, job title, email) for B2B lead generation. No login required.

- **URL**: https://apify.com/kinaesthetic\_millionaire/linkedin-company-detail-email-scraper.md
- **Developed by:** [Parsedom Inc](https://apify.com/kinaesthetic_millionaire) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $17.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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?

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 Company Detail And Email Scraper

Scrape [LinkedIn](https://www.linkedin.com) company profiles **by company name or URL** and optionally find business email addresses for each company. This LinkedIn company scraper extracts description, website, industry, company size, employee count, headquarters, founding year, company type, specialties, follower count, and full postal address - then enriches each company with publicly listed employee contacts including names, job titles, and email addresses.

<img src="https://i.postimg.cc/x8bxMpYh/how-the-linkedin-company-and-leads-scraper-work.png" alt="How the Linkedin Company And Leads Scraper Apify Actor works: provide input, the actor scrapes the site, get structured output"/>

Built for **B2B lead generation**, sales prospecting, and CRM enrichment. No LinkedIn login or cookies required. Export your results to JSON, CSV, or Excel in one click.

**What you can do with it:**

- **LinkedIn company data scraping** - full company profiles from a plain list of names
- **LinkedIn email finder** - business email addresses, job titles, and seniority for company contacts
- **Bulk company lookup** - hundreds of companies per run, no manual searching
- **Lead list building** - export ready-to-use B2B prospect lists

### ✨ Features

- **Search by company name** - type `Microsoft` or `Zalando SE` and the Actor finds the right LinkedIn company page for you, no URL needed
- **Direct URLs too** - paste a LinkedIn company URL and it is scraped as-is; country subdomains and `/jobs`, `/people` sub-pages are all normalised to the same company
- **Full company profile** - description, website, industry, size, employee count, HQ, founded, type, specialties, followers, and postal address
- **Lead enrichment (optional)** - attaches publicly listed employee contacts (name, role, email, seniority, confidence) to each company record
- **Cross-run caching** - set a project name and companies scraped in earlier runs are skipped, so scheduled runs only return new companies
- **Proxy support** - full Apify Proxy integration, with residential proxies enabled by default

### 🔧 Input Configuration

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| Companies | array | Yes | `parsedom`, `https://www.linkedin.com/company/parsedom/` | Company names to look up, or LinkedIn company URLs. Names are resolved to the matching company page automatically. |
| Enrich with employee contacts | boolean | - | false | Also look up publicly listed employee contacts for each company's website domain. Charged per company that returns at least one contact. |
| Project name (enables caching) | string | - | — | Set a project name to enable cross-run caching. Leave empty to scrape everything every time. |
| Proxy configuration | object | - | Apify Residential | Proxy settings used for all requests. |

**Sample input:**

```json
{
  "companies": ["parsedom"],
  "enrichLeads": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### 📦 Output Data - LinkedIn Company Fields & Emails

The dataset has two views. **Overview** shows company name, industry, size, headquarters, website, followers, and the LinkedIn URL - one row per company. **Leads** shows one row per employee contact found, alongside the company it belongs to, which is the view to export when you want a plain contact list. Each record carries the full field set below; when enrichment is enabled and contacts are found, a `leads` array is nested on the company record.

**Sample output:**

```json
[
  {
    "companyName": "Parsedom",
    "linkedinUrl": "https://www.linkedin.com/company/parsedom/",
    "slug": "parsedom",
    "description": "Simplify your processes and unlock growth potential with our expertly managed data extraction services. We take care of the heavy lifting so you can focus on what matters most Get Started",
    "website": "https://parsedom.com/",
    "industry": "Data Infrastructure and Analytics",
    "companySize": "11-50 employees",
    "employeeCount": 11,
    "headquarters": "london, Ontario",
    "founded": "2019",
    "companyType": "Public Company",
    "specialties": "web development, data scraping, ai automation, AWS Setup, Cloud management, Application development, Database development, User Experience Design (UED), and Custom Software Development",
    "followers": 618,
    "followersText": "618",
    "streetAddress": "396 Forest Ave",
    "city": "london",
    "region": "Ontario",
    "postalCode": "N5R 2K9",
    "country": "CA",
    "logoUrl": "https://media.licdn.com/dms/image/v2/D560BAQHjY6CxYO0b9Q/company-logo_200_200/...",
    "searchQuery": "parsedom",
    "leads": [
      {
        "name": "Jane Doe",
        "email": "jane@example.com",
        "emailType": "personal",
        "position": "Software Engineer",
        "department": "it",
        "seniority": null,
        "phoneNumber": null,
        "linkedinUrl": "https://www.linkedin.com/in/example-profile",
        "confidence": 85
      },
      {
        "name": "Support Contact",
        "email": "info@example.com",
        "emailType": "generic",
        "position": null,
        "department": "support",
        "seniority": null,
        "phoneNumber": null,
        "linkedinUrl": null,
        "confidence": 83
      }
    ],
    "scrapedAt": "2026-09-11T11:22:05.602Z"
  }
]
```

**Leads view** - the same run exported from the `Leads` view, one row per contact:

| name | email | emailType | position | department | confidence | companyName | website |
|------|-------|-----------|----------|------------|------------|-------------|---------|
| Jane Doe | jane@example.com | personal | Software Engineer | it | 85 | Parsedom | https://parsedom.com/ |
| Support Contact | info@example.com | generic | - | support | 83 | Parsedom | https://parsedom.com/ |
| Support Contact | contact@example.com | generic | - | support | 77 | Parsedom | https://parsedom.com/ |
| John Smith | john@example.com | personal | - | - | 85 | Parsedom | https://parsedom.com/ |

Contact names and email addresses above are placeholders - real runs return the actual contacts found for the domain.

### 💡 Use Cases for LinkedIn Company Data

- **B2B lead generation** - build prospect lists with company data and business email addresses from a plain list of company names
- **Sales prospecting** - find decision-makers and their job titles at target accounts before you reach out
- **Lead qualification** - filter prospects by company size, industry, employee count, and headquarters location
- **CRM enrichment** - keep Salesforce, HubSpot, or Pipedrive company records current with size, website, and follower counts
- **Market research & competitor analysis** - profile a market segment or competitor set in bulk
- **Account-based marketing (ABM)** - feed territory planning and ABM campaigns with structured company data
- **Recruitment sourcing** - research companies by industry, size, and location for talent mapping

### 🚀 How to Scrape LinkedIn Company Data

1. [Sign up](https://apify.com/sign-up) for a free Apify account - includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Enter company names or LinkedIn company URLs in the **Companies** field.
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### ⚠️ Limitations & Known Issues

- **Public company pages only** - the Actor reads what LinkedIn shows a logged-out visitor. Personal profiles, employee lists, and anything behind the login are not accessible.
- **Not every field is published** - companies fill in their own profile, so `founded`, `specialties`, or `website` can legitimately be `null` for companies that never set them.
- **Name lookup can resolve to the closest match, not an exact one** - an exact match on the company slug wins. When no candidate matches exactly, the Actor falls back to the closest suggestion from the search results (the shortest slug, usually the parent brand rather than a regional page) rather than returning nothing. For a company with no LinkedIn presence, or one with many similarly-named pages, that fallback can be a different company. **Pass LinkedIn company URLs directly whenever you have them** - it removes the ambiguity, and with enrichment enabled it avoids paying the per-company enrichment charge on a company you did not ask for.
- **Proxies are required** - LinkedIn redirects datacenter and unproxied traffic to its auth wall. Keep the default residential proxy setting enabled or the run will return no data.
- **Rate limiting** - LinkedIn throttles automated traffic. Requests are retried from a fresh IP automatically, so runs succeed but large ones take proportionally longer.
- **Enrichment coverage varies** - contacts are only found for companies with a discoverable website domain and publicly listed addresses. Companies with no findable contacts return no `leads` array, and are not charged.

### 📝 Notes

- **API integration** - This actor can be called as an API from any automation platform (Zapier, Make, n8n, custom scripts).
- **Enrichment is charged per result** - the per-company charge applies only when at least one contact is actually returned. Failed or empty lookups are never charged.

### ❓ Frequently Asked Questions

#### Can I scrape LinkedIn company data without logging in?

Yes. This scraper only reads what LinkedIn shows a logged-out visitor, so you do not need a LinkedIn account, login credentials, or session cookies. Nothing behind the login is accessed.

#### Can this scraper find email addresses from LinkedIn?

It finds publicly listed business email addresses associated with each company's website domain, not addresses taken from LinkedIn profiles themselves. Turn on **Enrich with employee contacts** and each company record gains a `leads` array with names, job titles, departments, seniority, and email addresses where they are publicly available.

#### Do I need a LinkedIn account or cookies?

No. There is no login step and no cookie input.

#### How many companies can I scrape in one run?

There is no hard limit - the Actor scrapes every entry in **Companies**. Start small (3-5) to check the output, then scale up.

#### Can I scrape by company name instead of URL?

Yes, that is the main use case. Type `Microsoft` or `Zalando SE` and the Actor resolves it to the right LinkedIn company page. For exact results, pass LinkedIn company URLs directly - see the Limitations section below.

#### What output formats are supported?

JSON, CSV, Excel, XML, and HTML table - any format the Apify platform exports. The **Leads** view exports one row per contact, which is what you want for a plain contact list.

#### Is scraping LinkedIn company data legal?

This Actor collects only publicly visible company information. Whether your particular use is lawful depends on your jurisdiction, your purpose, and applicable data protection law such as the GDPR when results contain personal data. See the disclaimer below - you are responsible for your own compliance.

#### How much does it cost to run?

You pay for Apify platform usage plus a per-company charge when lead enrichment returns at least one contact. Companies with no contacts found are never charged. New Apify accounts include $5 in free monthly credit.

#### Why did a company name return the wrong company?

When no exact match is found, the Actor falls back to the closest search result rather than returning nothing. Pass the LinkedIn company URL directly to remove the ambiguity - and to avoid paying enrichment on a company you did not ask for.

### 🔗 Other Actors

| Category | Actor | What it does |
|----------|-------|--------------|
| 💼 Lead Generation | [Gelbe Seiten Leads Scraper](https://apify.com/kinaesthetic_millionaire/gelbeseiten-leads-scraper) | Extracts structured business information from gelbeseiten.de (the German Yellow Pages) such as contact details, categories, ratings and geo coordinates. |
| 💼 Lead Generation | [Branchenbuch Leads Scraper](https://apify.com/kinaesthetic_millionaire/branchenbuch) | Scrapes Branchenbuch, a business directory covering Berlin and the surrounding area - service providers, shops, government offices, real estate and more. Scrape companies directly or by category. |
| 💼 Lead Generation | [Booksy Leads Scraper](https://apify.com/kinaesthetic_millionaire/booksy-leads-scraper) | Extracts business profiles from Booksy including names, addresses, phone numbers, emails, social media, and ratings. Built for lead generation in the beauty and wellness industries. |
| 🏢 Company Data & Leads | [Kununu Company and Leads Scraper](https://apify.com/kinaesthetic_millionaire/kununu-company-and-leads-scraper) | Scrapes company profile data from kununu.com, including ratings, industry, headquarters location, and recommendation rate. |
| 💼 Lead Generation | [Hipages Lead Scraper](https://apify.com/kinaesthetic_millionaire/hipages-lead-scraper) | Extracts business details from Hipages including names, contact information and ratings. Supports pagination and proxy configuration, for lead generation and market research. |

### 💬 Disclaimer & Support

This actor only collects data that LinkedIn shows a logged-out visitor - it does not log in, bypass the auth wall, or access private profiles or member data. Beyond LinkedIn it visits only a public search engine to resolve company names, and the lead-enrichment provider when that option is enabled.

**By running this actor you accept sole responsibility and liability for how you use it and for the data you collect.** That includes ensuring your use complies with LinkedIn's Terms of Service, with applicable law in your jurisdiction (including data protection law such as the GDPR where it applies to personal data in enrichment results), and with any other terms that bind you. If you do not accept this, please do not run the actor.

If extraction quality drops or you want a custom apify actor then you can:

- Email us at <info@parsedom.com>
- Visit [parsedom.com](https://parsedom.com)
- Visit our profile on Fiverr: [fiverr.com/s/rEmNqEb](https://www.fiverr.com/s/rEmNqEb)
- Apify public page: [apify.com/kinaesthetic\_millionaire](https://apify.com/kinaesthetic_millionaire)
- You can also contact us if you want to build a custom actor.

Ready to scrape more listings? Add your URLs and start scraping! 🚀

# Actor input Schema

## `companies` (type: `array`):

Company names to look up (e.g. Microsoft, Zalando SE) or LinkedIn company URLs (e.g. https://www.linkedin.com/company/microsoft/). Names are resolved through a web search; when no exact match is found the closest suggestion is used, which may be a different company. Pass LinkedIn company URLs directly for exact results - and to avoid paying enrichment for a company you did not ask for.

## `enrichLeads` (type: `boolean`):

Also look up publicly listed employee contacts (name, role, email, seniority) for each company's website domain and attach them to the company record. Charged per company that returns at least one contact - so pass LinkedIn company URLs rather than names where possible, since a name that resolves to the closest match is still charged.

## `projectName` (type: `string`):

Set a project name to enable cross-run caching. Companies scraped in a previous run of the same project are skipped, so scheduled runs only return new companies. Leave empty to scrape everything every time.

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

Proxy settings used for all requests. LinkedIn shows an auth wall to datacenter traffic, so residential proxies are enabled by default.

## Actor input object example

```json
{
  "companies": [
    "Microsoft",
    "https://www.linkedin.com/company/stripe/"
  ],
  "enrichLeads": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "companies": [
        "Microsoft",
        "https://www.linkedin.com/company/stripe/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kinaesthetic_millionaire/linkedin-company-detail-email-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 = { "companies": [
        "Microsoft",
        "https://www.linkedin.com/company/stripe/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("kinaesthetic_millionaire/linkedin-company-detail-email-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 '{
  "companies": [
    "Microsoft",
    "https://www.linkedin.com/company/stripe/"
  ]
}' |
apify call kinaesthetic_millionaire/linkedin-company-detail-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kinaesthetic_millionaire/linkedin-company-detail-email-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/oo4f3UrgHnnasLxVb/builds/wLGz83xBYYSnFMPI9/openapi.json
