# Holehe Command-Line Arguments: Complete CLI Reference for Email OSINT Scanning

> Explore Holehe command-line arguments for efficient email OSINT scanning. Discover 6 arguments, including required email input and optional flags for output, behavior, and export.

- Repository: [Palenath/holehe](https://github.com/megadose/holehe)
- Tags: api-reference
- Published: 2026-09-01

---

**Holehe supports 6 command-line arguments including one required positional argument (`email`) and 5 optional flags that control output formatting, runtime behavior, and result export options.**

Holehe is an open-source email reconnaissance tool developed by [megadose](https://github.com/megadose/holehe) that checks email addresses against 120+ websites to identify where they're registered. Understanding its command-line interface is essential for effective OSINT investigations and automation workflows. This guide explains every argument available in [`holehe/core.py`](https://github.com/megadose/holehe/blob/main/holehe/core.py) with practical usage examples.

---

## Required Positional Argument: `email`

The only mandatory input is the target email address you want to scan.

| Argument | Format | Description | Source |
|----------|--------|-------------|--------|
| `email` | Positional | One or more email addresses to investigate. Per the implementation in **[`holehe/core.py`](https://github.com/megadose/holehe/blob/main/holehe/core.py) lines 181-184**, only the **first email** is processed—additional addresses are silently ignored. | [`core.py#L181`](https://github.com/megadose/holehe/blob/master/holehe/core.py#L181) |

```bash

# Basic usage: scan a single email

holehe target@example.com

```

```bash

# Multiple addresses provided (only first is used)

holehe target@example.com another@example.com

```

---

## Output Control Flags

### `--only-used`

Filters results to show **only sites where the email is actually registered**. By default, Holehe displays all checked services regardless of outcome. This flag reduces noise in large-scale investigations.

| Source | Implementation |
|--------|----------------|
| [`core.py#L184-L186`](https://github.com/megadose/holehe/blob/master/holehe/core.py#L184) | Boolean flag passed to result formatter |

```bash
holehe target@example.com --only-used

```

### `--no-color`

Disables **ANSI color codes** in terminal output. Essential for environments without color support, log file redirection, or when piping output to other tools.

| Source | Implementation |
|--------|----------------|
| [`core.py#L186-L188`](https://github.com/megadose/holehe/blob/master/holehe/core.py#L186) | Overrides default `colorama` styling |

```bash
holehe target@example.com --no-color > results.txt

```

### `--no-clear`

Prevents the terminal from being **cleared before displaying results**. Preserves prior command history and output—useful for iterative investigations or debugging.

| Source | Implementation |
|--------|----------------|
| [`core.py#L188-L190`](https://github.com/megadose/holehe/blob/master/holehe/core.py#L188) | Skips `os.system('clear')` call |

```bash
holehe target@example.com --no-clear

```

---

## Runtime Behavior Flags

### `-NP` / `--no-password-recovery`

Skips **password-recovery attempt modules** on services supporting this method (e.g., Adobe, Mail.ru). Reduces:

- Network requests and scan duration
- Risk of rate-limiting
- Account lockout triggers on target services

| Source | Implementation |
|--------|----------------|
| [`core.py#L190-L192`](https://github.com/megadose/holehe/blob/master/holehe/core.py#L190) | Boolean flag filtering module selection |

```bash
holehe target@example.com --no-password-recovery

```

---

## Data Export and Performance

### `-C` / `--csv`

Exports the **complete result set** to a timestamped CSV file. Filename format: `holehe_{email}_{timestamp}.csv`. Captures all metadata including rate-limited services and errors.

| Source | Implementation |
|--------|----------------|
| [`core.py#L192-L194`](https://github.com/megadose/holehe/blob/master/holehe/core.py#L192) | Triggers `pandas.DataFrame.to_csv()` export |

```bash
holehe target@example.com --csv

```

### `-T` / `--timeout`

Sets the **HTTP request timeout in seconds** for each module. Default: **10 seconds**. Increase for slow connections or decrease for faster failure on unresponsive services.

| Source | Implementation |
|--------|----------------|
| [`core.py#L194-L196`](https://github.com/megadose/holehe/blob/master/holehe/core.py#L194) | Passed to `aiohttp.ClientTimeout` |

```bash

# Aggressive timing for fast networks

holehe target@example.com --timeout 5

# Lenient timing for Tor/proxied connections

holehe target@example.com --timeout 30

```

---

## Complete Argument Parsing Flow

All arguments are processed through Python's **`argparse`** library at runtime. The parser initialization and `parse_args()` call occur at **[`holehe/core.py`](https://github.com/megadose/holehe/blob/main/holehe/core.py) line 198**, feeding directly into the asynchronous execution engine.

```python

# Simplified structure from holehe/core.py

parser = argparse.ArgumentParser()
parser.add_argument("email", nargs="+", help="Target email address")
parser.add_argument("--only-used", action="store_true", ...)
parser.add_argument("--no-color", action="store_true", ...)
parser.add_argument("--no-clear", action="store_true", ...)
parser.add_argument("-NP", "--no-password-recovery", action="store_true", ...)
parser.add_argument("-C", "--csv", action="store_true", ...)
parser.add_argument("-T", "--timeout", type=int, default=10, ...)
args = parser.parse_args()  # Line 198

```

---

## Practical Usage Patterns

### Silent Logging-Compatible Scan

```bash
holehe target@example.com --no-color --no-clear --only-used --csv

```

### Fast, Non-Intrusive Reconnaissance

```bash
holehe target@example.com --no-password-recovery --timeout 5

```

### Full Documentation Export

```bash
holehe target@example.com --csv --timeout 20

```

---

## Summary

- **One required argument**: `email` (positional, accepts multiple but uses only first)
- **Five optional flags**: `--only-used`, `--no-color`, `--no-clear`, `--no-password-recovery` (`-NP`), `--csv` (`-C`), `--timeout` (`-T`)
- **All arguments defined in** [`holehe/core.py`](https://github.com/megadose/holehe/blob/main/holehe/core.py) **lines 181-198** using Python's `argparse`
- **Default timeout**: 10 seconds; adjustable per network conditions
- **CSV export**: Generates timestamped files for forensic documentation

---

## Frequently Asked Questions

### How do I scan multiple emails with Holehe?

Holehe's CLI accepts multiple email addresses but **only processes the first one** per the `nargs="+"` implementation in [`holehe/core.py`](https://github.com/megadose/holehe/blob/main/holehe/core.py) lines 181-184. For batch processing, use shell loops:

```bash
for email in $(cat emails.txt); do holehe "$email" --csv; done

```

### Can I disable all visual formatting for automated scripts?

Yes. Combine `--no-color` (removes ANSI codes) and `--no-clear` (preserves terminal history). For fully machine-readable output, add `--csv` to generate structured files instead of parsing terminal text.

### What happens if I set timeout too low?

Modules hitting the timeout will return **rate-limited or failed status** rather than completed checks. The default 10 seconds balances thoroughness and speed; reduce only on reliable, fast connections.

### Does `--only-used` affect CSV export?

No. `--only-used` filters **terminal display only**. The `--csv` flag always exports **all results** including negative findings and errors, providing complete forensic records regardless of display filters.