# LinkedIn Company Details API (`deepmine/linkedin-company-pages`) Actor

LinkedIn company scraper with no login: company data by URL, ID, name or keyword search. Website, industry, size, exact employees, followers, HQ and offices, recent posts, similar companies, funding and investors, plus website emails and phones when found. Filter by size, industry and country.

- **URL**: https://apify.com/deepmine/linkedin-company-pages.md
- **Developed by:** [DeepMine](https://apify.com/deepmine) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 companies

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?

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 Details API

A LinkedIn company scraper with no login: paste company URLs, page names, LinkedIn company IDs or plain company
names (or search by keyword and place) and get one row per company with website, industry, size, exact employee
count, followers, headquarters and offices, recent posts, similar companies and funding.

| Logo | Company | Industry | Size | Employees | Followers | Headquarters | Founded | Total raised |
|---|---|---|---|---|---|---|---|---|
| ![](https://media.licdn.com/dms/image/v2/D560BAQE2ZfJyfn-VCg/company-logo_200_200/B56ZlyKwpUKIAI-/0/1758557047806/stripe_logo?e=2147483647\&v=beta\&t=En4Hm6NDGbDTYCoOQ0Ko5Ne2gylx0WRb0yL2GlOeXBQ) | Stripe | Technology, Information and Internet | 5,001-10,000 | 16,669 | 1,761,588 | South San Francisco, California | 2010 | $9.42B |
| ![](https://media.licdn.com/dms/image/v2/D4E0BAQGwvcv_1tHZ4w/company-logo_200_200/B4EZW25gE2GgAI-/0/1742530282185/notionhq_logo?e=2147483647\&v=beta\&t=TjS2vynSBhOF0lA-8mORNZFzuAfpcyYNPU6g90Uq1Ng) | Notion | Software Development | 501-1,000 | 7,204 | 1,128,071 | San Francisco, California | 2016 | $344M |
| ![](https://media.licdn.com/dms/image/v2/D4D0BAQEzSLb1H_OSDw/company-logo_200_200/B4DZ_SrkZgGwAE-/0/1785946065210/n26_logo?e=2147483647\&v=beta\&t=zhsvO4IJJ3aPI0iYFesWLbgz433vFb3pFdKOKHy7eZc) | N26 | Financial Services | 1,001-5,000 | 2,197 | 339,088 | Berlin, Berlin | 2013 | $1.72B |

<sub>Collected 2026-10-11 with this Actor's prefilled input.</sub>

**$1.39 per 1,000 companies on Starter** ($1.69 Free, $1.19 Scale, $0.99 Business). The prefilled run (10
companies, funding and open jobs included) costs about $0.014 on Starter.

No LinkedIn account, no cookies. Each row also has the headquarters street address and every office card,
specialties, founded year, logo and cover image, the company's recent posts with reactions, comments, videos and
documents, the paid-page flag, affiliated pages, products, people shown as working there, funding (total raised,
last round, investors) when CB Insights has a public profile for the company, and optionally up to 10 open jobs
and the emails and phones on the company's own website. Filter by industry, size, headquarters country, city and
followers; companies a filter leaves out are free.

### Use cases

- **Lead lists and CRM enrichment:** turn a list of company names, websites or LinkedIn URLs into website, industry, size,
  headquarters and (with the add-on) the emails and phones the company publishes.
- **Market maps:** search a keyword in a place (`fintech` in `New York`, `plumbing` in `Chicago`) and filter by
  size, industry and country.
- **Investor and sales research:** funding, last round and investors next to employee count and growth signals
  such as open jobs and recent posts.
- **Competitor tracking:** schedule the run and compare followers, employees, posts and open jobs over time.

### How much does it cost?

You pay per company delivered: **$1.69 per 1,000 companies on the Free plan, $1.39 on Starter, $1.19 on Scale
and $0.99 on Business**. No start fee. Each company is charged once per run, even when two of your inputs lead to
it. A page that doesn't exist, a name that matches nothing, a page LinkedIn refuses and a company your filters
leave out are not charged. Funding, posts, similar companies and open jobs are included.

**Companies found by keyword search** cost the same, with no search fee. **Website contacts ($)** are an add-on:
**$1.00 per 1,000 companies**, charged only for companies whose website gave an email or a phone number.

### Input

- **Companies**: one per line. Any of:
  - a company page URL: `https://www.linkedin.com/company/stripe`, a country site (`de.linkedin.com/company/...`),
    a showcase page (`/showcase/...`), with or without `?trk=` and `/jobs/` endings;
  - a page name: `stripe`, `two-maids-a-mop-sugar-land`;
  - a numeric LinkedIn company id: `2135371`;
  - a company website: `stripe.com` or any URL on it (the company page that lists that website; for a site that
    redirects to another one, like `notion.so` to notion.com, the page named like it that lists where it redirects;
    a page listing another website is never returned, and a website no page lists is free);
  - a company name: `Two Maids & A Mop` (found with LinkedIn's company search).
- **Search by keyword** and **Search location**: company pages the web search engines list for the keyword (and
  place), e.g. `fintech` in `New York`. **Max companies per search** (default 25, up to 1,000) counts companies
  delivered after your filters. Result pages are read from DuckDuckGo, Yahoo and Bing, together with the same
  search split by company size, company type, founding year and size x type (125 narrower
  searches, which list many more pages), then Google result pages while they keep finding new companies. A company the narrower searches find is delivered only when its
  headquarters or an office is in the search location and its page mentions the keyword; the others are free
  (`notRelevant` in the run summary). **Headquarters in the search location only** keeps just the companies
  headquartered there, from every search (left-out companies are free).
  A search ends when the engines list no new company pages, or when the pages it reads stop turning up
  companies, because they're outside the search location, don't pass your filters or are gone (`readLimit`).
  The run summary says which.
  A narrower search's result whose snippet looks like results that kept missing is skipped unread (free). A keyword
  nothing is found for, or that the search engines turn away, ends the run normally, with a note in the status.
  How deep a search goes depends on how many company pages the engines list and how many of them are in the
  place: where few are, the search ends early. Our Apify runs on 2026-10-06 (build 0.4.44, 2,048 MB, max 1,000
  per search, no filters, default settings; 4 runs of biotech in Boston, in an ordinary Yahoo hour). Since
  2026-10-10 a search reads further, as long as the pages it reads keep turning up companies:

  | Search | Companies | Run time | Headquarters or an office in the place | Headquarters in the place |
  |---|---|---|---|---|
  | biotech, Boston | 31-80 (4 runs) | 16-33 s | 90.3-93.5% | 80-91% |

  Few Boston biotech pages are listed with the place: the search ends early when most pages it reads are elsewhere.
  Larger markets go deeper: fintech in New York reached its max of 300 in 87 s.

  Companies the plain keyword search lists are delivered as listed (most are in the place); companies the
  narrower searches find only when their headquarters or an office is there.
- **Include funding** (on in the example; off by default for API calls, as it about doubles the run time) and
  **Include website contacts ($)**.
- **Filters**: industry words, company size ranges, headquarters country, city or region (headquarters or any
  office), minimum followers. They combine, apply to every input, and filtered-out companies are free.
- **Companies per name**: for company names, how many matches to collect, best first (1 to 100).
- **Include open jobs**: up to 10 of the company's open jobs per row.
- **Recent posts per company**: 0 to 10.
- **Max companies**, **Proxy** (Advanced). The run uses Apify datacenter proxy (a datacenter group or country, or
  your own proxy URLs, work too), since LinkedIn serves company pages to datacenter connections. With a
  residential pick, a page datacenter keeps refusing gets its last try on your residential proxy, at no extra
  cost to you.

### Output

One row per company, in this order:

`logo`, `logo100`, `name`, `tagline`, `descriptionSnippet`, `description`, `linkedinUrl`, `website`, `contactEmails`,
`contactPhones`, `contactSources` (with Include website contacts), `industry`, `industryId`, `industryHierarchy`, `companySize`, `employeeCountMin`,
`employeeCountMax`, `employeeCount`, `followerCount`, `companyType`, `isPaidPage`, `foundedYear`, `totalFundingUsd`,
`lastFundingRound`, `lastFundingDate`, `lastFundingAmountUsd`, `lastFundingInvestors`, `fundingRoundCount`,
`fundingRounds`, `investors`, `investorCount`, `companyStatus`, `fundingSource`, `fundingLookup` (with Include
funding), `headquarters`, `headquartersStreet`, `headquartersCity`, `headquartersRegion`,
`headquartersPostalCode`, `headquartersCountry`, `headquartersCountryName`, `specialties`, `locations`, `offices`, `coverImage`, `jobsUrl`, `pageType`,
`universalName`, `companyId`, `recentPosts`, `lastPostedAt`, `similarCompanies`, `affiliatedPages`, `products`,
`employeesShown`, `recentJobs` (with Include open jobs), `input`, `searchSource`, `matchedName`, `scrapedAt`.

- `employeeCount` is LinkedIn's "all N employees" (members who list the company), next to the size range the page
  states (`companySize`, `employeeCountMin`, `employeeCountMax`).
- `recentPosts`: `postUrl`, `text`, `postedAt`, `postedAgo`, `reactions`, `comments`, `reactionTypes` (the reaction
  kinds LinkedIn shows, e.g. `LIKE`, `PRAISE`), `isEdited`, `images`, `hasVideo`, `videoUrl` (MP4), `videoPoster`, `videoCaptionsUrl` (the video's captions file),
  `document` (`title`, `pageCount`, `coverImage`, `fileUrl`, `fileUrlExpiresAt`) for carousel/PDF posts, `links`,
  `resharedFrom` with `resharedFromUrl`, `resharedFromHeadline` and `resharedFromPhoto` (the
  reshared post's author), `resharedText`, `resharedImages`, `resharedVideoUrl`, `resharedPostUrl`, `activityUrn`. `postedAt` is exact for most posts; when LinkedIn only shows an age
  ("3w") it's the date that age points to.
- `offices`: every office card with `address`, `street`, `city`, `region`, `postalCode`, `country`, `countryName`, `isPrimary`
  and `mapUrl`. `isPaidPage` is LinkedIn's paid (Premium) company page flag.
- `similarCompanies` and `affiliatedPages`: `name`, `linkedinUrl`, `industry`, `location`, `logo`.
- `products`: `name`, `category`, `description`, `url`, `image`. `employeesShown`: `name`, `headline`, `profileUrl`,
  `photo`. `recentJobs`: `title`, `location`, `postedAt`, `jobUrl`, `jobId`.
- Funding comes from the company's public CB Insights profile, used only when the profile's website is the one
  on the LinkedIn page. `lastFundingRound` is the newest round that raised money: share sales, secondary trades,
  valuation changes, credit lines and anything after an IPO don't count. `fundingLookup` says why a row has no
  funding: `notFound` (no profile with the same website), `noWebsite`, `blocked` or `timeout`.
- `contactEmails` and `contactPhones`: what the company's website (home page and up to 2 contact or about pages)
  publishes; only emails on the company's own domain (or a free-mail inbox) are kept.
- `industryId` and `industryHierarchy` come from LinkedIn's industry list (V2), e.g. Stripe: 6, "Technology,
  Information and Media" > "Technology, Information and Internet".
- Unknown values are `null`. Logos and covers are LinkedIn links that don't expire.

How often a field is filled depends on the company: on 149 company pages (2026-10-03) website 97%, exact employee
count 99%, logo 98%, posts 91%, street address 91%, founded year and specialties 67%, affiliated pages 31%,
products 12%; 52% were paid pages. Of their 1,337 posts, 97% list reaction kinds, 24% have a video (all with
a video link) and 9% are documents. Funding was found for all 10 prefilled companies (2 runs of 2) and for 18
of 18 well-known tech, fintech and consumer brands on 2026-10-11; on 2026-10-03 for 3-5 of 10-11 New York fintech
pages (many small companies have no CB Insights profile). Website contacts (2026-10-03) were found for 4 of the
10 companies prefilled then, 3-6 of 10-11 fintech pages, 12 of 50 London fintech and marketing companies, and 1 of
6 Dallas plumbers.

The run summary (`OUTPUT` in the key-value store) lists every input with its result: `ok`, `duplicate`,
`notFound`, `unresolved` (a name or id with no company page LinkedIn shows logged out), `blocked` (LinkedIn
refused it after retries; school pages are refused this way), `filteredOut` (with the filter it failed),
`notRelevant` (found by a size-split search but outside the search location or without the keyword on its page)
or `skipped` (your max cost, Max companies, a full search or the run's time limit). It also lists each keyword
search with the result pages read, which engine found each company (`foundBy`), the search engine and Google
requests sent, the companies delivered and why it ended.

### What it doesn't return

Some LinkedIn company data is only shown to signed-in members, and this Actor never signs in: the employee
breakdown by location, school or job function, the page's own phone number, the verified badge and the page's
call-to-action button link. Website contacts often cover the phone.

### Speed

Companies go out in batches as soon as their pages are read, from 16 Apify datacenter connections at once; the
first company is read and stored while the run is still starting up. The default memory follows your input (the
run needs about 140 MB either way): **512 MB for up to 25 companies**, which spend most of their time waiting on
LinkedIn and CB Insights; **1,024 MB for 26-100**; and **2,048 MB for longer lists and for search keywords**,
which parse thousands of pages. Apify gives a run CPU in proportion to its memory, so there more memory costs
about the same and finishes sooner (400 websites: 62 s at 2,048 MB, 264 s at 512 MB; fintech in New York, 150
companies: 27-42 s at 2,048 MB, 49-75 s at 1,024 MB). A memory you set in Run options wins.

Our Apify runs (0 failed, every delivered company charged once; the prefill on 2026-10-11 at 512 MB, the
others at 2,048 MB: 1,000 URLs on 2026-10-05 with build 0.4.20, the searches on 2026-10-06 with build 0.4.44):

| Input | Companies | First row stored (from the run's start) | All delivered (run time) |
|---|---|---|---|
| The 10 prefilled companies, with funding and open jobs (512 MB) | 10 | 1.7-1.8 s | 5.6-5.7 s |
| 1,000 company URLs, 10 posts each (2,048 MB) | 1,000 | 2.8 s | 92 s (250 by 25 s, 500 by 47 s) |
| Keyword search: fintech in New York, max 130 (6 runs, 2,048 MB) | 130 | 2.0-3.2 s | 21-26 s to the 130th row |

Deeper searches (max 1,000) took 16-33 seconds for 31-80 companies in a thin market (biotech in Boston; see
the table under Input) and about 90 seconds for 300 in fintech in New York. Funding
lookups are the slow part of a lookup run: CB Insights turns away more than half of the datacenter IPs, so a run
keeps the connections it lets in, and a lookup gives up after 7 seconds.

### Related Actors

- [LinkedIn Jobs Search](https://apify.com/deepmine/linkedin-jobs-search): every open job a company posts, with
  full descriptions.
- [LinkedIn Ad Library API](https://apify.com/deepmine/linkedin-ad-library): the ads a company runs on LinkedIn.

### Feedback

Missing a field you need, or a page that won't load? Open an issue on the Actor's Issues tab. If the data helped
you, a review on the Store helps other buyers find it.

# Actor input Schema

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

One per line: a LinkedIn company page URL (any country site, showcase pages too), a page name like <code>stripe</code>, a numeric company ID, a company website like <code>stripe.com</code> (the page that lists it), or a company name like <code>Two Maids & A Mop</code>. Pages that don't exist are free.

## `searchKeywords` (type: `array`):

Find company pages by what they do, e.g. <code>fintech</code> or <code>plumbing</code>. Each keyword is one search (up to 💯 Max companies per search). Companies found this way cost the same as any other company: no search fee. Empty = no search.

## `searchLocation` (type: `string`):

Narrows every keyword search to pages that name this place, e.g. <code>New York</code> or <code>Germany</code>. Companies with their headquarters or an office there count. Empty = anywhere.

## `searchHeadquartersOnly` (type: `boolean`):

Keep only companies headquartered in the Search location (by default a company with an office there counts too). Left-out companies are free.

## `maxResultsPerSearch` (type: `integer`):

Companies to collect and pay for per keyword (after filters). A search also ends when the search engines list no new company pages, or early when most of the company pages it reads are outside the search location, don't pass your filters or are gone.

## `includeFunding` (type: `boolean`):

Adds total raised, last round (date, size, investors) and the investor list from the company's public CB Insights profile, matched by website. No extra charge; the run takes about twice as long.

## `includeContacts` (type: `boolean`):

Adds the emails and phone numbers the company's own website publishes (home and contact pages). Charged per company only when something is found.

## `industries` (type: `array`):

Keep companies whose LinkedIn industry contains one of these whole words, e.g. <code>software</code>. Empty = any industry.

## `companySizes` (type: `array`):

Keep companies in these LinkedIn size ranges. Empty = any size.

## `headquartersCountries` (type: `array`):

Keep companies headquartered in these countries. Empty = any country.

## `locations` (type: `array`):

Keep companies with their headquarters or an office in one of these places (whole words), e.g. <code>Austin</code>. Empty = anywhere.

## `minFollowers` (type: `integer`):

Keep companies with at least this many followers, e.g. 1000. Empty = no minimum.

## `maxResultsPerName` (type: `integer`):

For lines that are company names: how many matching companies to collect, best match first. 1 = just the best match.

## `includeRecentJobs` (type: `boolean`):

Adds up to 10 of the company's open LinkedIn jobs (title, location, date, link) in recentJobs. No extra charge.

## `maxPostsPerCompany` (type: `integer`):

How many of the company's newest posts to keep (text, date, reactions, comments, images). LinkedIn shows up to 10 without login; 0 leaves posts out.

## `maxCompanies` (type: `integer`):

Stop after this many companies in total. Empty = no limit (your max cost per run still applies).

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

Leave as is: Apify datacenter proxy works for LinkedIn company pages. With a residential pick, a page datacenter keeps refusing gets its last try on residential, at no extra cost to you.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/stripe",
    "https://www.linkedin.com/company/openai",
    "Notion",
    "https://www.linkedin.com/company/spotify",
    "nvidia",
    "https://www.linkedin.com/company/ramp",
    "https://www.linkedin.com/company/anthropicresearch",
    "https://de.linkedin.com/company/n26",
    "Databricks",
    "https://www.linkedin.com/company/perplexity-ai"
  ],
  "searchHeadquartersOnly": false,
  "maxResultsPerSearch": 25,
  "includeFunding": true,
  "includeContacts": false,
  "maxResultsPerName": 1,
  "includeRecentJobs": true,
  "maxPostsPerCompany": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `summary` (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": [
        "https://www.linkedin.com/company/stripe",
        "https://www.linkedin.com/company/openai",
        "Notion",
        "https://www.linkedin.com/company/spotify",
        "nvidia",
        "https://www.linkedin.com/company/ramp",
        "https://www.linkedin.com/company/anthropicresearch",
        "https://de.linkedin.com/company/n26",
        "Databricks",
        "https://www.linkedin.com/company/perplexity-ai"
    ],
    "includeFunding": true,
    "includeRecentJobs": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/linkedin-company-pages").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": [
        "https://www.linkedin.com/company/stripe",
        "https://www.linkedin.com/company/openai",
        "Notion",
        "https://www.linkedin.com/company/spotify",
        "nvidia",
        "https://www.linkedin.com/company/ramp",
        "https://www.linkedin.com/company/anthropicresearch",
        "https://de.linkedin.com/company/n26",
        "Databricks",
        "https://www.linkedin.com/company/perplexity-ai",
    ],
    "includeFunding": True,
    "includeRecentJobs": True,
}

# Run the Actor and wait for it to finish
run = client.actor("deepmine/linkedin-company-pages").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": [
    "https://www.linkedin.com/company/stripe",
    "https://www.linkedin.com/company/openai",
    "Notion",
    "https://www.linkedin.com/company/spotify",
    "nvidia",
    "https://www.linkedin.com/company/ramp",
    "https://www.linkedin.com/company/anthropicresearch",
    "https://de.linkedin.com/company/n26",
    "Databricks",
    "https://www.linkedin.com/company/perplexity-ai"
  ],
  "includeFunding": true,
  "includeRecentJobs": true
}' |
apify call deepmine/linkedin-company-pages --silent --output-dataset

```

## MCP server setup

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

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/we24hTchRb5ymJZZl/builds/Ry7fGisN8vsPd7ghe/openapi.json
