# Social Profile Finder — Creator Accounts Across Platforms (`memo23/social-profile-finder`) Actor

Give it one handle or profile URL and get the same creator's accounts on Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn and more — each with a confidence score and the evidence behind it (bio links, link-in-bio pages, website, matching handle, reciprocal links). No login. Pure HTTP.

- **URL**: https://apify.com/memo23/social-profile-finder.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 17 total users, 17 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 creator resolveds

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

## Social Profile Finder — Find a Creator's Accounts Across Every Platform

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-social-profile-finder.png" alt="Social Profile Finder" width="760">
</p>

**One handle in, all of their accounts out.** Give this Actor an Instagram, TikTok, YouTube, X or Threads profile and it returns the same creator's accounts on the other networks — each with a **confidence score** and the **evidence** behind it, so you can see exactly why a match was made.

> **No login. No cookies. No API key.** Nothing to configure — press Start.

| You give | You get back |
|---|---|
| `https://www.instagram.com/mkbhd` | X, YouTube (main + secondary channels), TikTok, Threads, Discord — scored 0.75–1.00 with evidence |
| `mkbhd` + platform `tiktok` | The same, starting from TikTok |
| A list of 500 creators | One row per creator, resolved in parallel |

### Why use it

- **It shows its work.** Every discovered profile carries an `evidence` array: `source_profile_link`, `link_in_bio`, `website_link`, `same_handle_match`, `display_name_match`, `reciprocal_profile_link`, `verified_profile`. You decide what to trust.
- **Several matches per network are allowed.** A creator with a main channel and two side channels gets all three, ranked — not one guess.
- **It follows the creator's own links.** Bio link, link-in-bio page (Linktree, Beacons, Komi, Pillar, Tap.bio, bio.link, link.me), personal website — the same trail a human would follow.
- **It verifies.** A candidate that links *back* to the source scores 1.0. A handle that merely exists elsewhere scores 0.35 until the display name or a reciprocal link corroborates it.
- **Accepts URLs or bare handles.** Paste whatever you have.
- **Runs as an API.** Standby mode answers `GET /?url=…` with JSON in a few seconds.

### How it works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-social-profile-finder.png" alt="How it works" width="820">
</p>

1. **Read the source profile** — display name, bio, and every outbound URL it exposes (bio link, `bio_links[]`, external URL, URLs pasted in the bio text).
2. **Expand one hop.** Social URLs become candidates directly. Link-in-bio pages and personal websites are fetched and their social links collected.
3. **Probe the same handle** on Instagram, TikTok, YouTube, X and Threads. A hit is a weak candidate on its own.
4. **Verify reciprocity.** Each readable candidate is opened; if it links back to the source, or its display name matches, confidence rises.
5. **Score and rank.** Links the creator placed start at 0.85; reciprocal confirmation takes them to 1.0.

Instagram and TikTok are read through stable data providers, so there is no anti-bot fight and no login. YouTube, X, Threads, link-in-bio pages and websites are read over residential proxy.

### ⬇️ Input

| Field | Type | Required | Notes |
|---|---|---|---|
| `creators` | array | yes | Profile URLs or bare handles. |
| `platform` | string | no | Where bare handles live: `instagram` (default), `tiktok`, `youtube`, `twitter`, `threads`. |
| `probeSameHandle` | boolean | no | Check the handle on other networks. Default `true`. |
| `verifyReciprocal` | boolean | no | Open candidates and check they link back. Default `true`. |
| `minConfidence` | integer | no | Drop matches below this percent. Default `30`. |
| `maxItems` | integer | no | Cap on rows (one per creator). Default `100`. |

```json
{
  "creators": [
    "https://www.instagram.com/mkbhd",
    "https://www.youtube.com/@MrBeast",
    "zachking"
  ],
  "platform": "tiktok"
}
```

Turn both switches off for a fast, links-only lookup that never probes or verifies.

### Output

One row per creator. Real result, abridged:

