Skip to main content

formharvester

Website: formharvester.com

FormHarvester is an AI-assisted form intelligence engine. It navigates the open web autonomously - executing searches, parsing page structure, extracting contact signals, and interacting with forms at the browser level. Built on async browser with stealth fingerprinting, proxy rotation, and a pluggable captcha solver interface.

Adjusting config.txt

mode

The CSV that will be used by the bot (e.g. mode = lawn will use lawn.csv)

max_google_pages

The CSV that will be used by the bot (e.g. mode = lawn will use lawn.csv)

skip_ads

FormHarvester will skip any ads on Google Search.

start_page

FormHarvester will start on X google page.

send_form

FormHarvester will send the form inside the website. It can be disabled to save time.

generate_email_sources

Generate an extra file showing the source URL where the email was extracted.

hide_browser

This setting will run the browser in headless mode and it will be hidden.

max_time

Max time FormHarvester can spend on a single website.

min_delay and max_delay

A random delay between min and max will be used for google.

captcha_sleep

Sleep for X minutes after a Google captcha is found. 0 to disable.

search_timer

A waiting time (in minutes) between the last google search and the next one.

[captcha]

Configure an automatic captcha solver. Set provider to deathbycaptcha, 2captcha, or none (blank auto-detects from whichever credentials you fill in):

[captcha]
provider = 2captcha
dbc_username =
dbc_password =
twocaptcha_api_key = your_2captcha_key

[dev]

Disable in production. They are used for development reasons. debug_form may be useful, as it prevents the form from submitting.

How to run

Executable

Download formharvester.exe (built automatically on every release by .github/workflows/release-windows-exe.yml), then run it.

Python

pip install -e .
formharvester          # runs the config-driven harvest loop (reads config.txt)

Programmatic use (library API)

Since 2.3.0 FormHarvester ships a library API so you can drive the engine from your own code - no config.txt, input CSV or progress files required. The CLI is unchanged.

from formharvester import FormHarvester, FormFillDetails, HarvesterOptions

details = FormFillDetails(
    first_name="Jane", last_name="Doe",
    email="jane@example.com", phone="1234567890",
    subject="Enquiry", message="Hi, I'd like a quote.",
)

with FormHarvester(details, HarvesterOptions(send_form=True, headless=True)) as fh:
    result = fh.harvest("https://acme.com")
    print(result.status, result.submitted, result.emails)

    for r in fh.harvest_many(["https://a.com", "https://b.com"]):
        print(r.url, r.status)

result.status is one of SUBMITTED, FORM_NOT_FOUND, BUTTON_NOT_FOUND, VISITED, or ERROR - the same tokens the CLI writes to its progress file. One-shot helpers harvest_site(url, details) and harvest_sites(urls, details) are also available.

Package layout (2.3.0)

src/formharvester/
├── __init__.py          # public API (FormHarvester, FormFillDetails, …)
├── api.py               # library API
├── engine/              # Selenium browser engine + Chrome driver
├── scraper/             # Google search + email scraping
├── form_handler/        # contact-page discovery, field fill, submit
├── captcha/             # solver providers (DeathByCaptcha, 2captcha) + detection
├── cli/                 # config.txt loader + run loop (`formharvester` command)
└── utils/               # root-domain, email regex, link filters

Building the Windows executable (maintainers)

.github/workflows/release-windows-exe.yml builds formharvester.exe with PyInstaller and attaches it to the GitHub Release for any pushed v* tag (also runnable manually via workflow_dispatch). To build it locally:

uv sync --no-group dev
uv pip install pyinstaller
uv run pyinstaller --onefile --console --name formharvester packaging/windows_entry.py

Folder structure (runtime)

data

Where scraped emails and logs are dumped.

drivers

Browser drivers used by selenium.

input

Input CSV files go here.

log

This folder will report errors on websites, very useful to improve the bot.


This project is released under the MIT License. You are free to use, modify, and distribute this software, provided that the original copyright notice and license terms are included in all copies or substantial portions of the software.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

formharvester-2.3.0.tar.gz (837.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

formharvester-2.3.0-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

Details for the file formharvester-2.3.0.tar.gz.

File metadata

  • Download URL: formharvester-2.3.0.tar.gz
  • Upload date:
  • Size: 837.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for formharvester-2.3.0.tar.gz
Algorithm Hash digest
SHA256 4f2404c5b14441730297ee0bc109cefdd64e770ecb39b504075ac2723deb7bf7
MD5 fe45b77009f5ec6cd7f9e3379a268f25
BLAKE2b-256 e0388c085da2f85aef447bb0be67b54c3f109e2125e8fcbaf476b71c6df22b00

See more details on using hashes here.

Provenance

The following attestation bundles were made for formharvester-2.3.0.tar.gz:

Publisher: publish.yml on dariomory/formharvester

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file formharvester-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: formharvester-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 31.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for formharvester-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f6e28f07e4d737849b0b256a1b54773be649ea6e7ff840482564c3eed9a37787
MD5 40e9f721a98189417600972e0044b584
BLAKE2b-256 30e72dbff554ce07f2a8ad2f2432297f5a2b71b56728339c26253bc28ee66fbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for formharvester-2.3.0-py3-none-any.whl:

Publisher: publish.yml on dariomory/formharvester

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.4.1

2 files

2.4.0

2 files

This release

2.3.0 This release

2 files

2.2.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page