SpiderFoot Errors

Fixing SpiderFoot Errors: 16 Common Problems and Easy Fixes (2026)

Quick answer: Most SpiderFoot errors come from four things: installing outside a Python virtual environment, a Python version that is too new for SpiderFoot’s pinned libraries, a busy port, or missing API keys. Create a venv, install requirements.txt inside it, start SpiderFoot on a free port with python3 sf.py -l 127.0.0.1:5001, and add API keys in Settings. If a library still will not build, use Docker or the Kali package.

This guide lists the SpiderFoot errors people hit most often in 2026, explains what each message means in plain English, and gives you the exact fix. Scroll to your section, or press Ctrl + F and paste your error message.

Before You Start: 3 Quick Checks

  1. Check your Python version: python3 --version. SpiderFoot 4.0 needs Python 3.7 or newer. Very new versions (3.12, 3.13 and later) can fail to build some of its older pinned libraries.
  2. Check you are in the SpiderFoot folder: ls should show sf.py and requirements.txt.
  3. Turn on debug output: start SpiderFoot with python3 sf.py -d -l 127.0.0.1:5001. The extra logging usually points straight at the problem. Scan-level logs are also in the Log tab of every scan.

Installation Errors

1. error: externally-managed-environment

What it means: Newer Linux systems (Kali, Debian 12+, Ubuntu 23.04+) block pip from installing packages system-wide.

Fix: Install SpiderFoot inside a virtual environment:

cd spiderfoot
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip wheel setuptools
pip install -r requirements.txt

On Kali you can skip pip completely with sudo apt install spiderfoot. See our SpiderFoot Kali Linux install guide.

2. Failed building wheel for lxml

What it means: SpiderFoot pins lxml below version 5. On new Python versions there may be no ready-made wheel, so pip tries to compile it and fails.

Fix (pick one):

  • Install the build headers: sudo apt install libxml2-dev libxslt1-dev python3-dev build-essential (Debian/Ubuntu/Kali).
  • Create the venv with an older, supported Python such as 3.11 (for example with pyenv or uv).
  • Run SpiderFoot in Docker, which ships its own tested Python.

3. Failed building wheel for cryptography

What it means: The pinned cryptography version could not find a prebuilt wheel for your platform (common on ARM, Android/Termux and some Macs).

Fix: Install Rust and OpenSSL headers (sudo apt install rustc cargo libssl-dev libffi-dev), upgrade pip, and retry. On Termux use pkg install rust openssl libffi, or follow Method 2 in our SpiderFoot Termux guide.

4. ModuleNotFoundError: No module named ‘distutils’

What it means: Python 3.12 removed distutils, which some older packages still import.

Fix: pip install --upgrade setuptools inside your venv. If it persists, use Python 3.11 or Docker.

5. Microsoft Visual C++ 14.0 or greater is required (Windows)

What it means: pip needs a C compiler to build a package on Windows.

Fix: Install “Build Tools for Visual Studio” with the Desktop development with C++ workload, then rerun pip install -r requirements.txt. Or use Docker Desktop or WSL. Our SpiderFoot install guide for Windows, Mac, Linux and Docker walks through each option.

6. ‘python’ is not recognized as an internal or external command

Fix: Reinstall Python from python.org and tick Add python.exe to PATH, or use the launcher: py -3 sf.py -l 127.0.0.1:5001.

Startup Errors

7. ModuleNotFoundError: No module named ‘cherrypy’ (or ‘mako’, ‘dns’, ‘yaml’)

What it means: The requirements are not installed in the Python you are using. This almost always happens because the venv is not active.

Fix: Run source venv/bin/activate (Linux/macOS) or venv\Scripts\activate (Windows), then pip install -r requirements.txt and start SpiderFoot again.

8. SyntaxError when running sf.py

What it means: You started SpiderFoot with Python 2.

Fix: Always use python3 sf.py. Python 2 is not supported.

9. OSError: [Errno 98] Address already in use

What it means: Something is already using port 5001, often an older SpiderFoot process.

Fix: Use another port (python3 sf.py -l 127.0.0.1:5002) or find and stop the old process:

sudo lsof -i :5001
kill PID_NUMBER

On Windows use netstat -ano | findstr 5001 and end the task in Task Manager.

10. Web UI will not load (“This site can’t be reached”)

  • Make sure the terminal running SpiderFoot is still open.
  • Use http://, not https://.
  • If you access it from another device, start it with -l 0.0.0.0:5001 and allow the port in your firewall.
  • With Docker, confirm the port mapping: docker run -p 5001:5001 ...

11. Permission denied or “database is locked”