```jsonc
{
  "input": { "platform": "instagram", "handle": "mkbhd", "url": "https://www.instagram.com/mkbhd/" },
  "source": {
    "displayName": "Marques Brownlee",
    "bio": "I promise I won't overdo the filters.",
    "externalUrls": ["https://mkbhd.com/"],
    "verified": true,
    "followers": 5286661
  },
  "profiles": [
    { "network": "twitter",  "handle": "mkbhd", "url": "https://x.com/mkbhd", "confidence": 1.0,
      "evidence": [{ "kind": "website_link", "via": "https://mkbhd.com/" }, { "kind": "same_handle_match" }, { "kind": "display_name_match" }, { "kind": "verified_profile" }],
      "displayName": "Marques Brownlee", "verified": true },
    { "network": "youtube",  "url": "https://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQ", "confidence": 1.0,
      "evidence": [{ "kind": "website_link" }, { "kind": "reciprocal_profile_link" }, { "kind": "same_handle_match" }, { "kind": "display_name_match" }],
      "displayName": "Marques Brownlee" },
    { "network": "youtube",  "url": "https://www.youtube.com/channel/UCG7J20LhUeLl6y_Emi7OJrA", "confidence": 0.9, "displayName": "The Studio", "evidence": [{ "kind": "website_link" }, { "kind": "verified_profile" }] },
    { "network": "threads",  "url": "https://www.threads.com/@mkbhd", "confidence": 0.8, "evidence": [{ "kind": "same_handle_match" }, { "kind": "display_name_match" }, { "kind": "verified_profile" }] },
    { "network": "tiktok",   "url": "https://www.tiktok.com/@mkbhd", "confidence": 0.8 },
    { "network": "discord",  "url": "https://discord.gg/MKBHD", "confidence": 0.75, "evidence": [{ "kind": "website_link" }] }
  ],
  "best": { "twitter": "https://x.com/mkbhd", "youtube": "https://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQ", "threads": "…", "tiktok": "…", "discord": "…" },
  "linkInBioUrls": [],
  "websiteUrls": ["https://mkbhd.com/"],
  "sameHandleProbes": [{ "network": "tiktok", "exists": true }, { "network": "youtube", "exists": true }, { "network": "twitter", "exists": true }, { "network": "threads", "exists": true }],
  "resolvedAt": "2026-09-17T09:12:41.000Z"
}
```

#### Reading the confidence score

| Score | What it means |
|---|---|
| **1.0** | The creator links to it *and* it links back, or a link plus a matching verified name. As certain as it gets without logging in. |
| **0.85–0.9** | The creator placed this link on their own profile, bio page or website. |
| **0.75** | Found on the creator's website only. |
| **0.6–0.8** | Same handle elsewhere, with a matching display name or a verified badge. |
| **0.35** | The handle exists on that network and nothing else corroborates it. Treat as a lead. |

#### Networks recognised in output

Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn, Snapchat, Pinterest, Twitch, Kick, Bluesky, Reddit, Telegram, Discord, WhatsApp, Spotify, SoundCloud, Apple Music, OnlyFans, Patreon, Substack, Medium, GitHub, Tumblr, VK.

### 🔌 Use it as an API (Standby mode)

Enable Standby on the Actor and call it directly:

```
GET https://social-profile-finder--memo23.apify.actor/?url=https://www.instagram.com/mkbhd
GET https://social-profile-finder--memo23.apify.actor/?platform=tiktok&handle=mkbhd&verifyReciprocal=false
```

Returns the same JSON as one dataset row.

### Pricing

Pay per creator resolved. One row, one charge, regardless of how many accounts were found or how many pages had to be read to find them. A creator that does not exist is not charged.

### Notes & limitations

