# Website Social Profile Finder (`fetch_cat/website-social-profile-finder`) Actor

Find official social profile links from public websites for domain-list enrichment.

- **URL**: https://apify.com/fetch\_cat/website-social-profile-finder.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.74 / 1,000 social profile founds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Social Media Finder — Website Social Profile Finder

Website Social Profile Finder is a **social media finder** for growth teams enriching company domains with reviewable public social-profile links. Supply website URLs or domains and export official-link candidates with the page that cited them, how they were found, and a confidence score.

It finds public links published by the website itself. It does not log in to social networks, scrape profile content, or collect email addresses and phone numbers.

### Who is it for?

- **Growth and sales operations teams** enriching CRM account lists before outreach.
- **Agencies and researchers** checking where a brand publicly maintains a social presence.
- **Data teams** that need source-page evidence alongside a normalized profile URL.

### Website social links scraper: what you get

The Actor keeps purchasable rows in the **default Website Social Profiles dataset** and writes one domain-level outcome to a separate named dataset.

- **Website Social Profiles (default dataset)** — one deduplicated public profile link per row.
- **Domain Social Summaries (`summaries`)** — one outcome row per input website, including websites with no matching profile.

Each profile row retains source-page provenance and deterministic confidence reasons, so a downstream workflow can review candidates rather than trusting an unverified ownership claim.

### Output fields

#### Profile fields

| Field | Meaning |
|---|---|
| `inputUrl`, `domain` | Normalized website input and hostname. |
| `platform`, `profileUrl`, `profileHandle` | Recognized social network and canonical public profile link. |
| `sourcePageUrl`, `discoveryMethod` | Website page that cited the link and whether it was an anchor or Schema.org `sameAs` value. |
| `confidence`, `confidenceReasons` | Deterministic evidence score and reasons to help review officialness. |
| `discoveredAt` | ISO timestamp when the public link was found. |

#### Summary fields

`brandName`, `pagesScanned`, `totalProfilesFound`, `socialProfiles`, `status`, and `warnings` explain the enrichment result for each domain. A summary may be `completed`, `partial`, `empty`, or `blocked`; use `warnings` to review source problems without losing other saved rows.

### Input recipes

Start with a small list and a low page limit. This input finds LinkedIn, Instagram, Facebook, X, and YouTube links referenced by two websites.

```json
{
  "urls": ["https://apify.com", "github.com"],
  "socialPlatforms": ["linkedin", "instagram", "facebook", "x", "youtube"],
  "maxPagesPerSite": 3,
  "confidenceThreshold": 0.6
}
```

#### Input settings

| Input | Use |
|---|---|
| `urls` | Website URLs or raw domains to enrich. |
| `domains` | Optional CRM-style domain list; it is combined with `urls`. |
| `socialPlatforms` | Only return these platforms. |
| `maxPagesPerSite` | Scan 1–10 public same-site pages; start low for faster batches. |
| `confidenceThreshold` | Keep candidates at or above a score from 0 to 1. |

### How the enrichment workflow fits

1. Export a domain list from your CRM, spreadsheet, or lead source.
2. Run a small sample with the platforms that matter to your team.
3. Review `confidenceReasons` and `sourcePageUrl` for sensitive uses.
4. Export the default profile dataset to your enrichment workflow.
5. Use the `summaries` dataset to identify domains needing a different research path.

### Use cases

- Enrich CRM account lists with official brand social links.
- Build social outreach and audience-research lists from company websites.
- Audit whether a website publicly links its current social presence.
- Compare public social coverage across a list of target accounts.

### Tips and limits

- Start with the homepage and a small page limit. The Actor follows only a short list of same-site about, contact, team, company, and social pages.
- A returned link is evidence-backed, not a claim of account ownership. Review `confidenceReasons` and `sourcePageUrl` for sensitive workflows.
- Websites that block automated public requests are reported in the summary; saved results from other websites remain available.
- The Actor intentionally excludes share, login, intent, and tracking links.
- A website that does not publish a selected-platform link can correctly produce an `empty` summary.

### Pricing

