I automated opt-outs for 500 data broker sites (open source) Open-source macOS tool called "auto-identity-remove" that automates the process of opting out of over 500 data broker and people-search sites. The script runs monthly, uses AI-powered CAPTCHA solving, tracks completed opt-outs to avoid resubmission, and sends iMessage notifications with results. The tool is designed for users who want a free, self-hosted alternative to paid data removal services. Automated data broker opt-out runner for macOS, Linux, and Windows. 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. Privacy & data flow - 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 https://capsolver.com 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 - Node.js 18+ - macOS, Linux, or Windows scheduling adapts automatically Playwright https://playwright.dev 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 | Monthly schedule | Registers a monthly job to run on the 1st at 9am launchd / systemd / crontab / schtasks - detected automatically | Your personal info never leaves your machine. config.json and state.json are both gitignored. 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 https://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.js asks, or add it to config.json : "capsolver": { "apiKey": "CAP-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } CapSolver is optional.Without it, CAPTCHA-protected sites are flagged as manual and opened in your browser for completion. Pass --no-capsolver to skip them entirely rather than opening the browser. The included Dockerfile uses the official Playwright image, so Chromium and all system dependencies are pre-installed. No Mac required. Build the image once docker build -t auto-identity-remove . Dry-run no opt-out forms submitted, no network calls docker run --rm \ -v $ pwd /config.json:/app/config.json \ -v $ pwd /state.json:/app/state.json \ auto-identity-remove node watcher.js --dry-run Full run docker run --rm \ -v $ pwd /config.json:/app/config.json \ -v $ pwd /state.json:/app/state.json \ auto-identity-remove Persistent state: mount state.json so completed opt-outs are remembered between container runs. If the file does not exist yet, create an empty one first: echo '{}' state.json . When running headless or in Docker you won't have iMessage or a desktop - use a webhook instead. Set notify.webhook in config.json to any ntfy.sh, Slack incoming-webhook, or Discord webhook URL: "notify": { "textTo": "", "webhook": "https://ntfy.sh/my-private-channel" } The tool POSTs {"text": "