๐งฉ I Built a Privacy-First Chrome Extension to Collect Public Emails from LinkedIn
Source: Dev.to
While job hunting and doing outreach, I kept running into the same problem:
A lot of LinkedIn posts and profiles already have email addresses in plain sight, but finding them is slow and repetitive. You scroll, click โsee moreโ, copy one email, scroll againโฆ repeat.
I tried a few tools that claimed to solve this, but most of them had at least one of these issues:
- They sent data to external servers
- Required accounts or logins
- Overโautomated things in a way that felt risky
- Clearly wouldnโt pass Chrome Web Store review
So I decided to build a small tool myself. Thatโs how ReachIn was born.
๐ Repo:
What ReachIn Is (and What It Isnโt)
What it does
- Works only when you explicitly click a button
- Scrolls through LinkedIn search results
- Expands visible content
- Extracts email addresses already shown on the page
- Stores everything locally in your browser
- Lets you copy results or view past collections
What it does not do
- No background scraping
- No credential access
- No analytics or tracking
- No servers
- No remote APIs
- No automation running on its own
Privacy From Day One
Chrome reviewers care far more about intent and data handling than fancy features.
I set a few nonโnegotiable rules early:
- Everything runs locally
- No network requests
- User action triggers everything
- The behavior is easy to explain in plain English
Under the Hood (High Level)
ReachIn is a plain Manifest V3 Chrome extension. No frameworks, no build step.
Structure looks like this:
โโโ assets/
โ โโโ css/
โ โ โโโ popup.css
โ โโโ js/
โ โ โโโ background.js
โ โ โโโ content.js
โ โ โโโ popup.js
โ โโโ icons/
โ โ โโโ icon-16.png
โ โ โโโ icon-32.png
โ โ โโโ icon-48.png
โ โ โโโ icon-128.png
โ
โโโ popup.html
โโโ manifest.json
โ
โโโ README.md
โโโ PRIVACY.md
โโโ LICENSE
โโโ .gitignore
The flow is simple:
- The popup controls everything.
- The content script runs only on
linkedin.com. - Scripts are injected only after user action.
- Data is stored with
chrome.storage.local.
Content Script
The content script does three things:
- Scrolls the page
- Clicks โsee moreโ where needed
- Extracts emails from visible text and
mailto:links
Thatโs it.
- No DOM mutation beyond expanding content.
- No hidden scraping.
- No background execution.
Whatโs Next
Iโm keeping the roadmap intentionally conservative:
- Minor UX improvements
- Performance tweaks
- Optional export formats
If youโre curious, feel free to check out the repo:
๐
Happy building.