# Maigret Username Checker — OSINT Search Across 3000+ Sites (`ntriqpro/maigret-actor`) Actor

Enter a username and see where that handle is registered across 3000+ social, forum, gaming, dating and developer platforms — with a direct profile URL for each hit. Powered by the open-source Maigret engine (MIT); rated 5.0★ by users; JSON, CSV and Excel export plus REST API and scheduling.

- **URL**: https://apify.com/ntriqpro/maigret-actor.md
- **Developed by:** [daehwan kim](https://apify.com/ntriqpro) (community)
- **Categories:** Social media, Lead generation, Developer tools
- **Stats:** 983 total users, 175 monthly users, 99.9% runs succeeded, 5 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per event

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?

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

## Maigret Username Checker — OSINT Search Across 3000+ Sites

**Give it 1 username (up to 500 per run) and get 1 row per site where that handle is registered, out of 3000+ sites checked — each with a direct profile URL.** Find all online accounts linked to a username in seconds. This **username OSINT / people-search** tool checks a **username across 3000+ websites** — social media, forums, dating, gaming, and developer platforms — and returns every matching profile. A fast **reverse username lookup** powered by [maigret](https://github.com/soxoj/maigret) (MIT License), used for background checks, fraud investigation, and mapping someone's online footprint.

### What you get

| Capability | Detail |
|---|---|
| **Sites checked** | **3000+** — GitHub, Twitter/X, Instagram, Reddit, TikTok, LinkedIn, and thousands more |
| **Direct profile URLs** | Every hit returns the profile link, site name, HTTP status and Alexa rank |
| **Batch searching** | Put a whole investigation list into `usernames` — one run, one export |
| **Tag-based filtering** | Filter by category: social, coding, video, dating, and more |
| **Optional profile details** | Full name, avatar, bio and location — opt-in via `extractProfileFields` |
| **Scheduled runs** | Recurring username monitoring via Apify Scheduler |
| **API access** | REST API, MCP, or Apify Console |
| **Ready to export** | JSON, HTML, CSV or Excel |

### Sample result

Each dataset item is a site where the username was **found**. This is the default output — account existence only:

```json
{
    "username": "johndoe",
    "siteName": "GitHub",
    "profileUrl": "https://github.com/johndoe",
    "siteMainUrl": "https://github.com/",
    "status": "Claimed",
    "httpStatus": 200,
    "isSimilar": false,
    "alexaRank": 65,
    "tags": ["coding"],
    "scrapedAt": "2026-04-16T00:00:00.000Z"
}
```

| username | siteName | profileUrl | status | httpStatus | tags |
|---|---|---|---|---|---|
| johndoe | GitHub | https://github.com/johndoe | Claimed | 200 | coding |

With `extractProfileFields: true`, each item additionally carries the personal profile details found on the page:

```json
{
    "fullName": "John Doe",
    "bio": "Software Engineer",
    "image": "https://avatars.githubusercontent.com/johndoe",
    "location": "San Francisco, CA",
    "extractedIds": {
        "github_id": "12345",
        "fullname": "John Doe"
    }
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

***

### What does Maigret Username OSINT Search do?

This Actor runs the open-source OSINT tool **maigret** to search for a given username across thousands of social networks, developer platforms, forums, and more. It returns a structured dataset of all sites where the username was found — profile URLs, site tags, and HTTP status codes. Personal profile details (full name, avatar, bio, location) are **not** collected unless you explicitly switch on `extractProfileFields`.

Use it to **find someone by username**, run a **social media username search**, perform background checks, or investigate fraud and impersonation. Built for security researchers, OSINT investigators, journalists, recruiters, and developers who need automated username reconnaissance.

***

### How to use Maigret Username OSINT Search

1. **Open the Actor** in Apify Console and click **Try for free**
2. **Enter a username** in the `Username` field (e.g., `john`)
3. **Configure options** — set `Top N sites` (default 500), timeout, or tag filters
4. **Start the Actor** and wait for results (500 sites ≈ 1–3 minutes)
5. **Download results** from the Output tab as JSON, CSV, or Excel

***

### Input

**Batch searching:** put your whole investigation list into `usernames` and the Actor searches each one in turn, writing every result to the same dataset. One run, one export — no need to start the Actor once per person.

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `usernames` | array | **Usernames to search.** Accepts a list — add as many as you need | — |
| `username` | string | A single username (legacy field, still supported) | — |
| `maxUsernames` | integer | Safety cap on usernames searched per run | `100` |
| `topSites` | integer | Top N sites by Alexa rank (0 = all 3000+) | `500` |
| `timeout` | integer | Per-request timeout in seconds | `30` |
| `tags` | string | Comma-separated tag filter (e.g. `social,coding`) | — |
| `excludeTags` | string | Comma-separated tags to exclude | — |
| `sites` | string | Specific site names to check (e.g. `GitHub,Instagram`) | — |
| `noRecursion` | boolean | Disable recursive search for related IDs | `false` |
| `extractProfileFields` | boolean | **Opt-in.** Also save personal profile details (full name, bio, avatar, location) | `false` |
| `printNotFound` | boolean | Include "not found" sites in output | `false` |

**Example input:**

```json
{
    "username": "johndoe",
    "topSites": 500,
    "timeout": 30,
    "tags": "social,coding",
    "noRecursion": false
}
```

***

### Data fields

| Field | Format | Description |
|-------|--------|-------------|
| `username` | text | Searched username |
| `siteName` | text | Website name |
| `profileUrl` | link | Direct profile URL |
| `status` | text | `Claimed` (maigret found the username on this site — this is what is charged) / `Not Found` / `Unknown` |
| `httpStatus` | number | HTTP response code the site returned. Usually `200`. A non-`200` code (e.g. `429` too many requests, `401`/`403` login-or-block, `404`) does **not** mean the account is absent — it is how the site treated the request. See Pricing below. |
| `alexaRank` | number | Site Alexa rank (lower = more popular) |
| `tags` | array | Site category tags |
| `scrapedAt` | date | Timestamp |
| `fullName` | text | Full name — **only with `extractProfileFields: true`** |
| `bio` | text | Bio/description — **only with `extractProfileFields: true`** |
| `image` | link | Profile avatar URL — **only with `extractProfileFields: true`** |
| `location` | text | Location — **only with `extractProfileFields: true`** |
| `extractedIds` | object | All extracted identifiers — **only with `extractProfileFields: true`** |

***

### Pricing / Cost estimation

**Run start fee — from 10 September 2026:** $0.005 is charged once per run, when the run starts and performs the investigation. Existing per-result prices are unchanged.

This Actor is billed per result: **$0.02 per profile found** (event: `profile-found`). You are charged once for each site where maigret finds the username (`status: "Claimed"`). Apify platform compute is included.

**Free plan:** each run returns up to 25 results (the first 3 inputs). Paid Apify plans
receive the full result set. A free-plan run that reaches the sample limit finishes
successfully with a `free-plan-cap` notice row — it is a plan limit, not an error.

Typical costs, based on measured runs across the default top 500 sites:

| What you search | Profiles usually found | Cost |
|---|---|---|
| 1 rare username | 5–20 | **$0.10 – $0.40** |
| 1 common username | 100–150 | **$2.00 – $3.00** |
| 10 usernames | 500–1,500 | **$10.00 – $30.00** |
| 1,000 profiles found | 1,000 | **$20.00** |

Every result carries the site's HTTP response code in `httpStatus`. Most are `200`. Some sites return a different code — `429` (rate-limited us), `401`/`403` (the profile needs a login, or the site blocked the request), or occasionally `404` for a private or restricted profile. These codes describe how the site answered our request, **not** whether the account exists, so they are included in the result and charged like any other match. A small number may be false positives from the underlying engine. Because the status code is provided on every row, you can spot the non-`200` results and re-check those links yourself — verifying limited or blocked results is left to you.

New Apify users receive free monthly credits to get started. To cap spending on any single run, set a maximum cost in the Actor's **Run options** — see the next section for exactly what happens when a run reaches it.

#### Large batches and the run charge limit

Every Apify run has a maximum cost, which you set per run (or per schedule) in the Actor's **Run options**. This Actor can search up to **500 usernames in a single run**, and a big batch can easily find more profiles than the default limit covers.

When a run reaches its charge limit, this Actor **stops searching and finishes successfully** with everything it found up to that point, plus a final `Charging limit reached` record explaining what happened. You are never charged past your limit, and the run is not reported as a failure.

To get the full batch, do one of the following:

- **Raise the run's maximum cost** in Run options before starting, or
- **Split the usernames across several runs** — for example 50 usernames per run instead of 500.

***

### How it compares to Sherlock and other username search Actors

Looking for an alternative to Sherlock? The table lists what each Actor states on its own Apify Store listing, read on 3 September 2026. Prices are the Free-plan figures shown there and can change; check each listing before you rely on them.

| | This Actor (Maigret) | misceres/sherlock | crawlerbros/sherlock-scraper | lofomachines/watson | bovi/maigret-username-osint |
|---|---|---|---|---|---|
| Engine | Maigret (MIT) | Sherlock project | Sherlock project | Not stated | Maigret |
| Sites checked | 3000+ | 400+ (Sherlock project figure) | 400+ (listing) | 700+ sources (listing) | 3000+ (listing) |
| Input | `usernames` array, up to 500 per run | `usernames` array | `usernames` array | `username` — one string per run | `usernames` array |
| Price | $0.02 per profile found + $0.005 per run start | No Actor price listed; platform usage only | $0.001 per result + $0.005 per run start | $0.01 per account on the Free plan ($0.002 on higher plans) + $0.05 per run start | $0.019 per profile on the Free plan + run start |
| Filters | `topSites`, `tags`, `excludeTags`, `sites`, `printNotFound`, profile-field extraction opt-in | — | — | — | `topSites`, `tags` |

What this Actor adds on top of the Maigret engine: a batch `usernames` list with a per-run cap, a `Charging limit reached` notice instead of a failed run, and profile-field extraction that stays off unless you turn it on.

### Tips and Advanced Options

- **Speed up searches**: Set `topSites` to 100–200 for quick checks on major platforms
- **Category focus**: Use `tags: "social"` to check only social networks, or `"coding"` for developer platforms
- **Specific sites**: Use the `sites` field to check a small custom list (e.g. `"GitHub,Twitter,Reddit"`)
- **Monitoring**: Schedule this Actor weekly to detect new account registrations for a username
- **Disable recursion**: Set `noRecursion: true` to skip recursive sub-searches (faster, less data)

***

### FAQ, Disclaimers & Support

#### Is this legal?

This Actor searches **publicly accessible pages only** — the same pages anyone can view in a browser. However:

- **By default the Actor records account existence only** — which site, which URL. Personal profile details are collected only if you switch on `extractProfileFields`, and doing so makes you the data controller for that personal data
- **Only search usernames you are authorized to investigate** (your own, or with explicit permission)
- Comply with applicable laws including GDPR, CCPA, and local privacy regulations
- Do not use results to harass, stalk, or harm individuals
- The Actor does not access private data, bypass authentication, or scrape restricted content

#### Legal Disclaimer

> **This Actor is an unofficial integration of maigret and is not affiliated with, endorsed by, or sponsored by the original maigret project or its maintainers. Use responsibly and only on usernames you have authorization to investigate.**

**This Actor is an unofficial integration of [maigret](https://github.com/soxoj/maigret) (MIT License). It is NOT affiliated with, endorsed by, or sponsored by the original maigret project or its authors. The Actor author provides this tool for legitimate security research, journalism, and authorized investigations only. Users are solely responsible for ensuring their use complies with applicable laws and the Terms of Service of checked websites. The author accepts no liability for misuse.**

#### Privacy & data responsibility

**You are the data controller** for every search you run with this Actor; ntriqpro is a **data processor** acting solely on your instructions. You are responsible for having a lawful basis and a legitimate, purpose-limited reason for each lookup, and for complying with GDPR, PIPA, CCPA, and other applicable privacy laws. **We do not store your results** — output is written only to your own run's dataset and is never retained on our side. Use this Actor only for lawful purposes and only on usernames you own or are authorized to investigate.

#### Known Limitations

- Some sites may block automated requests (rate limiting, CAPTCHA)
- Results accuracy depends on the maigret database (updated automatically)
- Very common usernames may return false positives on some sites

#### Support

- Found a bug? Open an issue in the **Issues** tab
- Need a custom OSINT solution? Contact via the Apify platform

***

### 🔗 Related Actors by ntriqpro

**Running several of these by hand?** [**OSINT Recon Suite**](https://apify.com/ntriqpro/osint-recon-suite) takes one target — username, email, domain or phone — runs Maigret, Sherlock, holehe, theHarvester, WHOIS and dnstwist against it, then correlates everything into a single risk-scored report. One input, one report, instead of six separate runs to stitch together yourself.

Build your full OSINT stack:

- [**email-osint-search**](https://apify.com/ntriqpro/email-osint-search) — Email OSINT — find which 120+ sites an email is registered on
- [**phoneinfoga-osint**](https://apify.com/ntriqpro/phoneinfoga-osint) — Phone number OSINT — carrier, country & footprint
- [**dnstwist-osint**](https://apify.com/ntriqpro/dnstwist-osint) — Typosquatting & phishing domain detector
- [**subfinder-osint**](https://apify.com/ntriqpro/subfinder-osint) — Subdomain finder for attack-surface mapping
- [**gitleaks-secret-scanner**](https://apify.com/ntriqpro/gitleaks-secret-scanner) — Find leaked API keys & secrets in public repos

### ⭐ Love it? Leave a Review

Your rating helps professionals discover this actor. [Rate it here](https://apify.com/ntriqpro/maigret-actor/reviews).

# Actor input Schema

## `usernames` (type: `array`):

One or more usernames to search across social networks and websites. Add a whole investigation list here — each username is searched in turn and all results land in the same dataset. Free plan: each run returns up to 25 results (the first 3 inputs). Paid Apify plans receive the full result set.

## `username` (type: `string`):

A single username to search. Kept for backwards compatibility — prefer the Usernames field above, which accepts a list.

## `maxUsernames` (type: `integer`):

Safety cap on how many usernames a single run will search. Extra usernames beyond this limit are skipped. Runtime scales with the number of usernames you actually supply (roughly 2 minutes each at the default 500 sites), so keep your run timeout in mind for large batches. Default: 100. Free plan: each run returns up to 25 results (the first 3 inputs). Paid Apify plans receive the full result set.

## `topSites` (type: `integer`):

Limit search to top N sites by Alexa rank. Set 0 to search all 3000+ sites (slow). Default: 500.

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

Time in seconds to wait for each site response. Default: 30.

## `tags` (type: `string`):

Comma-separated list of site tags to include (e.g. 'social,coding,video'). Leave empty to check all.

## `excludeTags` (type: `string`):

Comma-separated list of site tags to exclude.

## `sites` (type: `string`):

Comma-separated list of specific site names to check (e.g. 'GitHub,Twitter,Instagram'). Leave empty to use topSites.

## `noRecursion` (type: `boolean`):

Disable recursive search for additional usernames/IDs found during the search. Faster but less thorough.

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

Off by default. When off, results contain account-existence evidence only (site name, profile URL, status). Turn on to also save personal profile details found on the page — full name, bio, avatar image, location and other extracted identifiers. 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).

## `printNotFound` (type: `boolean`):

Also save sites where the username was NOT found in the dataset.

## Actor input object example

```json
{
  "usernames": [
    "john"
  ],
  "maxUsernames": 100,
  "topSites": 500,
  "timeout": 30,
  "extractProfileFields": false
}
```

# Actor output Schema

## `dataset` (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 = {
    "usernames": [
        "john"
    ],
    "maxUsernames": 100,
    "topSites": 500,
    "timeout": 30,
    "tags": "",
    "excludeTags": "",
    "sites": "",
    "noRecursion": false,
    "extractProfileFields": false,
    "printNotFound": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("ntriqpro/maigret-actor").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 = {
    "usernames": ["john"],
    "maxUsernames": 100,
    "topSites": 500,
    "timeout": 30,
    "tags": "",
    "excludeTags": "",
    "sites": "",
    "noRecursion": False,
    "extractProfileFields": False,
    "printNotFound": False,
}

# Run the Actor and wait for it to finish
run = client.actor("ntriqpro/maigret-actor").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 '{
  "usernames": [
    "john"
  ],
  "maxUsernames": 100,
  "topSites": 500,
  "timeout": 30,
  "tags": "",
  "excludeTags": "",
  "sites": "",
  "noRecursion": false,
  "extractProfileFields": false,
  "printNotFound": false
}' |
apify call ntriqpro/maigret-actor --silent --output-dataset

```

## MCP server setup

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

```

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/Kpcpxu79jMu1d2w4A/builds/8bH4BeqwW01p9PzSk/openapi.json