- **Source platforms are five:** Instagram, TikTok, YouTube, X and Threads. Any URL on the 26 networks above can be *found*, but the lookup has to *start* from one of the five.
- **Handle probing looks for the exact handle.** `khaby.lame` is not probed as `khabylame` on X, where dots are not allowed. Such accounts are still found when the creator links to them.
- **Threads sometimes serves a login wall to logged-out requests.** The Actor retries through a second route and, if still walled, reports "could not check" rather than guessing. That network is then absent from `sameHandleProbes` for that creator.
- **Facebook and LinkedIn are found, not probed.** They appear when the creator links to them; the Actor does not read their pages.
- A creator with no bio links and an empty display name (it happens — the largest TikToker's Instagram has no name set) yields only same-handle leads at 0.35. That is the honest answer.

### FAQ

**Do I need to log in anywhere?** No.

**Can it find someone from just a name?** No — it starts from a handle or profile URL on one of the five source platforms. Name-only search would guess; this Actor only follows evidence.

**Why did it return two YouTube channels?** Because the creator has two. Many do — a main channel and a podcast or second channel. Both are listed with their own scores; `best.youtube` holds the strongest.

**Why is a correct match only at 0.35?** Nothing corroborated it: no link from the source, no matching name, no link back. It is probably right — it is listed because it probably is — but the Actor will not claim more than it can show.

### 🤖 For AI Agents & LLM Apps

- **Purpose:** resolve a creator's handle on one platform into their accounts on every other platform, with per-match confidence and evidence.
- **Minimal input:** `{ "creators": ["https://www.instagram.com/mkbhd"] }` — no auth.
- **Output fields:** `input, source{displayName,bio,externalUrls,verified,avatarUrl,followers}, profiles[{network,handle,url,confidence,evidence[],displayName,verified}], best{network:url}, linkInBioUrls, websiteUrls, sameHandleProbes, resolvedAt, error`.
- **Billing:** per creator resolved; `maxItems` bounds cost.
- **Standby:** `GET /?url=<profile url>` or `GET /?platform=<p>&handle=<h>` returns one result as JSON.
- **Do not** treat a 0.35 match as confirmed; filter with `minConfidence` or read `evidence`.

### ⚠️ Disclaimer

This Actor reads only publicly visible profile information and the links creators have chosen to publish, without logging in or bypassing any access control. Use it in compliance with each platform's Terms of Service and applicable law, including data-protection rules. You are responsible for how you use the data. This tool is not affiliated with or endorsed by Meta, TikTok, Google, X Corp. or any platform named above.

### SEO Keywords

social profile finder, find social media profiles, social media finder, cross-platform profile lookup, creator identity resolution, find creator accounts, influencer profile finder, link in bio scraper, find TikTok from Instagram, find YouTube from Instagram, social handle lookup, username lookup across platforms, influencer discovery, creator research, social media OSINT, find all social accounts.

# Actor input Schema

## `creators` (type: `array`):

Profile URLs (<code>https://www.instagram.com/creator</code>, <code>https://www.tiktok.com/@creator</code>, <code>https://www.youtube.com/@creator</code>, <code>https://x.com/creator</code>, <code>https://www.threads.com/@creator</code>) or bare handles like <code>creator</code> — bare handles use the <b>Platform</b> field to say where they live.

## `platform` (type: `string`):

Where the bare handles above live. Ignored for entries that are full URLs.

## `probeSameHandle` (type: `boolean`):

Check whether <code>@handle</code> also exists on Instagram, TikTok, YouTube, X and Threads even when nothing links to it. A bare hit is scored low (0.35) and only climbs when the display name matches or the other profile links back.

## `verifyReciprocal` (type: `boolean`):

Open each discovered profile and check whether it links back to the source. Raises confidence to 1.0 on a match. Costs one extra fetch per candidate.

## `minConfidence` (type: `integer`):

Drop discovered profiles below this score (0–1). Links the creator placed themselves start at 0.85; a bare same-handle match starts at 0.35.

## `maxItems` (type: `integer`):

Hard cap on dataset rows (one per creator).

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

Creators resolved in parallel. Each creator fans out into several fetches of its own.

## `proxy` (type: `object`):

Leave empty — the actor routes all page fetches through its built-in residential proxy at no extra cost to you.

## Actor input object example

```json
{
  "creators": [
    "https://www.instagram.com/mkbhd"
  ],
  "platform": "instagram",
  "probeSameHandle": true,
  "verifyReciprocal": true,
  "minConfidence": 30,
  "maxItems": 100,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Dataset of resolved creators: source profile (name, bio, followers, outbound links), discovered profiles across Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn and more with confidence 0–1 and evidence, the link-in-bio pages and websites that were expanded, and a flattened best-URL-per-network map.

# 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 = {
    "creators": [
        "https://www.instagram.com/mkbhd"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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 = { "creators": ["https://www.instagram.com/mkbhd"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/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 '{
  "creators": [
    "https://www.instagram.com/mkbhd"
  ]
}' |
apify call memo23/social-profile-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/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/jAnIfqUp04MgdqeEg/builds/xTBhHgF9mvYxfoJG0/openapi.json
