# Social Media Finder by Name — Find Profiles on 3000+ Sites (`ntriqpro/social-media-finder-by-name`) Actor

Enter a person's name and get their public social media profiles. The name becomes ranked username candidates, each checked against 3000+ sites, returning one row per confirmed profile with URL, category and confidence. Powered by open-source maigret (MIT). Unofficial wrapper.

- **URL**: https://apify.com/ntriqpro/social-media-finder-by-name.md
- **Developed by:** [daehwan kim](https://apify.com/ntriqpro) (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 $10.40 / 1,000 profile founds

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?

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 by Name — Find Profiles on 3000+ Sites

You have a name. You do not have a username. This Actor closes that gap.

Give it **"John Smith"** and it builds the username candidates a real person would
have picked — `johnsmith`, `john.smith`, `john_smith`, `smithjohn` — ranks them,
and checks each one against **3000+ sites**. You get one row per confirmed public
profile, with the URL, a category and a confidence score.

Most profile finders check a dozen platforms. This one uses the full site
catalogue of the open-source **maigret** engine.

### What you get

| Row type | What it is | Charged |
|---|---|---|
| `profile-found` | One confirmed public profile: name, username, site, URL, category, confidence | yes |
| `username-checked` | One summary per username candidate: how many profiles it found and which site scope was searched | yes |
| `name-summary` | One unbilled roll-up per name you submitted | no |
| notice rows | Status messages: free-plan cap, charge limit, invalid input | no |

Every row carries a `rowType`, so filtering results is one expression.

#### Example result row

```json
{
  "rowType": "profile-found",
  "name": "John Smith",
  "username": "john.smith",
  "site": "GitHub",
  "url": "https://github.com/john.smith",
  "category": "Developer",
  "confidence": 1.0,
  "httpStatus": 200,
  "headline": "John Smith as `john.smith` — 14 profiles, top: GitHub, Instagram, Reddit"
}
```

### Input

| Field | Default | What it does |
|---|---|---|
| `names` | `["John Smith"]` | People to look up. Up to 10 per run. |
| `maxPermutations` | `6` | Username candidates built per name, best first. Up to 72. |
| `siteScope` | `top500` | `top300`, `top500` or `all3000`. |
| `minConfidence` | `0.5` | Drop matches scored below this. Raise it for common names. |
| `concurrency` | `2` | Username candidates looked up in parallel. |
| `monitorMode` | `false` | Return only what changed since the previous run with the same key. |
| `extractProfileFields` | `false` | Opt-in: also save full name, bio, avatar, location. |
| `includeAdultSites` | `false` | Adult and webcam sites are excluded unless you ask for them. |
| `disclaimerAck` | required | Confirms lawful use. |

### How confidence works

Confidence answers "is this the person you named", not "does this account exist".
It starts from how completely the username matches the name — a form containing
every name element scores highest, a bare first name much lower — and is reduced
when the engine reports a fuzzy match or the site answered with something other
than HTTP 200. A single common given name is deliberately scored low, because
thousands of unrelated people hold it.

**A match means a username exists on a site. It is not proof of identity.**
Verify before you act on it.

### Runtime and cost

Runtime scales with `names × maxPermutations ÷ concurrency`. Measured
2026-09-03: one username candidate against 500 sites takes about 27 seconds.
The default input (one name, six candidates, top 500, concurrency 2) finishes in
a couple of minutes.

Pricing is pay-per-event and is shown on the Actor's store page. Free-plan runs
return up to 25 result rows and then finish normally with a notice row; upgrade
your Apify plan for the full set in one run. If a run reaches its charging limit
it stops and says so rather than handing out uncharged results.

### Use cases

- **Sales.** Paste a list of lead names and get their real profile URLs without
  knowing a single handle.
- **Recruiting.** See a candidate's public GitHub, X and Medium presence in one
  table instead of twelve searches.
- **Investigation and due diligence.** Hand over a name; the Actor builds the
  username candidates and sweeps the catalogue for you.
- **Monitoring.** Schedule it with `monitorMode` and get only the profiles that
  appeared, changed or vanished since last week.

### Legal and privacy

This Actor is an **unofficial** wrapper around the open-source
[maigret](https://github.com/soxoj/maigret) engine (MIT). It is **not affiliated
with, endorsed by, or sponsored by** that project or by any site it checks.

- It performs passive lookups of publicly reachable profile pages. It never logs
  in, never bypasses authentication or CAPTCHAs, and never notifies the person.
- By default it returns **account-existence evidence only** — site, URL,
  category, confidence. Personal profile fields are opt-in
  (`extractProfileFields`).
- You are the **data controller** for anything you collect. Use it only where you
  have a lawful basis, and comply with GDPR, CCPA, PIPA and each site's terms.
- Do not use it for stalking, harassment, or any decision about a person that
  requires a regulated background check.

### Next steps

- [Username OSINT Search](https://apify.com/ntriqpro/user-scanner-osint) — already
  know the handle? Skip the name-to-username step.
- [Email OSINT Search](https://apify.com/ntriqpro/email-osint-search) — see which
  services an email address is registered on.
- [Phone Number Validator](https://apify.com/ntriqpro/phone-number-validator-bulk)
  — line type, carrier and reachability for a lead list.

# Actor input Schema

## `names` (type: `array`):

People to look up, by name. Write a full name as plain text ("John Smith") — the Actor turns it into username candidates for you. Up to 10 names per run. Runtime grows with names x maxPermutations, so start small and scale up once you like the results. Free plan: each run returns up to 25 results. Paid Apify plans receive the full result set.

## `name` (type: `string`):

Alternative to the list above — one name to look up.

## `maxPermutations` (type: `integer`):

How many username candidates to build from each name and check. Candidates are ranked, so the most plausible forms (johnsmith, john.smith, john\_smith) are always tried first. Higher means more coverage and a longer run. Range 1-72, default 6.

## `siteScope` (type: `string`):

top500 checks the 500 most-visited sites and is the right default. all3000 checks the engine's whole catalogue of 3000+ sites — far more coverage, several times the runtime. top300 is the fast option for large batches.

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

Drop profiles scored below this (0 to 1). Confidence combines how well the username matches the name with the engine's own match signals, so raising it filters out the coincidences that common names attract. 0.5 keeps everything plausible; 0.8 keeps only full-name matches.

## `timeout` (type: `integer`):

How long to wait for each site to respond. Higher means fewer false negatives and a slower run. Range 5-120.

## `concurrency` (type: `integer`):

How many username candidates are looked up at the same time. 2 is a good balance; raise it to shorten large runs, lower it to 1 if sites start rate-limiting you.

## `monitorMode` (type: `boolean`):

Compare this run with the previous run for the same monitor key and label every profile new / changed / removed / unchanged. Schedule the Actor and you get only what changed since last time. The first run saves a baseline and returns everything.

## `monitorKey` (type: `string`):

Name this watch, e.g. "acme-candidates-weekly". Runs sharing a key are compared with each other, so you can keep several independent watches. Leave empty and the key is derived from your input automatically.

## `includeUnchanged` (type: `boolean`):

In monitor mode, also return profiles that did not change since the previous run. Off by default, so a scheduled run stays a short change report.

## `extractProfileFields` (type: `boolean`):

Off by default. When off, results contain account-existence evidence only: site, profile URL, category, confidence. Turn it on to also save personal details the page exposes — full name, bio, avatar, location. You become the data controller for any personal data you collect this way, so only enable it when you have a lawful basis (GDPR/CCPA/PIPA).

## `includeAdultSites` (type: `boolean`):

Include adult and webcam sites in the lookup. Excluded by default.

## `disclaimerAck` (type: `boolean`):

Required. Confirms you have a lawful basis for looking these people up, that a username match is not proof of identity, and that you are the data controller for whatever you collect. See the README for the full notice.

## Actor input object example

```json
{
  "names": [
    "John Smith"
  ],
  "maxPermutations": 6,
  "siteScope": "top500",
  "minConfidence": "0.5",
  "timeout": 20,
  "concurrency": 2,
  "monitorMode": false,
  "includeUnchanged": false,
  "extractProfileFields": false,
  "includeAdultSites": false,
  "disclaimerAck": true
}
```

# Actor output Schema

## `profiles` (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 = {
    "names": [
        "John Smith"
    ],
    "maxPermutations": 6,
    "siteScope": "top500",
    "minConfidence": "0.5",
    "timeout": 20,
    "concurrency": 2,
    "monitorMode": false,
    "includeUnchanged": false,
    "extractProfileFields": false,
    "includeAdultSites": false,
    "disclaimerAck": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("ntriqpro/social-media-finder-by-name").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 = {
    "names": ["John Smith"],
    "maxPermutations": 6,
    "siteScope": "top500",
    "minConfidence": "0.5",
    "timeout": 20,
    "concurrency": 2,
    "monitorMode": False,
    "includeUnchanged": False,
    "extractProfileFields": False,
    "includeAdultSites": False,
    "disclaimerAck": True,
}

# Run the Actor and wait for it to finish
run = client.actor("ntriqpro/social-media-finder-by-name").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 '{
  "names": [
    "John Smith"
  ],
  "maxPermutations": 6,
  "siteScope": "top500",
  "minConfidence": "0.5",
  "timeout": 20,
  "concurrency": 2,
  "monitorMode": false,
  "includeUnchanged": false,
  "extractProfileFields": false,
  "includeAdultSites": false,
  "disclaimerAck": true
}' |
apify call ntriqpro/social-media-finder-by-name --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ntriqpro/social-media-finder-by-name"
        }
    }
}

```

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/7ESIfBkZJVWkukluJ/builds/MKMEYbxthAcjsXcdH/openapi.json
