otlite · Domain and DNS
Install theHarvester on Linux or macOS in one command
theHarvester gathers email addresses, subdomains, IPs, and names for a domain from public sources. Search engines, certificate logs, and threat-intelligence services each report separately, and -f writes the combined results to JSON and XML.
theHarvester in three lines
pipx install otlite
otlite install theharvester
otlite run theharvester -- d:example.comRuns laramies/theHarvester (GPL-2.0, ★ 18k, otlite 1.2.1, catalog updated Oct 23, 2026). otlite installs and runs it at a tested version; it does not change or verify the tool itself.
What theHarvester is for
- Early recon on a domain you are authorised to assess.
- Collecting staff addresses that show a company's email naming pattern.
- Choosing sources with -b to stay passive or to add keyed ones.
Typed inputs for theHarvester
otlite translates these prefixes into theHarvester's own flags. Anything else after -- is passed through unchanged, so every original flag still works.
- d:
- Domain ·
otlite run theharvester -- d:example.com
Run every installed tool that takes the same input at once: otlite run --all d:example.com
Optional keys: SHODAN_API_KEY, HUNTER_API_KEY. Store each with otlite keys set NAME.
Where the results go
Every run lands under ./results/theharvester/<target>/ as a timestamped output file, a .meta.json sidecar (the exact command, start and end time, exit code, and the SHA-256 of the output), and a .envelope.json with the entities found, in the same shape for every tool. List runs with otlite results, group them with --case, compare the last two with otlite diff theharvester <target>, and pull indicators out with otlite extract theharvester.
Before you run it
- Needs Python 3.12 or later. otlite pins a tested commit; current upstream has moved on to Python 3.14.
- Several sources only answer with an API key. Add the common ones with otlite keys set SHODAN_API_KEY and otlite keys set HUNTER_API_KEY.
- DNS resolution, brute force, and screenshot options contact the target directly. Leave them off for passive work.
Update, remove, inspect
otlite info theharvester # inputs, keys, an example command
otlite example theharvester # sample output, where there is one
otlite update theharvester # move to the next tested version
otlite remove theharvester # delete its virtualenvFull reference: the otlite docs, and the tool's own README on GitHub.
Pairs with
When open-source isn't enough
theHarvester collects what public sources expose about a domain. SearchIn's email and DNS providers add confidence-scored addresses with their sources and each host's records over time.
FAQ
theHarvester with otlite, answered
How do I install theHarvester on Kali, Ubuntu, or macOS?
Install otlite once with pipx install otlite (or the one-line installer on the otlite page), run otlite init, then otlite install theharvester. The tool lands in its own virtualenv under ~/.otlite/, pinned to a version that was tested, so nothing touches your system Python. otlite doctor prints the command that fixes a missing git or venv module.
Which inputs does theHarvester take through otlite?
d: (domain). otlite maps each prefix to theHarvester's own flag. Everything after -- that is not a typed input is passed through unchanged, so the original flags still work.
Where does otlite save theHarvester results?
Under ./results/theharvester/<target>/ in the folder you run from, as a timestamped output file plus a .meta.json sidecar (the exact command, timing, exit code, and SHA-256) and a .envelope.json with the entities found. Add --case <name> to group runs, otlite results to list them, and otlite diff theharvester <target> to compare the last two.
Does theHarvester need an API key or a login?
No key is required for the basic run. Several sources only answer with an API key. Add the common ones with otlite keys set SHODAN_API_KEY and otlite keys set HUNTER_API_KEY.
Can I run theHarvester together with other tools?
Yes. otlite run --all d:example.com runs every installed tool that takes domain input, in parallel, including theHarvester. Save the combination as a playbook to repeat it.