What it means: SpiderFoot cannot write its SQLite database, or two SpiderFoot instances are using the same database.

Fix: Run only one instance at a time, and make sure your user owns SpiderFoot’s data folder (by default ~/.spiderfoot on Linux). Avoid running it with sudo unless you installed it that way.

Scan and Module Errors

12. Scan stuck on “RUNNING” or “STARTING”

Fix: Open the scan’s Log tab to see which module is hanging. Abort the scan, then rerun with the Passive or Footprint profile, or deselect slow modules. Lowering the maximum threads in Settings also helps on small machines.

13. A module returns no data

  • The module needs an API key. Add it under Settings and click Save Changes.
  • The key hit its daily limit (HTTP 429). Wait, or upgrade the plan.
  • The target type does not match the module. Learn which target types SpiderFoot can analyze.

Our list of SpiderFoot modules and data sources shows which ones need keys.

14. SSL: CERTIFICATE_VERIFY_FAILED

Fix: Update your certificate store: sudo apt install --reinstall ca-certificates on Linux, or run Install Certificates.command from your Python folder on macOS. Inside the venv, pip install --upgrade certifi. Corporate proxies that inspect HTTPS can also cause this.

15. Tor / dark web modules fail

Fix: Install and start Tor (sudo apt install tor && sudo systemctl start tor), then in Settings set the SOCKS proxy to 127.0.0.1 port 9050 with type TOR.

16. Scan is very slow or uses too much memory

Fix: Avoid the All profile for large targets, limit subdomain brute-forcing, reduce threads, and delete old scans you no longer need to keep the database small.

Error Quick-Reference Table

ErrorMost likely causeFastest fix
externally-managed-environmentSystem pip blockedUse a venv
Failed building wheel for lxmlPython too new / missing headersInstall libxml2-dev, libxslt1-dev or use Python 3.11
Failed building wheel for cryptographyNo wheel for platformInstall Rust + libssl-dev
No module named ‘cherrypy’venv not activeActivate venv, reinstall requirements
Address already in usePort 5001 busyUse port 5002 or stop old process
Site can’t be reachedServer stopped / wrong URLKeep terminal open, use http://
database is lockedTwo instances runningRun one instance only
Module returns nothingMissing or rate-limited API keyAdd or check key in Settings

How to Do a Clean Reinstall

If nothing works, start fresh. Back up your data folder first if you want to keep old scans.

rm -rf spiderfoot
git clone https://github.com/smicallef/spiderfoot.git
cd spiderfoot
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip wheel setuptools
pip install -r requirements.txt
python3 sf.py -l 127.0.0.1:5001

Still stuck? Search the SpiderFoot GitHub issues for your exact error message. Include your OS, Python version and the full error text if you open a new issue.

Frequently Asked Questions

Why won’t SpiderFoot install on Python 3.12 or 3.13?

SpiderFoot 4.0 pins older versions of libraries such as lxml. On very new Python versions pip may have to compile them and fail. Install the build headers, use Python 3.11 in a virtual environment, or run SpiderFoot in Docker.

How do I fix ‘No module named cherrypy’ in SpiderFoot?

Activate the virtual environment you created for SpiderFoot, then run pip install -r requirements.txt from the SpiderFoot folder. The error means the requirements are not installed in the Python you are using.

How do I change the SpiderFoot port?

Start SpiderFoot with a different port in the -l option, for example python3 sf.py -l 127.0.0.1:5002, then open http://127.0.0.1:5002.

Where are SpiderFoot logs stored?

Each scan has a Log tab in the web interface. You can also start SpiderFoot with -d for debug output in the terminal. On Linux, SpiderFoot keeps its database and logs in the ~/.spiderfoot data folder by default.

Why does my SpiderFoot scan return no results?

Common reasons are missing or rate-limited API keys, a scan profile that skips the modules you need, or a target type the modules do not support. Check the scan Log tab to see which modules ran.

Is Docker the easiest way to avoid SpiderFoot errors?

Often, yes. Docker builds SpiderFoot with a tested Python version and its own libraries, so most dependency and Python version errors disappear.

Conclusion

Nearly every SpiderFoot problem can be fixed in a few minutes: use a virtual environment, stay on a Python version the pinned libraries support (or use Docker), pick a free port, and add API keys for the modules you rely on. Once it is running, learn the tool properly with our SpiderFoot tutorial for beginners and our SpiderFoot commands guide.

1 thought on “Fixing SpiderFoot Errors: 16 Common Problems and Easy Fixes (2026)”

  1. Pingback: Does SpiderFoot Need Technical Skills? Answer + 30-Day Plan

Leave a Comment

Your email address will not be published. Required fields are marked *