# Domain to LinkedIn Company Page (`conserving_celerytop/domain-to-linkedin-company-page`) Actor

$1.50 per 1,000 pages found. Enter company domains, get each company's LinkedIn company page URL as its own website links it, with confidence and where it was found. No request to LinkedIn, no personal profiles, no login. Misses are free. Not affiliated with LinkedIn.

- **URL**: https://apify.com/conserving_celerytop/domain-to-linkedin-company-page.md
- **Developed by:** [Don Mangu](https://apify.com/conserving_celerytop) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 linkedin page founds

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/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

## Domain to LinkedIn Company Page

Domain to LinkedIn Company Page turns a list of company domains into LinkedIn company page URLs. For each domain it reads the company's own website and returns the LinkedIn company page that the company itself links to, with a confidence level and the page where the link was found. It never sends a request to LinkedIn, it never returns personal profiles, and it needs no login or cookies. You pay only when a page is found.

Use it to fill the LinkedIn column of a CRM or lead list, to match accounts between tools, or to check that the page you have on file is the one the company links today.

### What you get for each domain

- `linkedinUrl` in one standard form, such as `https://www.linkedin.com/company/acme`
- `linkedinSlug` and `linkedinPageType` (company, school or showcase)
- `confidence`: high, medium or low
- `foundIn` (structured data, header or footer, or page body) and `foundOn` (the page that links it)
- `companyName` when the site states it
- `otherLinkedinPages`: up to 3 more company pages the site links, such as a group's brands
- `status`, `pagesChecked`, `pageUrls`, `finalUrl`, `checkedAt`, `charged` and `error`

### How to find a company's LinkedIn page from its domain

1. Open the Actor and paste your domains into **Domains**, one per line. Full addresses such as `https://www.acme.com/pricing` and work emails such as `info@acme.com` also work.
2. Keep **Minimum confidence** at Medium, or choose High for the strictest matches.
3. Click **Start**. A list of 100 domains usually takes a few minutes.
4. Open the **LinkedIn pages** view, or export the dataset as CSV, Excel or JSON. Join it back to your list on `inputUrl`.

You can also call the Actor through the Apify API, schedule it, or connect it to Make, Zapier or n8n.

### How much does it cost to find LinkedIn company pages?

The price is **$1.50 per 1,000 pages found** ($0.0015 per found page). Domains where no page is found, invalid entries, duplicates, and sites that block the Actor or cannot be reached are free. Apify adds its small standard fee per run start.

Example: you send 2,000 domains and 1,300 of them link a LinkedIn company page at your chosen confidence. You pay 1,300 x $0.0015 = $1.95. The 700 misses cost nothing.

The monthly credit of the Apify Free plan is enough to try the Actor on your own list before you pay anything.

### Input example

```json
{
    "domains": ["apify.com", "hubspot.com", "atlassian.com"],
    "minConfidence": "medium",
    "maxDomains": 100
}
```

### Output example

```json
{
    "inputUrl": "acme.example",
    "domain": "acme.example",
    "companyName": "Acme Widgets",
    "linkedinUrl": "https://www.linkedin.com/company/acme-widgets",
    "linkedinSlug": "acme-widgets",
    "linkedinPageType": "company",
    "confidence": "high",
    "foundIn": "structured data",
    "foundOn": "https://acme.example/",
    "otherLinkedinPages": [],
    "weakerMatchSkipped": false,
    "pagesChecked": 1,
    "pageUrls": ["https://acme.example/"],
    "status": "found",
    "finalUrl": "https://acme.example/",
    "checkedAt": "2026-09-26T12:00:00.000Z",
    "charged": true,
    "error": null
}
```

### Confidence levels

- **High**: the site's structured data, header or footer links the page, and the page name matches the company.
- **Medium**: the site's structured data, header or footer links the page.
- **Low**: the page name matches the company, and it is linked elsewhere on the page.

When the site links a page below your minimum, the row says `weakerMatchSkipped: true` and is free. Run those domains again with a lower minimum if you want them.

### Bulk lists

Use a long list of domains from an Apify Dataset or from a file. Pick the Dataset under **Dataset with the list** and write the name of its field under **Field in the dataset**. Name the field to be sure. If you leave it empty, the Actor takes the first text field it finds. Or paste the web address of a .txt, .csv or .json file under **List file URL**. A .csv file uses its first column. A header row is skipped. The file can be up to 10 MB. Entries from the Dataset and the file are added to the ones typed under **Domains**, and duplicates are removed. **Maximum domains** still limits each run, so raise it for a long list. The price per result does not change.

### Related Actors

- Company Contact Channels: role emails, company social profiles and contact forms from company websites.
- Website Tech Stack Detector: the tools and platforms a website uses.
- RDAP Domain Lookup: registration dates and registrars for domains.

### FAQ

**Does this Actor scrape LinkedIn?** No. It reads only the company's own public website and reports the link that the company publishes there. It never opens linkedin.com, so it does not depend on LinkedIn access and does not use a LinkedIn account.

**Is it legal?** It reads public company web pages, follows each site's robots.txt, reads slowly, and stops when a site says no. The output is a company page address, not personal data. Links to personal profiles are dropped and never stored. Check your own use against the laws that apply to you.

**Why was no page found for some domains?** Some companies do not link LinkedIn on their site, some sites build their pages only in the browser, and some block automated visitors. Those rows are free. The `error` field says why when a site could not be read.

**Why did I get a school or showcase page?** Universities use school pages. A showcase page is returned only when the site links no company page.

**Can I trust the page is current?** The link is what the company's site shows today. Companies sometimes leave an old link after a rename. `foundIn` and `confidence` help you decide which rows to review.

**Is this Actor affiliated with LinkedIn?** No. LinkedIn is a trademark of LinkedIn Corporation. This Actor is independent and is not endorsed by LinkedIn.

**Something went wrong?** Open an issue on the Issues tab with the domain and the run ID, and it will be looked at.

# Actor input Schema

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

Company domains or website addresses, one per line, such as acme.com or https://www.acme.com. A work email address such as info@acme.com also works: its domain is used. Up to 10,000.

## `listDatasetId` (type: `string`):

Pick an Apify Dataset that holds your domains, one entry per item. They are added to the entries typed above.

## `listDatasetField` (type: `string`):

Name of the dataset field that holds the entry. Leave empty to use the first text field it finds.

## `listFileUrl` (type: `string`):

Web address of a .txt, .csv or .json file with your domains, one entry per line. A header row is skipped. Up to 10 MB.

## `minConfidence` (type: `string`):

Return a page only at this confidence or above. High: the site's structured data or its header or footer links the page, and the page name matches the company. Medium: the site's structured data or header or footer links it. Low: a page whose name matches the company, linked anywhere on the page. You pay only for returned pages.

## `maxDomains` (type: `integer`):

Stop after this many domains from your list.

## `pagesPerDomain` (type: `integer`):

Pages read per domain, homepage included: the homepage, then the about page and the contact page. Reading stops as soon as a high-confidence page is found. The price per page found stays the same.

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

Domains read at the same time. Pages of one domain are always read one after another, with a short pause.

## Actor input object example

```json
{
  "domains": [
    "apify.com",
    "hubspot.com",
    "atlassian.com"
  ],
  "minConfidence": "medium",
  "maxDomains": 100,
  "pagesPerDomain": 3,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

inputUrl, companyName, linkedinUrl, linkedinPageType, confidence, foundIn and status. The dataset also has foundOn, otherLinkedinPages, pageUrls and more.

## `details` (type: `string`):

Every field per domain.

## `stats` (type: `string`):

Domains checked, pages found by confidence and by place, pages read, statuses, and whether the spending limit stopped the run.

# 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": [
        "apify.com",
        "hubspot.com",
        "atlassian.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("conserving_celerytop/domain-to-linkedin-company-page").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": [
        "apify.com",
        "hubspot.com",
        "atlassian.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("conserving_celerytop/domain-to-linkedin-company-page").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 '{
  "domains": [
    "apify.com",
    "hubspot.com",
    "atlassian.com"
  ]
}' |
apify call conserving_celerytop/domain-to-linkedin-company-page --silent --output-dataset

```

## MCP server setup

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

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/IxbhkLBGEHzP4ZKHl/builds/eR4zyxjDnGqp322Q7/openapi.json