A run has a small start charge and charges for each saved social-profile result. Domain summaries are not charged separately. See the Actor’s live [Pricing tab](https://apify.com/fetch_cat/website-social-profile-finder/pricing) for current tiered rates.

### API usage

Use the same JSON keys shown in the input recipe. The default dataset contains profile rows; open `summaries` when you need one outcome per domain.

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/website-social-profile-finder').call({
  urls: ['https://apify.com'],
  socialPlatforms: ['linkedin', 'x'],
  maxPagesPerSite: 2,
  confidenceThreshold: 0.6,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/website-social-profile-finder").call(run_input={
    "urls": ["https://apify.com"],
    "socialPlatforms": ["linkedin", "x"],
    "maxPagesPerSite": 2,
    "confidenceThreshold": 0.6,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### cURL

```bash
curl "https://api.apify.com/v2/acts/fetch_cat~website-social-profile-finder/runs?token=$APIFY_TOKEN" \
  -X POST -H 'Content-Type: application/json' \
  -d '{"urls":["https://apify.com"],"socialPlatforms":["linkedin"],"maxPagesPerSite":2,"confidenceThreshold":0.6}'
```

### MCP and agent usage

Add the Actor as an Apify MCP tool, then give your agent the same input object used in the recipes.

#### Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/website-social-profile-finder"
```

#### Desktop, Cursor, and VS Code

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/website-social-profile-finder"
    }
  }
}
```

Ask the agent to enrich website domains and return the profile rows with `sourcePageUrl` and `confidenceReasons` for review.

#### Example prompts for MCP

- “Find the official LinkedIn and X profiles referenced by `apify.com` and return the source page for each result.”
- “Enrich these domains with Instagram and YouTube profile links, keeping only confidence scores of 0.7 or higher.”
- “Summarize domains that returned no public social profile links so I can queue them for manual research.”

### FAQ

#### What data can I export with this social media finder?

Export deduplicated public profile links, their platform, source page, discovery method, confidence evidence, and a domain-level summary.

#### Can I run Website Social Profile Finder through an API, schedule, or MCP client?

Yes. Send the same JSON input through the Apify API, a scheduled Actor run, or an MCP client and export the default profile dataset or `summaries` dataset.

#### How much does it cost to use Website Social Profile Finder?

Each run has a small start charge and charges per saved social-profile result. See the live [Pricing tab](https://apify.com/fetch_cat/website-social-profile-finder/pricing) for your current tiered rate.

#### Why did a domain return no profiles?

The website may not publish selected-platform links, its links may fall below your threshold, or a public request may have been blocked. Check its summary row and `warnings`.

### Related actors

- [Website Contact Finder](https://apify.com/fetch_cat/website-contact-finder) for broader public contact enrichment.
- [Google Maps Lead Finder](https://apify.com/fetch_cat/google-maps-lead-finder) for location-based lead discovery.
- [Google Search Results Scraper](https://apify.com/fetch_cat/google-search-results-scraper) for search-result discovery.
- [Instagram Scraper](https://apify.com/fetch_cat/instagram-scraper) for public Instagram data workflows.
- [LinkedIn Company Posts Scraper](https://apify.com/fetch_cat/linkedin-company-posts-scraper) for company social-content research.

### Support

Need help with an input or output? Open an issue from the Actor page and include:

- the run ID or run URL (for example, `https://console.apify.com/view/runs/RUN_ID`);
- the non-sensitive input JSON you submitted (remove tokens or private URLs);
- the expected result and the actual profile/summary row you received; and
- a reproducible public website URL, plus the matching summary `status` and `warnings`.

This lets Support reproduce a public-page result without requesting account access or private browsing data.

# Actor input Schema

## `urls` (type: `array`):

Website URLs or raw domains to enrich.

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

Optional CRM-style domain list; combined with Website URLs.

## `socialPlatforms` (type: `array`):

Only return profiles from these platforms.

## `maxPagesPerSite` (type: `integer`):

Homepage plus up to this many public internal pages; use a low value for faster enrichment.

## `confidenceThreshold` (type: `number`):

Only keep links meeting this evidence score (0 to 1).

## Actor input object example

```json
{
  "urls": [
    "apify.com"
  ],
  "domains": [],
  "socialPlatforms": [
    "linkedin",
    "instagram",
    "facebook",
    "x",
    "youtube"
  ],
  "maxPagesPerSite": 3,
  "confidenceThreshold": 0.6
}
```

# Actor output Schema

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

Default dataset containing websiteSocialProfile rows.

# 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 = {
    "urls": [
        "apify.com"
    ],
    "domains": [],
    "socialPlatforms": [
        "linkedin",
        "instagram",
        "facebook",
        "x",
        "youtube"
    ],
    "maxPagesPerSite": 3,
    "confidenceThreshold": 0.6
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/website-social-profile-finder").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 = {
    "urls": ["apify.com"],
    "domains": [],
    "socialPlatforms": [
        "linkedin",
        "instagram",
        "facebook",
        "x",
        "youtube",
    ],
    "maxPagesPerSite": 3,
    "confidenceThreshold": 0.6,
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/website-social-profile-finder").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 '{
  "urls": [
    "apify.com"
  ],
  "domains": [],
  "socialPlatforms": [
    "linkedin",
    "instagram",
    "facebook",
    "x",
    "youtube"
  ],
  "maxPagesPerSite": 3,
  "confidenceThreshold": 0.6
}' |
apify call fetch_cat/website-social-profile-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fetch_cat/website-social-profile-finder"
        }
    }
}

```

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/N3w9R2LstHHfTEWjD/builds/klTZ9HTpWl7YISzEa/openapi.json
