๐ฅ Explore this insightful post from Hacker News ๐
๐ **Category**:
๐ **What Youโll Learn**:
Automated data broker opt-out runner for macOS. Removes your personal information from 500+ people-search sites and data broker databases on a monthly schedule โ with CAPTCHA solving, persistent state tracking (so completed opt-outs aren’t resubmitted every run), and an iMessage notification when done.
Each month, the script:
- Searches each data broker site for your name + state
- Finds your specific listing (for sites that need a profile URL)
- Fills and submits the opt-out form automatically
- Solves CAPTCHAs via CapSolver (AI-powered, ~$0.001/solve)
- Skips brokers you were already removed from recently (90-day re-check window)
- Sends you an iMessage with the results summary
- Opens any sites that require manual action in your browser
- macOS (uses launchd for scheduling and Messages for iMessage)
- Node.js 18+
- Playwright browsers installed
npx playwright install chromium
# 1. Clone the repo
git clone https://github.com/stephenlthorn/auto-identity-remove.git
cd auto-identity-remove
# 2. Install dependencies
npm install
# 3. Run interactive setup (creates config.json and schedules the monthly job)
node setup.js
# 4. Run manually anytime
./run.sh
node setup.js guides you through:
| Step | What it does |
|---|---|
| Personal info | Name, city, state, ZIP, email, phone |
| Aliases | Past names or variations (e.g. “Steve Doe”) |
| CapSolver key | For CAPTCHA-protected opt-out forms |
| One-time accounts | Creates accounts on sites that require login (stored in config.json, gitignored) |
| iMessage | Phone number to text the results summary to |
| launchd schedule | Registers a monthly job to run on the 1st at 9am |
Your personal info never leaves your machine. config.json and state.json are both gitignored.
CapSolver (optional but recommended)
Some opt-out forms have reCAPTCHA. Without CapSolver, those sites go to your manual list instead of being handled automatically.
- Sign up at capsolver.com โ free, pay-as-you-go
- Add $1โ2 of credits (enough for months of use at ~$0.001/solve)
- Paste your API key when
setup.jsasks, or add it toconfig.json:
"capsolver": โก
auto-identity-remove/
โโโ setup.js โ Run once: interactive setup + scheduling
โโโ watcher.js โ Main runner
โโโ brokers.js โ Broker list with opt-out strategies
โโโ run.sh โ Manual trigger
โโโ config.example.json โ Template (copy โ config.json)
โโโ package.json
โโโ .gitignore
โ
โโโ config.json โ YOUR personal info (gitignored, created by setup.js)
โโโ state.json โ Opt-out history / skip logic (gitignored)
โโโ logs/ โ Per-run JSON logs (gitignored)
state.json tracks when each broker was last successfully opted out. The default re-check window is 90 days โ brokers typically re-add your data within that window, so the script re-submits when it’s time.
{
"optOuts": {
"Spokeo": {
"lastSuccess": "2026-05-01T09:00:00.000Z",
"totalRuns": 3,
"detail": ""
}
}
}
On each run you’ll see:
โ Removedโ opt-out submitted this runโญ Skipped (fresh)โ removed recently, re-check not due yet๐ Not listedโ your name wasn’t found on that site๐ Manual neededโ opened in your browser for you to handleโ Errorโ network/timeout issue, will retry next run
| Site | Method |
|---|---|
| Spokeo | Search โ find listing โ opt-out form |
| WhitePages | Search โ find listing โ suppression form |
| FastPeopleSearch | Search โ opt-out form |
| TruePeopleSearch | Direct opt-out form |
| BeenVerified | Opt-out search form |
| Radaris | Search โ privacy form |
| Intelius | Direct opt-out form |
| PeopleFinders | Direct opt-out form |
| PeopleSmart | Direct opt-out form |
| MyLife | Search โ opt-out |
| Nuwber | Search โ removal form |
| FamilyTreeNow | Direct opt-out form |
| CheckPeople | Direct opt-out form |
| ThatsThem | Direct opt-out form |
| USPhonebook | Direct opt-out form |
| PublicDataUSA | Direct opt-out form |
| SmartBackgroundChecks | Direct opt-out form |
| SearchPeopleFree | Direct opt-out form |
| PeopleSearchNow | Direct opt-out form |
| InfoTracer | Direct opt-out form |
| SocialCatfish | Direct opt-out form |
| NationalPublicData | Direct opt-out form |
| ClustrMaps | Direct opt-out form |
| PrivateRecords | Direct opt-out form |
| Acxiom | Direct form (feeds dozens of downstream brokers) |
| LexisNexis | Direct form (legal/financial data) |
| ZoomInfo | Direct form (B2B professional data) |
| Clearbit | Direct form (B2B enrichment data) |
| Pipl | Email opt-out via Mail.app |
Generic โ 500+ additional brokers (auto-detected)
generic-runner.js handles the remaining ~470 brokers from two public datasets:
For each site it tries four strategies in order:
- Click a “Do Not Sell My Personal Information” button
- Opt out via OneTrust / TrustArc / Osano privacy manager
- Fill any generic opt-out form (email, name, state) and submit
- Find and record a DSAR / data request link for manual follow-up
Sites requiring manual action are opened in your browser automatically.
Manual (opened in browser for you)
| Site | Why manual |
|---|---|
| Google โ Results About You | Requires Google account interaction |
| Google โ Outdated Content | Case-by-case URL submission |
Edit brokers.js and add an entry:
{
name: 'NewBrokerSite',
method: 'direct-form', // or 'search-form', 'email', 'manual'
optOutUrl: 'https://example.com/opt-out',
formFields: {
'input[name*="first" i]': F, // F, L, N, E, ST, Z are from config
'input[name*="last" i]': L,
'input[type="email"]': E,
},
submitSelector: 'button[type="submit"]',
captchaLikely: false,
priority: 2,
}
PRs welcome โ especially for brokers with verified working selectors.
Or to run in the background and log output:
./run.sh >> logs/manual-run.log 2>&1 &
Uninstall / disable schedule
launchctl unload ~/Library/LaunchAgents/com.auto-identity-remove.plist
rm ~/Library/LaunchAgents/com.auto-identity-remove.plist
Why not just use a paid service?
Paid services like Incogni ($96/yr) or Optery ($39/yr) are excellent and cover more brokers with professionally maintained opt-out flows. This tool is for people who want full control, transparency, and no recurring subscription โ or who want to handle the gaps those services miss (Acxiom, LexisNexis, ZoomInfo, Clearbit).
Using both is the strongest approach: a paid service for the bulk of brokers + this script for the gaps.
MIT
{๐ฌ|โก|๐ฅ} **Whatโs your take?**
Share your thoughts in the comments below!
#๏ธโฃ **#stephenlthornautoidentityremove #Automated #data #broker #optout #runner #removes #personal #info #peoplesearch #sites #monthly #schedule #GitHub**
๐ **Posted on**: 1779106902
๐ **Want more?** Click here for more info! ๐
