# Company Domain Finder (`maximedupre/company-domains`) Actor

Resolve company names to likely official websites or domains. Get match status, available social profile links, and useful related subdomains, with an optional country or region hint for ambiguous names.

- **URL**: https://apify.com/maximedupre/company-domains.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Business, SEO tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 company matches

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

### 🔎 Find company domains from company names

Research teams, sales ops, and developers can turn company names into likely official website or domain candidates, match status, available social profile links, and useful related subdomains. That gives you a starting set of public links to review, and a country or region hint can guide names that may refer to more than one company.

- Search a company name for a likely domain with **[Domain Name Search](https://apify.com/maximedupre/company-domains/examples/domain-name-search)**.
- Resolve a name to a likely official website with **[Find Official Company Website](https://apify.com/maximedupre/company-domains/examples/find-official-company-website)**.
- Review available social profile links with **[Official Company Website](https://apify.com/maximedupre/company-domains/examples/official-company-website)**.
- Add a location hint for an ambiguous name with **[Company Website Lookup](https://apify.com/maximedupre/company-domains/examples/company-website-lookup)**.
- Check a batch of company names with **[Company Domain Search](https://apify.com/maximedupre/company-domains/examples/company-domain-search)**.

#### 📦 Review company match data

Each saved row covers one submitted company name. The row gives you a likely website or domain, a status that shows whether the match needs review, available social profile links, and useful related subdomains when they are found.

**Returned fields**

- `companyName` keeps the submitted company name.
- `websiteUrl` is the likely official website or domain candidate.
- `matchStatus` is `confirmed` or `needs_review`.
- `socialProfiles` contains available LinkedIn, X, Facebook, Instagram, YouTube, and GitHub profile links.
- `relatedSubdomains` contains useful company-owned subdomain URLs when they are found.

#### ▶️ Resolve names in a simple run

1. Open the Actor input.
2. Add one or more company names to `companyNames`.
3. Add `countryOrRegion` when a name could match more than one place.
4. Start the Actor and open the default dataset.
5. Review rows with `needs_review` before using the website candidate.

**What to expect**

Each submitted name is handled independently, so one uncertain name does not hide the other names in the run. Social profile links and related subdomains are public links that were available for the company. They are not a guarantee that every account is active, owned by the company, or listed.

#### ⚙️ Input

Submit company names in a simple list. Add one optional country or region hint when a company name is geographically ambiguous.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `companyNames` | array of strings | Required. Names of the companies to resolve. The Actor returns an independent company match row for each submitted name. |
| `countryOrRegion` | string | Optional. Country or region hint to guide a name that could match more than one place. |

**Input example**

This example is copied from the public input of a successful current-beta default-input run.

```json
{
  "companyNames": [
    "OpenAI",
    "Stripe"
  ]
}
```

#### 🧾 Output

The Actor exposes a link to the default dataset. Open that dataset to review the company match rows.

**Dataset link**

| Field | Type | What it does |
| --- | --- | --- |
| `dataset` | string | Link to the default dataset that contains the company match rows. |

**Company match row**

| Field | Type | What it does |
| --- | --- | --- |
| `companyName` | string | Submitted company name for this row. |
| `websiteUrl` | string | Likely official website or domain candidate for the company. |
| `matchStatus` | string | `confirmed` when the identity evidence supports the match, or `needs_review` when you should review it. |
| `socialProfiles` | object | Available company profile links on major social networks. |
| `socialProfiles.linkedin` | string | LinkedIn company profile URL, when found. |
| `socialProfiles.x` | string | X profile URL, formerly known as Twitter, when found. |
| `socialProfiles.facebook` | string | Facebook company profile URL, when found. |
| `socialProfiles.instagram` | string | Instagram company profile URL, when found. |
| `socialProfiles.youtube` | string | YouTube company profile URL, when found. |
| `socialProfiles.github` | string | GitHub company profile URL, when found. |
| `relatedSubdomains` | array of strings | Useful company-owned subdomain URLs, such as support, careers, blog, or developer sites, when found. |

The Actor returns one row shape. Social profile keys and related subdomain values depend on what public sources expose, so the lists are not guaranteed to be complete.

**Genuine current-beta row**

This complete row came from the current beta build.

```json
{
  "companyName": "Shopify",
  "websiteUrl": "https://www.shopify.com/",
  "matchStatus": "confirmed",
  "socialProfiles": {
    "linkedin": "https://www.linkedin.com/company/shopify",
    "x": "https://x.com/Shopify",
    "facebook": "https://www.facebook.com/Shopify",
    "instagram": "https://www.instagram.com/shopify",
    "youtube": "https://www.youtube.com/@shopify",
    "github": "https://github.com/shopify"
  },
  "relatedSubdomains": [
    "https://help.shopify.com/",
    "https://community.shopify.com/"
  ]
}
```

#### 💳 Pricing

**Pricing model**

This Actor uses pay-per-event pricing. The primary event applies to each company match saved to the default dataset. The Pricing panel shows the current rate for your plan.

**Buyer-facing event**

**Company match**

One submitted company name gets a likely website or domain, available social links, and a review status.

#### 🔌 Integrations

**Dataset access**

Open the default dataset in Apify or read it through the dataset API URL shown in the Output tab.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### What does needs\_review mean?

It means the available identity evidence was not strong enough for a confirmed match. Review the website candidate and its links before relying on it.

##### What happens when one company name is ambiguous?

That row is marked `needs_review`. Other submitted names still receive their own independent outcomes.

##### Can I add a country or region hint?

Yes. Set `countryOrRegion` when the company name could refer to more than one place.

##### Does the Actor verify every social profile?

No. It returns available public profile links, but it does not promise that every account is active, owned by the company, or exhaustive.

##### Can I submit a domain to find its company?

No. This Actor starts with company names. It does not provide reverse lookup from a domain to a company.

##### Does it list every company subdomain?

No. It returns useful related subdomains when they are found, not an exhaustive subdomain list.

### 📝 Changelog

**v0.0** (30-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~company-domains/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [LinkedIn Company Profile Scraper](https://apify.com/maximedupre/linkedin-company-scraper): Enrich a resolved company with public LinkedIn profile facts and related pages.
- [Website URL Crawler & Link Extractor](https://apify.com/maximedupre/website-url-crawler): Map pages and links from a website found in the dataset.
- [Website Email & Contact Scraper](https://apify.com/maximedupre/website-emails-scraper): Find public contact emails on a resolved company website.
- [Website Tech Stack Detector — CMS & Ecommerce](https://apify.com/maximedupre/cms-detector): Check public CMS and technology details for a resolved website.
- [Business Address Scraper](https://apify.com/maximedupre/business-address-scraper): Find published business addresses on a resolved company website.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `companyNames` (type: `array`):

Enter one or more company names. The Actor returns a separate result for each name and flags matches that need review.

## `countryOrRegion` (type: `string`):

Optional. Add a country or region when the company name could match more than one place.

## Actor input object example

```json
{
  "companyNames": [
    "OpenAI",
    "Stripe"
  ],
  "countryOrRegion": "Canada"
}
```

# Actor output Schema

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

Open the company match rows in the default dataset.

# 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 = {
    "companyNames": [
        "OpenAI",
        "Stripe"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/company-domains").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 = { "companyNames": [
        "OpenAI",
        "Stripe",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/company-domains").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 '{
  "companyNames": [
    "OpenAI",
    "Stripe"
  ]
}' |
apify call maximedupre/company-domains --silent --output-dataset

```

## MCP server setup

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

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/9MadJTS2KzncQjKLk/builds/bkwpIPG8Ed59ORaoH/openapi.json
