The open-source growth engine that puts your LinkedIn B2B lead generation on autopilot.
OpenOutreach is a self-hosted, open-source LinkedIn automation tool designed for B2B lead generation, without the risks and costs of cloud SaaS services.
It automates the entire outreach process in a stealthy, human-like way:
- Discovers and enriches target profiles
- Sends personalized connection requests
- Follows up with custom messages after acceptance
- Tracks everything in a local database (full data ownership, resumable workflows)
Why choose OpenOutreach?
- π‘οΈ Undetectable β Playwright + stealth plugins mimic real user behavior
- π Fully customizable β Python-based campaigns for unlimited flexibility
- πΎ Local execution β You own your workflow
- π³ Easy deployment β Dockerized, one-command setup
- β¨ AI-ready β Built-in templating for hyper-personalized messages (integrate GPT easily)
Perfect for founders, sales teams, and agencies who want powerful automation without account bans or subscription lock-in.
Get up and running in minutes by running the application directly on your machine.
- Git
- Python (3.11+ recommended)
venvfor creating virtual environments (usually included with Python)
git clone https://github.com/eracle/OpenOutreach.git
cd OpenOutreachIt's highly recommended to use a virtual environment to manage dependencies.
# Create the virtual environment
python -m venv venv
# Activate it
source venv/bin/activateWe use uv for fast dependency management, which will be installed first.
# Install uv
pip install uv
# Install project dependencies
uv pip install -r requirements/local.txt
# Install required browser assets
playwright install --with-deps chromiumYou need to provide your LinkedIn credentials and target profiles.
-
Configure LinkedIn accounts
cp assets/accounts.secrets.template.yaml assets/accounts.secrets.yaml
Edit
assets/accounts.secrets.yamlwith your credentials. -
Add target profiles
Paste LinkedIn profile URLs intoassets/inputs/urls.csv.
You can run the main script directly:
python main.pyWe also support running the application via Docker. This is a great option for ensuring a consistent environment and simplifying dependency management.
For full instructions, please see the Docker Installation Guide.
| Feature | Description |
|---|---|
| π€ Advanced Browser Automation | Powered by Playwright with stealth plugins for human-like, undetectable interactions. |
| π‘οΈ Reliable Data Scraping | Uses LinkedIn's internal Voyager API for accurate, structured profile data (no fragile HTML parsing). |
| π Python-Native Campaigns | Write flexible, powerful automation sequences directly in Python. |
| π Stateful Workflow Engine | Tracks profile states (DISCOVERED β ENRICHED β CONNECTED β COMPLETED) in a local DB β resumable at any time. |
| πΎ Persistent Local Database | Full data ownership via dedicated SQLite DB per account. |
| π³ Containerized Setup | One-command Docker + Make deployment. |
| π₯οΈ Visual Debugging | Real-time browser view via built-in VNC server (localhost:5900). |
| βοΈ AI-Ready Templating | Jinja or AI-prompt templates for hyper-personalized messages (easy GPT integration). |
This project is built in spare time to provide powerful, free open-source growth tools.
Maintaining stealth, fixing bugs, adding features (multi-account scaling, better templates, AI enhancements), and staying ahead of LinkedIn changes takes serious effort.
Your sponsorship funds faster updates and keeps it free for everyone.
Popular Tiers & Perks:
| Tier | Monthly | Benefits |
|---|---|---|
| β Supporter | $5 | Huge thanks + name in README supporters list |
| π Booster | $25 | All above + priority feature requests + early access to new campaigns |
| π¦Έ Hero | $100 | All above + personal 1-on-1 support + influence roadmap |
| π Legend | $500+ | All above + custom feature development + shoutout in releases |
Thank you to all sponsors β you're powering open-source B2B growth! π
Got a specific use case, feature request, or questions about setup?
Book a free 15-minute call β Iβd love to hear your needs and improve the tool based on real feedback.
The default campaign (linkedin/campaigns/connect_follow_up.py) handles:
- Profile enrichment
- Connection requests
- Personalized follow-ups
Profile states: DISCOVERED β ENRICHED β CONNECTED β COMPLETED (or FAILED)
Edit the campaign file directly for custom logic, templates, or AI integration.
βββ assets/
β βββ accounts.secrets.yaml # LinkedIn credentials
β βββ inputs/
β βββ urls.csv # Target profiles
βββ docs/
β βββ docker.md # NEW: Docker setup guide
β βββ ...
βββ linkedin/
β βββ actions/ # Browser actions
β βββ api/ # Voyager API client
β βββ campaigns/ # Workflows
β βββ db/ # SQLite utilities
β βββ navigation/ # Login helpers
β βββ sessions/ # Session management
βββ main.py # Entry point
βββ local.yml # Docker Compose
βββ Makefile # Shortcuts
Join for support and discussions:
Telegram Group
GNU GPLv3 β see LICENCE.md
Not affiliated with LinkedIn.
Automation may violate LinkedIn's terms (Section 8.2). Risk of account suspension exists.
Use at your own risk β no liability assumed.
Made with β€οΈ

