# Company Domain Finder — Name to Website, Logo & Socials (`memo23/company-domain`) Actor

Turn a list of company names into each company's official website domain, logo, description and social profiles (LinkedIn, X, Facebook, Instagram, YouTube, GitHub). Picks the right company when several share a name, and checks the homepage to confirm it.

- **URL**: https://apify.com/memo23/company-domain.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 company 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

## Company Domain Finder — Name to Website, Logo & Socials

Turn a list of company names into each company's **official website domain**, logo, description and **social profiles** (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, GitHub, TikTok). Paste names, get one row per company. No API key, no login.

### Why use this actor

- **Picks the right company when names collide.** Name search ranks by popularity, so "Anthropic" first suggests anthropics.com. Every suggestion is scored against the name you gave, and the homepage of the best matches is opened to confirm which one is really that company.
- **Social profiles from the company's own site.** LinkedIn, X, Facebook, Instagram, YouTube, GitHub and TikTok links come from the homepage, so they are the profiles the company itself points to. Share buttons and single posts are skipped.
- **A confidence score on every row.** `high` when the name and the domain both match (or one matches and the homepage confirms it), `medium` for one signal, `low` otherwise. Filter on it before you import.
- **Country hint.** Set `country` and the brand's site for that country wins: "Lidl" with `country: "Germany"` returns lidl.de, without it lidl.com.
- **You pay only for companies found.** A name with no match still gets a row (`found: false`), and it is not charged.

### How it works

1. Each name goes to a public company-name search, which returns candidate companies with their domains.
2. Candidates are scored: exact name match, domain matching the name, shared words, country ending.
3. The homepages of the top three are opened in parallel. The best-scored one whose title or site name carries the company's name wins.
4. From that homepage come the title, description, site name, logo (the site's own icon) and social profile links.

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `companies` | array | — | Company names, one per entry. `OpenAI, Inc.` and `openai` both work. |
| `country` | string | — | Optional country name or 2-letter code; prefers that country's domain ending. |
| `fetchWebsite` | boolean | `true` | Open homepages to confirm the match and collect socials. Off = domains only, faster. |
| `maxSocialLinks` | integer | `10` | Cap on the `socialLinks` list. One profile per network is always in its own field. |
| `autoProxyFallback` | boolean | `true` | Retry a homepage that blocked the direct request through a residential proxy. |
| `proxyConfiguration` | object | off | Send every homepage request through your own proxy instead. |

#### Example input

```json
{
  "companies": ["OpenAI", "Stripe", "Anthropic", "Shopify"],
  "country": "US",
  "maxSocialLinks": 10
}
```

### Output

One row per company name in the input:

```json
{
  "company": "OpenAI",
  "found": true,
  "name": "OpenAI",
  "domain": "openai.com",
  "website": "https://openai.com/",
  "logoUrl": "https://openai.com/apple-icon.png?apple-icon.3o0tf8iy4mx7y.png",
  "confidence": "high",
  "siteConfirmsName": true,
  "title": "OpenAI | Research & Deployment",
  "description": "We believe our research will eventually lead to artificial general intelligence, a system ...",
  "siteName": "OpenAI",
  "linkedin": "https://www.linkedin.com/company/openai",
  "twitter": "https://x.com/OpenAI",
  "facebook": null,
  "instagram": "https://www.instagram.com/openai",
  "youtube": "https://www.youtube.com/OpenAI",
  "github": "https://github.com/openai",
  "tiktok": "https://www.tiktok.com/@openai",
  "socialLinks": ["https://x.com/OpenAI", "https://www.youtube.com/OpenAI", "https://www.linkedin.com/company/openai", "https://github.com/openai", "https://www.instagram.com/openai", "https://www.tiktok.com/@openai"],
  "alternatives": [{ "name": "NetSuite OpenAir", "domain": "openair.com" }, { "name": "OpenAIRE Graph", "domain": "openaire.eu" }, { "name": "Openair Frauenfeld", "domain": "openair-frauenfeld.ch" }],
  "country": null,
  "checkedAt": "2026-10-20T12:00:00.000Z"
}
```

A name with no match: `{ "company": "...", "found": false, "reason": "No company with a matching name was found." }`. The run's key-value store also holds `SUMMARY` with the counts and the names not found.

### Pricing

Pay per event: **$0.003 per company found** plus $0.005 per run start. Names that are not found cost nothing.

### FAQ

**Why are some social fields empty?** They are read from the company's homepage. Some sites load their footer links with JavaScript or do not link their profiles at all. The domain and the other fields are still returned.

**Where does `logoUrl` come from?** From the company's homepage: its apple-touch-icon, else its largest declared icon. A site that declares none gets a 128 px favicon link from Google's public favicon service. It is the icon the company uses for itself, which for most companies is the logo mark, not always the full wordmark.

**What does `alternatives` mean?** Other companies that matched the name less well. When `confidence` is `low`, check them.

**Can I get domains only, faster?** Set `fetchWebsite` to `false`. The match is then made on the name and domain alone.

**I have an input saved for another company-domain actor. Will it run here?** Yes. `companies`, `country`, `maxSocialLinks`, `autoProxyFallback` and `proxyConfiguration` are read as they are.

**Does it find emails or employees?** No. For contact emails on a domain, see [Email Finder](https://apify.com/memo23) actors in the memo23 store.

### Support

Found a company it gets wrong? Open an issue on the actor page with the name you used and the domain you expected.

### 🤖 For AI Agents & LLM Apps

Actor: `memo23/company-domain`. Minimal input: `{ "companies": ["Stripe"] }`. One row per input name; `found`, `domain`, `website`, `confidence` (`high`/`medium`/`low`), social profile fields and `alternatives`. Billing: `company-resolved` once per name found; not-found rows are free. Set `country` to break ties between companies that share a name.

### ⚠️ Disclaimer

This actor reads public company information: a public company-name search and each company's own homepage. It does not log in anywhere and does not collect personal data. You are responsible for how you use the results and for complying with the terms of the sites involved and with applicable law.

### SEO Keywords

company domain finder, company name to domain, find company website, company website lookup, domain lookup by company name, company logo API, company social media links, LinkedIn company URL finder, bulk company domain, B2B data enrichment, lead enrichment, company enrichment API

# Actor input Schema

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

One company name per entry, for example <code>Stripe</code> or <code>OpenAI, Inc.</code>. Each is looked up on its own.

## `country` (type: `string`):

Optional. A country name or 2-letter code (<code>US</code>, <code>Germany</code>). The brand's site for that country is preferred: <code>Lidl</code> with <code>Germany</code> returns lidl.de, without a country lidl.com.

## `fetchWebsite` (type: `boolean`):

Open the homepage of the best matches to confirm the company and collect its title, description and social profiles. Turn off for domains only.

## `maxSocialLinks` (type: `integer`):

Cap on the list of social profile links returned per company. One profile per network is always returned in its own field.

## `autoProxyFallback` (type: `boolean`):

When a homepage refuses the direct request (a block page, 403, or an empty answer), try that one page again through a residential proxy.

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

Optional. Send every homepage request through this proxy. Leave it off and let the retry above handle the few sites that block direct requests.

## Actor input object example

```json
{
  "companies": [
    "OpenAI",
    "Stripe",
    "Anthropic"
  ],
  "fetchWebsite": true,
  "maxSocialLinks": 10,
  "autoProxyFallback": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

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

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

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

```

## MCP server setup

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

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/hKJxXTi24KlOGRi9Y/builds/Ux5WfdAec3ONJpZPl/openapi.json
