OSINTverse

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.com

Runs 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 virtualenv

Full reference: the otlite docs, and the tool's own README on GitHub.

Pairs with

Sublist3r collects a domain's subdomains from search engines, certificate logs, and public lookup sites.
Holehe asks about 120 services whether an email address is registered, using their password-reset and sign-up checks without sending anything to the address.
SpiderFoot runs two hundred-odd modules against a domain, IP, email, or username and links what they return into one graph.

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.

People & identity
Domain intelligence

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.