stephenlthorn/auto-identity-remove: Automated data broker opt-out runner โ€” removes your personal info from 30+ people-search sites on a monthly schedule ยท GitHub

๐Ÿ’ฅ 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:

  1. Searches each data broker site for your name + state
  2. Finds your specific listing (for sites that need a profile URL)
  3. Fills and submits the opt-out form automatically
  4. Solves CAPTCHAs via CapSolver (AI-powered, ~$0.001/solve)
  5. Skips brokers you were already removed from recently (90-day re-check window)
  6. Sends you an iMessage with the results summary
  7. 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.

  1. Sign up at capsolver.com โ€” free, pay-as-you-go
  2. Add $1โ€“2 of credits (enough for months of use at ~$0.001/solve)
  3. Paste your API key when setup.js asks, or add it to config.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:

  1. Click a “Do Not Sell My Personal Information” button
  2. Opt out via OneTrust / TrustArc / Osano privacy manager
  3. Fill any generic opt-out form (email, name, state) and submit
  4. 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! ๐ŸŒŸ

By

Leave a Reply

Your email address will not be published. Required fields are marked *