Holehe: Complete Guide to Email Account Enumeration and OSINT Using Kali Linux

Holehe: Complete Guide to Email Account Enumeration and OSINT Using Kali Linux

holehe is a Python-based OSINT tool that checks whether a given email address is registered on numerous popular websites and services — including social media platforms, e-commerce sites, and productivity tools. It works by abusing each service’s “forgot password” or “account registration” endpoints, which frequently leak whether an email is already associated with an account (via subtly different response messages, status codes, or timing) without ever needing valid credentials. Holehe is a fast, lightweight complement to username-based tools like Sherlock, focusing specifically on email-to-account correlation.

Installation

# Kali/Debian (pre-installed, or reinstall)
sudo apt update && sudo apt install holehe -y

# Via pip (any platform with Python 3)
pip3 install holehe --break-system-packages

# From source
git clone https://github.com/megadose/holehe.git
cd holehe
python3 setup.py install

Verify installation:

holehe --help

Syntax

holehe [OPTIONS] EMAIL

Command-Line Options

FlagDescription
EMAILThe target email address to check (positional argument)
-C, --csvExport results in CSV format
-j, --jsonExport results in JSON format
-o, --output FILEWrite output to a specified file
--only-usedShow only sites where the email is registered (hide “not used”/”rate limited” entries)
-nc, --no-colorDisable colored terminal output
-t, --timeout SECSet timeout in seconds for each site’s request
-N, --no-clearDo not clear the terminal before displaying results
-M, --modulesShow a list of all supported modules/websites Holehe can check against

Basic Usage

holehe target@gmail.com

Expected output:

*********************************
    target@gmail.com
*********************************

[+] Twitter
[+] Instagram
[+] Spotify
[-] Pinterest
[x] Adobe (rate limited)

email used : 3
email not used : 1
rate limit : 1

Practical Examples

Example 1 — Basic email check

holehe johnsmith@gmail.com
[+] Twitter
[+] GitHub
[-] Pinterest
email used : 2
email not used : 1

Example 2 — Showing only sites where the email is used

holehe johnsmith@gmail.com --only-used
[+] Twitter
[+] GitHub

Example 3 — Exporting results to CSV

holehe johnsmith@gmail.com --csv
cat johnsmith_gmail_com.csv
email,domain,exists,rateLimit,emailrecovery,phoneNumber,others
johnsmith@gmail.com,twitter.com,True,False,,,
johnsmith@gmail.com,pinterest.com,False,False,,,

Example 4 — Exporting results to JSON

holehe johnsmith@gmail.com --json > results.json
cat results.json
[
  {"name": "twitter", "domain": "twitter.com", "exists": true},
  {"name": "pinterest", "domain": "pinterest.com", "exists": false}
]

Example 5 — Listing all supported modules

holehe --modules
Modules available: 120
adobe.py
amazon.py
github.com
instagram.py
spotify.py
twitter.py
...

Example 6 — Setting a custom timeout for slow networks

holehe johnsmith@gmail.com -t 15
[+] Twitter
[+] Spotify
email used : 2

Example 7 — Saving output to a plain text file

holehe johnsmith@gmail.com -o johnsmith_results.txt
cat johnsmith_results.txt
[+] Twitter
[+] GitHub
[-] Pinterest

Example 8 — Checking multiple emails in a simple loop

for email in john@gmail.com jane@gmail.com; do
    echo "=== $email ==="
    holehe "$email" --only-used
done
=== john@gmail.com ===
[+] Twitter
[+] GitHub

=== jane@gmail.com ===
[+] Instagram
[+] Pinterest

Common Use Cases

Automation with Bash

Batch-check a list of email addresses and consolidate “used” results:

#!/bin/bash
# holehe_batch.sh
mkdir -p holehe_results
while IFS= read -r email; do
    echo "[*] Checking $email"
    safe_name=$(echo "$email" | tr '@.' '_')
    holehe "$email" --only-used -o "holehe_results/${safe_name}.txt"
done < emails.txt

echo "[+] All results saved in holehe_results/"

Consolidate all “used” platforms across a batch into a single summary report:

#!/bin/bash
for file in holehe_results/*.txt; do
    email=$(basename "$file" .txt)
    echo "=== $email ==="
    cat "$file"
    echo
done > holehe_summary_report.txt
echo "[+] Summary report saved to holehe_summary_report.txt"

Tips and Best Practices

Troubleshooting

ProblemCauseFix
Many modules show [x] rate limitedToo many requests sent to a service in a short window, or shared IP already flaggedWait before retrying; consider spacing out checks or using a different network/proxy
Module reports incorrect/stale resultTarget website changed its registration or password-reset flow, breaking Holehe’s detection logic for that moduleUpdate Holehe to the latest version; report the broken module upstream if still failing
No output for any moduleNetwork connectivity issue or firewall blocking outbound HTTPSVerify general internet connectivity; test with curl to one of the target service domains
Extremely slow full scanDefault timeout too long across 120+ modules, some of which are unresponsiveReduce -t timeout value to skip slow/unresponsive modules faster
pip install fails with dependency conflictsConflicting Python package versions in the system environmentUse a dedicated virtual environment (python3 -m venv venv && source venv/bin/activate) before installing

References

Exit mobile version