Give Maigret a username and it finds the sites with an account by that name, reads the profiles it finds for names, locations and links to other accounts, then searches for the usernames those links give up. The README puts the reach at 5,900 sites. A default run checks 500 of them, and the list it checks can change overnight without you installing anything, which matters as soon as a result has to go into a report.

What is Maigret?
Maigret is an open-source OSINT tool that searches for accounts by username, written in Python and released under the MIT licence. For each name you give it, it requests the matching profile URL on each site it checks and reports the accounts it finds, along with whatever it could pull from the page: full name, location, creation date, follower counts and links to other profiles. Release 0.6.6 came out on 18 September 2026, and the project was still committing in October.
Advertisement
Recursive search is what lifts it above a plain username checker, and it is on by default. When a profile links to another account, Maigret takes the username or ID from that link and starts a new search for it. The documentation’s own example finds a Twitter handle on a GitHub profile and goes on to find a Telegram account under that second name.
On one person that is exactly what you want. On a profile that links to a colleague, a former employer or a shared project, Maigret searches those names as well, so check which names in the output you actually gave it. --no-recursion turns it off.
How many sites does Maigret check?
By default, 500. The site database in the 0.6.6 release holds 5,897 entries, but a run without options checks the 500 ranked highest by Majestic Million, plus any mirror sites tied to a platform in that top 500. -a (--all-sites) lifts the 500 limit, --top-sites sets a different number, and --tags picks sites by category or country.
I counted the 0.6.6 database. 694 of its 5,897 entries are marked disabled – checks the maintainers have switched off – which leaves 5,203 enabled, and only 854 of those have a rank recorded at all. The enabled 5,203 are the ceiling for -a, not quite what it checks: twelve of them are not ordinary web checks – four Tor sites, one I2P site and seven DNS lookups – and run only with --tor-proxy, --i2p-proxy or --with-domains. Another 25 look up other identifiers, such as Steam or VK IDs, rather than usernames. So a plain -a search for a username works from 5,166. The disabled entries come back only with --use-disabled-sites, which the documentation warns “may cause many false positives”. Of the enabled entries, 2,664 carry the forum tag and 1,114 the ru tag.
So -a does not give you more of the big platforms. It adds thousands of smaller communities – about half the enabled database is forums, and a fifth is tagged Russian – which is valuable when that is where your subject lives and noise when it isn’t.
Tags are the more precise tool. --tags us,jp limits a search to sites marked as American or Japanese, --tags coding to software development sites, and --exclude-tags drops a category, so --tags forum --exclude-tags ru searches forums but skips the Russian ones. The documentation warns that the tag markup “is still not stable”, so a tag tells you how a site was classified, not that the classification is complete.
Advertisement
Which site database did your Maigret search use?
Not necessarily the one that came with the release, and not necessarily the newest either. On startup, at most once every 24 hours, Maigret checks whether a newer site database has been published. If one has, and it is compatible with your version, it downloads it to ~/.maigret/data.json and uses it in place of the copy bundled with the release. Between checks it uses the copy it cached last time, and if a download fails or the new list does not fit your version, it falls back to the bundled one. Two people on the same version can therefore search different site lists, and so can you, rerunning a search a week later.
That is the right default for someone who wants as many checks working today as possible. For an investigation that may have to be repeated or explained, it means the version number does not tell you what was searched. According to the documentation, every run prints the database it loaded, as [+] Using sites database: <path> (<N> sites). Keep that line with the results, and keep the file it names too: copy that database next to your case notes and record its SHA-256, because the cached copy at ~/.maigret/data.json is replaced by the next update.
For case work I would hold the list still and update it on purpose. --no-autoupdate uses the cached or bundled database as it is, "no_autoupdate": true in ~/.maigret/settings.json makes that permanent, and --force-update fetches a new one when you decide to. --db loads a database file you name and skips the update check entirely, so pointing it at the copy you kept is how you rerun a search against exactly the list you used before.
The documentation itself recommends turning updates off for Docker containers, CI pipelines and air-gapped machines.
How to use Maigret
Give it one or more usernames. maigret username searches the default 500 sites, --html adds an HTML report, and the README’s examples cover the common variations:
maigret username --html maigret username --tags coding maigret user1 user2 user3 -a |
Reports come in most formats you might need: HTML, PDF (an optional extra, installed with pip install 'maigret[pdf]'), XMind, CSV, plain text, newline-delimited JSON with --json ndjson, an interactive graph with --graph and a Neo4j Cypher script with --neo4j.
--parse takes a profile URL, extracts the IDs and usernames on it and searches for those, and --permute turns two or more names into likely variants (john doe into johndoe, j.doe and so on) and searches them all.
Treat every hit as a lead to open, not a finding. The project’s usage page says some sites “may return false positive results”. A missing result needs the same care, because a site can be absent from the output for three reasons: the name is not there, the site was never checked (outside the 500, disabled, or a .onion site with no Tor proxy set, which Maigret skips silently), or the check failed on a timeout, a CAPTCHA or a block. --print-errors shows the connection, CAPTCHA and country-ban errors behind a run, and --print-not-found lists the sites that answered no, so you can tell those apart before writing that someone has no account somewhere.
The usage page’s suggested fix for false positives, --self-check --auto-disable, tests each site against the database’s known-claimed and known-unclaimed usernames and disables the ones that fail. Failing includes connection errors, so a site that was only unreachable for a minute gets switched off too. Run --self-check on its own first, which only reports (--diagnose adds the detail), and decide what to disable before Maigret asks to save the change. Either way, it is one more way your site list can differ from someone else’s.
Think about where the requests come from, too. Maigret’s privacy page says it has no telemetry and sends nothing to its maintainers, but the usernames you search for go to every site being checked, from your own address, because that is how a check works. --proxy routes the whole run through an HTTP or SOCKS proxy, Tor included. The optional --ai summary sends the full report, profile data and all, to an OpenAI-compatible API, and the documentation says to use only providers and accounts you trust with that data.
How to install Maigret on Windows, Kali and Linux
With Python 3.10 or later, pip3 install maigret is the README’s one-minute route, and maigret username runs it. The installation guide warns that on recent Debian, Ubuntu and Fedora systems pip refuses to install into the system Python with an externally-managed-environment error. Kali is built on Debian, so expect the same there. The guide’s answer is pipx, which gives Maigret its own virtual environment and puts only the maigret command on your path:
pipx install maigret maigret username |
On Windows, pip into a Python you installed yourself is fine.
On Windows there is a standalone build that needs no Python: maigret_standalone.exe on the v0.6.6 release page. Double-click it and it asks for a username and runs a default search, or run it from PowerShell to pass options, and it writes reports to a reports folder beside the exe. The installation guide says the Windows binaries are not code-signed yet (the project has applied for a certificate), so check the file against the SHA-256 that GitHub publishes beside the download:
Get-FileHash .\maigret_standalone.exe -Algorithm SHA256 .\maigret_standalone.exe username --html |
For the 0.6.6 exe the hash should read:
08D7450AF98AA29F3A28D3DC01940BB4335391D9B1361C68BA04DF0F75C77277 |
The copy we downloaded matched it. The project also builds a fresh exe automatically after each commit, and its nightly-main pre-release is rebuilt from the main branch, so make sure the file you take is the release you meant to.
On Linux, sudo snap install maigret gets a build that needs no Python, for amd64 and arm64. The snap is strictly confined and can write inside your home directory, so run it from there. Docker has two images, soxoj/maigret:latest for the command line and soxoj/maigret:web for the web interface on port 5000:
docker run -v /mydir:/app/reports soxoj/maigret:latest username --html docker run -p 5000:5000 soxoj/maigret:web |
Without installing anything, there is a community-maintained Telegram bot and a set of cloud shells and notebooks linked from the README. Both run the search on someone else’s machine, which is worth weighing before you type a name you care about into them.
Maigret vs Sherlock and WhatsMyName
Sherlock is the obvious alternative: a Python tool, MIT-licensed, that checks a username across its site list and tells you where it exists. Its latest release, 0.16.2, came out in September 2026. Maigret does the same job and then keeps going, reading the profiles it finds and following the links on them, over a much larger database. If you only need to know where a name exists, either will tell you. If one username is supposed to lead you to the next, Maigret is the one built for it.
WhatsMyName is a different kind of thing: a community-maintained dataset of sites and how to check them, under a Creative Commons BY-SA licence, searchable through the whatsmyname.app web app and used by other tools. There is no WhatsMyName tool to install, so the comparison is between its web app and running Maigret yourself.
Our socialscan article covers the narrow, precise end of the job: it asks a handful of platforms’ sign-up forms whether a name or email address is taken, rather than judging from a profile page, and when we refreshed it this month three of its eight platforms still answered.
If what you have is an email address rather than a username, holehe is the wider tool for that job, though it has had no commit since September 2024.
You can download Maigret here:
Or read more here.
Advertisement