Scout turns social profiles into verified email lists
Free lead generation tool. Scrape Instagram, Twitch, TikTok, and LinkedIn profiles. Extract emails from bios, verify via SMTP, export to CSV.
At a glance
- What is it?
- Scout is a Python command line tool that scrapes profiles from Instagram, TikTok, LinkedIn, GitHub, YouTube, Twitch, Pinterest and Linktree, then extracts and SMTP verifies email addresses before exporting to CSV. It is built for appointment setters doing outbound prospecting, and it is still a CLI with a web app announced as in development.
- Who is it for?
- Scout fits appointment setters and small sales teams who need contact details from public profiles and cannot justify a paid enrichment API, and it runs on nothing more than Python and a requirements file. It is the wrong tool for anything requiring guaranteed deliverability, for large scale or scheduled scraping, or for teams that need a CRM rather than CSV files.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 48 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Lead generation without a paid enrichment API
Appointment setters working cold lists usually face two costs: a subscription to a data broker, and a per lookup fee from an email finding service. Scout is built to remove both from the equation. The project's own claim is that email enrichment uses SMTP verification with no paid API needed, and that an optional Hunter.io key is supported for additional coverage rather than required.
The audience is narrow and stated plainly in the README: appointment setters. The output is a CSV of leads with contact details, not a CRM, not a sequence, not a campaign manager. Scout gathers raw contact details and stops there.
That boundary matters. The tool is a scraper with an enrichment stage bolted on, and the value of the enrichment stage depends entirely on how much of each profile's public page you can actually reach. The README is honest about this in its own limitations list, which is worth reading before any expectations are set.
Eight platforms, one output format
The scraper layer covers Instagram, TikTok, LinkedIn, GitHub, YouTube, Twitch, Pinterest and Linktree, and every one of them emits the same shape of record. That consistency is the architectural point of the project: an enrichment stage and a CSV writer can be written once and applied to any platform.
What each platform yields differs. Instagram returns profile, bio, followers, email, phone and links. TikTok returns profile, bio, followers, likes and email. LinkedIn returns profile, headline, bio and email, and is the only platform that needs authentication. GitHub returns profile, bio, repos, email and website. YouTube returns channel name, description, subscribers, email and links. Twitch adds partner and affiliate status plus social links. Pinterest returns profile, bio, followers, pins and website. Linktree covers the whole family of link in bio platforms, including Stan, Linkr and Bio.link.
That last row is a small design decision with a large effect. Linktree, Stan, Linkr and Bio.link are treated as one platform rather than four, which keeps the scraper count at eight without losing the pages where appointment setters most often publish contact details.
The eight step enrichment pipeline
The enrichment pipeline is where the tool does more than scraping. The README describes it in eight steps, and the order matters because each step narrows the search for a contact address.
First, email and phone are extracted from the bio text. Second, the lead's website is scraped, along with its contact and about pages. Third, the company is detected from the headline, with the example given being a title like CEO at CompanyX. Fourth, the company domain is found through a DNS MX lookup. Fifth, the email pattern is detected from addresses already present on that site. Sixth, candidates are generated, first.last and first among the forms named. Seventh, each candidate is checked against the mail server over SMTP. Eighth, a confidence score from 0 to 100 is assigned based on where the address came from and whether it verified.
The domain and pattern detection steps are what make the guesses more than random. An MX lookup tells the pipeline which mail server would even accept mail for that company, and pattern detection means the generated candidate follows the naming convention the company's own site already uses. Lead scoring from 0 to 100 comes out of this pipeline as well.
The dependencies reflect the design: dnspython is there for the MX lookup, httpx and requests for the fetching, and rich for terminal output.
Only LinkedIn asks for a session cookie
Seven of the eight platforms need no authentication at all. LinkedIn is the exception, and the setup procedure is manual by design.
The README walks through logging into LinkedIn in Chrome, opening DevTools, navigating to Application, then Cookies for linkedin.com, and copying the value of the li_at cookie into the environment file. The result is a single line in .env.
LINKEDIN_COOKIE=your_li_at_cookie_valueThe project does not attempt to log in or solve the login for you, which is both a limitation and a reason the tool works at all. A cookie that expires on its own means the LinkedIn path breaks periodically and has to be refreshed, and the README lists that under limitations rather than hiding it. There is also a second, optional credential in the environment file, a Hunter.io key used only to widen coverage when the free path misses.
The practical consequence for a team is that LinkedIn access is an ongoing chore while the other seven platforms are not, so the order in which you try this tool should probably start with the platforms that require nothing.
Proxy rotation and the IP problems it partly hides
Scout ships proxy rotation and user agent rotation, plus configurable scrape delay, and the environment file offers three ways to point it at a proxy. A single proxy is set with one variable.
# Single proxy
SCOUT_PROXY=http://user:pass@host:port
# Rotating proxies from file (one per line)
SCOUT_PROXY_FILE=proxies.txt
# Free anonymous proxies (no config needed)
SCOUT_FREE_PROXY=trueProxies are optional, and the README says every scraper works without them. Twitch additionally falls back to a direct connection when the proxy fails, which is the only automatic recovery behaviour the project documents.
The honest caveat is the free option. The README lists free proxies as unreliable, and the CAPTCHA and retry notes for TikTok and Instagram point at the same root cause: the platform sees requests from an IP it does not like. A free proxy pool that fails intermittently will produce gaps in a lead list rather than an error, and gap detection is left to you.
Bulk scraping from username lists in CSV or TXT is supported, so the volume you can attempt is bounded by the rate at which your IP survives, not by the size of the tool.
Installing Scout and running it from the terminal
Scout is a script, not a package. There is no setup.py and nothing to publish to an index, so installation is a clone and a dependency install. The repository root holds scout.py, requirements.txt and an .env.example.
git clone https://github.com/kiryano/Scout.git
cd Scout
pip install -r requirements.txt
cp .env.example .envThe requirements are short: requests, httpx, dnspython, free-proxy and rich, each with a minimum version and no upper bounds. Copying the example environment file is the last step, and it is where you add the LinkedIn cookie or a Hunter.io key if you want them.
Everything runs through one entry point.
python scout.py
python scout.py --verbose # enable debug logging
python scout.py --version
python scout.py --helpThe interactive prompt covers scraping profiles, enriching leads with contact information and exporting to CSV. The --verbose flag turns on debug logging, which is the flag to reach for when a platform returns nothing and you need to see why. There is also an automatic update checker with version enforcement, so a stale checkout may refuse to run until it is refreshed.
A CLI today, a web app promised for later
The project describes itself as early access and states plainly that Scout is a CLI tool right now, with a full web app carrying dashboard, CRM and team features in development. The project is asking for testers and feedback through its Discord and issue tracker.
What the repository contains matches that description. The top level is minimal: .env.example, .gitignore, LICENSE, README.md, an app directory, proxies.example.txt, requirements.txt, scout.py and a screenshot. There is no packaging metadata, no test suite, no configuration file for the CLI itself, and no changelog.
On maintenance, the repository is not archived and the last push was on 2026-09-05. The two most recent releases, v1.3.0 and v1.3.1, are both dated 2026-02-22, so the release tags have not moved since February while commits have continued. The licence is MIT, which is permissive and carries no obligation on how the output leads are used. It says nothing about whether scraping a given platform's public pages is permitted by that platform's terms, which is a question to answer per site and per jurisdiction rather than per licence.
Editorial conclusion
Scout fits appointment setters and small sales teams who need contact details from public profiles and cannot justify a paid enrichment API, and it runs on nothing more than Python and a requirements file. It is the wrong tool for anything requiring guaranteed deliverability, for large scale or scheduled scraping, or for teams that need a CRM rather than CSV files. Before adopting it, run a single platform end to end first, because the README states plainly that Instagram may need retries by region, TikTok may serve CAPTCHAs, LinkedIn cookies expire, and free proxies are unreliable.
Frequently asked questions
Does Scout need a paid API to find emails?
No. Scout verifies candidates against the mail server over SMTP and states that no paid API is needed. An optional Hunter.io key is supported for additional coverage.
Which Scout platforms require authentication?
Only LinkedIn, and only a session cookie: you copy the li_at value from your browser DevTools into LINKEDIN_COOKIE in the .env file. Instagram, TikTok, GitHub, YouTube, Twitch, Pinterest and Linktree need no authentication.
How does Scout know which email addresses to generate?
It detects the company from the headline, resolves the company domain with a DNS MX lookup, reads the email pattern from addresses already on the site, generates candidates such as first.last@, then verifies each one via SMTP and scores confidence from 0 to 100.
Is Scout a CRM or does it have a web dashboard?
Neither yet. The project is described as early access and states that Scout is a CLI tool right now, with a full web app with dashboard, CRM and team features in development. Output today is CSV.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/kiryano-scout)Was this useful?