Username Checker & Search — OSINT Across 3000+ Sites (Maigret)
Pricing
from $10.40 / 1,000 profile founds
Username Checker & Search — OSINT Across 3000+ Sites (Maigret)
Username search across 3000+ social, forum, gaming, dating and developer sites, with a profile URL per hit. Open-source Maigret engine (MIT), rated 5.0★. Free plan: top 100 sites. Paid plans: all 3000+ and cheaper per profile (Bronze 20%, Silver 35%, Gold+ 48% off). JSON/CSV/Excel, API.
Pricing
from $10.40 / 1,000 profile founds
Rating
5.0
(3)
Developer
daehwan kim
Maintained by CommunityActor stats
7
Bookmarked
1.4K
Total users
153
Monthly active users
2 days ago
Last modified
Share
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 (MIT License), used for fraud and impersonation checks, counterparty due diligence, and mapping someone's online footprint.
| Free plan | Bronze | Silver | Gold and above | |
|---|---|---|---|---|
| Usernames per run | First 3 | Up to 500 | Up to 500 | Up to 500 |
| Sites searched per run | Top 100 | Up to 3000+ | Up to 3000+ | Up to 3000+ |
| Result rows per run | Up to 25 | Every match | Every match | Every match |
Profile details (extractProfileFields) | One of each kind (name, bio, avatar, location, IDs); the rest are counted as "N of M shown" | On every profile | On every profile | On every profile |
| Price per profile found | $0.02 | $0.016 (20% off) | $0.013 (35% off) | $0.0104 (48% off) |
Search fee per username searched (username-checked) | $0.05 | $0.04 (20% off) | $0.0325 (35% off) | $0.026 (48% off) |
| Locked part | A free-plan-cap notice row counts the sites, result rows and profile details left out | Nothing locked | Nothing locked | Nothing locked |
A run start fee of $0.005 applies on the Free plan, with the same discounts on paid plans (see Pricing below).
Search fee. When the username-checked event is on the run's price list, each username whose search completes is charged once — including when no profile is found, because the full site sweep was still run to give you that answer. A search that fails or times out on our side is not charged. The run's log and status message state the most the search fee can come to before the first search starts. In a run whose price list does not carry this event, nothing is charged for it.
Free plan: top 100 sites. Runs started from an Apify free plan search the top 100 sites by rank at most: a
topSitesvalue from 1 to 100 is used as is, and 0 or any value above 100 is lowered to 100. You can see exactly what this Actor returns before paying. Every paid plan searches the full depth you ask for, up to all 3000+ sites, in a single run. This is a plan limit, not an error: when the depth is lowered, the free run finishes normally with a status message saying how many sites were searched.
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:
{"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:
{"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, run fraud and impersonation checks, or do counterparty due diligence. Not a consumer reporting agency. Do not use results to make decisions about employment, credit, housing or insurance. Built for security researchers, OSINT investigators, journalists, trust & safety teams, and developers who need automated username reconnaissance.
How to use Maigret Username OSINT Search
- Open the Actor in Apify Console and click Try for free
- Enter a username in the
Usernamefield (e.g.,john) - Configure options — set
Top N sites(default 500), timeout, or tag filters - Start the Actor and wait for results (500 sites ≈ 1–3 minutes)
- 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:
{"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 — each such row is charged as profile-found) / Not Found / Unknown / No results (the search completed and found the username nowhere) |
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 charges for the work it does, per event. Apify platform compute is included.
| Event | Charged when | Free-plan price |
|---|---|---|
run-started | Once per run, when the run starts and performs the investigation | $0.005 |
username-checked | Once per username whose search completed, including when no profile was found. Not charged when the search failed or timed out on our side, when almost no site answered and nothing was found, or when the input was not a username. Applies when this event is on the run's price list. | $0.05 |
profile-found | Once for each site where maigret finds the username (status: "Claimed") | $0.02 |
What "completed" means for username-checked: maigret ran the site sweep for that username and wrote its report. Individual sites that block or rate-limit the request are part of a normal search and do not cancel the fee; a search in which 90% or more of the sites returned an error and no site row is returned is treated as not completed and the fee is skipped. An email address entered in place of a username is rejected before any search and is not charged.
Before the first search, the run's log and status message show the most the search fee can come to (number of usernames × the per-username price for your plan), so you know the figure up front. Runs whose price list does not carry username-checked are charged exactly as before: the run start fee and the per-profile price only.
If the platform restarts a run (for example when it moves the run to another server), the run continues from where it stopped: profiles already in the dataset are not delivered or charged again, and the run start fee and each username's search fee are charged at most once per run. For this, a run whose price list has run-started writes a run-start-record notice row first, right before that fee. If a restarted run cannot confirm the charge for a profile it delivered before the restart, it stops with a billing-unconfirmed notice row instead of asking again; the results above that row are complete. The same notice ends a run that could not tell whether a result it was writing reached the dataset (it looks for the result again a few seconds later before deciding): that run hands over nothing more and does not ask for a charge for that result. If the platform then restarts the same run and the result is in the dataset, it is charged once, like every delivered result. Every start of a run first records itself in the run's key-value store and reads that record back; a first start that cannot do so (after a few tries) stops before searching with the same notice row, having searched, delivered and charged nothing. A restarted start that cannot do so still settles the profiles the earlier start delivered, as above, then stops with the same notice row without searching or delivering anything new. A run that stopped with that notice is not continued by a later restart: the restart searches nothing and asks for no run start fee.
Free plan: each run searches the top 100 sites by rank and returns up to 25
results (the first 3 inputs). Paid Apify plans search the depth you ask for — up to all
3000+ sites — and receive the full result set. A free-plan run finishes successfully
with a free-plan-cap notice row saying how many sites were searched and showing a locked block (locked sites, estimated profiles they would have returned, rows held back by the cap; the dollar figure is at list price, before any plan discount below, and a rough estimate because locked sites usually hit less often than the top-ranked ones; it includes the per-username search fee when that event is on the run's price list); notice rows are
never charged. This is a plan limit, not an error.
Paid plans also carry a standing discount on every event, so deeper searches cost less as you move up:
| Your Apify plan | Sites searched per run | Price per profile found | Search fee per username searched |
|---|---|---|---|
| Free | Top 100 | $0.02 | $0.05 |
| Bronze | Up to 3000+ | $0.016 (20% off) | $0.04 (20% off) |
| Silver | Up to 3000+ | $0.013 (35% off) | $0.0325 (35% off) |
| Gold and above | Up to 3000+ | $0.0104 (48% off) | $0.026 (48% off) |
Typical costs at Free-plan prices, based on measured runs across the default top 500 sites. The search fee column applies when username-checked is on the run's price list; the run start fee ($0.005 per run) comes on top:
| What you search | Profiles usually found | Profile charges | Search fee |
|---|---|---|---|
| 1 username found nowhere | 0 | $0.00 | $0.05 |
| 1 rare username | 5–20 | $0.10 – $0.40 | $0.05 |
| 1 common username | 100–150 | $2.00 – $3.00 | $0.05 |
| 10 usernames | 500–1,500 | $10.00 – $30.00 | $0.50 |
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. If the limit is reached before a username's search fee can be charged, that username's results are not returned.
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 (+ $0.05 per username searched when username-checked is on the run's price list) | 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
topSitesto 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
sitesfield 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: trueto 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 (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 keep copies of your inputs or results outside your own Apify run; searched identifiers are masked in run logs. These roles are governed by the Standard Actor Contract (§5.2) that applies to this Actor on Apify. Public availability of a profile is not, by itself, a lawful basis — you need your own. 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 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 — Email OSINT — find which 120+ sites an email is registered on
- phoneinfoga-osint — Phone number OSINT — carrier, country & footprint
- dnstwist-osint — Typosquatting & phishing domain detector
- subfinder-osint — Subdomain finder for attack-surface mapping
- 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.