Free X/Twitter Automation Tools

x.com: live verification status live check against x.com

X/Twitter automation without the API

Mass unfollow, scrape, monitor, post. Free for humans, one config for AI agents. Open source.

✓ Free for Humans ✓ x402 for AI Agents ✓ Open Source

✨ Automate Everything

🔄 Mass Unfollow Non-Followers

Automatically remove everyone who doesn't follow you back. Clean up in minutes.

🧹 Unfollow Everyone

Fresh start your account. Remove all follows with one click.

🚨 Detect Who Unfollowed You

Know exactly who stopped following you. Get alerts instantly.

📊 Monitor Competitors

Track any account's followers. Spy on competitor growth.

❤️ Auto-Like & Engage

Boost engagement automatically. Like posts by keywords or users.

🚀 Growth Suite

Complete automation: follow, engage, and smart unfollow for maximum growth.

Start Automating →

🆕 New in XActions

Every command below is copy-ready. The CLI runs with npx xactions or after npm install -g xactions.

🔑
Log in from your browser, no DevTools
Reads your x.com session out of Firefox, Chrome, Brave, Edge or Arc. Or import any cookies export: Netscape cookies.txt, Cookie-Editor JSON, Playwright storageState.
xactions login --from-browser firefox
xactions login --cookies-file cookies.txt
🖥️
Scrape from the terminal, agent-friendly output
Public profiles need no login. --compact prints one tab-separated record per line with only the essential fields; --fields picks columns.
npx xactions profile nasa
xactions tweets nasa --compact --fields id,text,likes
🔌
MCP server: 149 tools, groups, HTTP, approval gate
Trim the tool list by group (read, write, analytics, ...), serve Streamable HTTP for remote clients, or hold every write as a draft until you approve it. Full setup →
{ "mcpServers": { "xactions": { "command": "npx", "args": ["-y", "xactions-mcp", "--require-approval"], "env": { "XACTIONS_SESSION_COOKIE": "your_auth_token_here", "XACTIONS_MCP_TOOLS": "read,analytics,write" } } } }
XACTIONS_MCP_TOKEN=$(openssl rand -hex 24) npx xactions-mcp --http --port 8787
🎯
Install the 49 skills into your coding agent
Copies the SKILL.md catalogue where Claude Code, Cursor, Codex or Windsurf reads it, idempotently. Skills reference →
xactions skills install --all --global
xactions skills install --all --target cursor
🔄
Query IDs that refresh themselves
X rotates its GraphQL query IDs with every web release. XActions reads the live IDs from x.com's own bundles, retries a stale call once with the fresh ID, and keeps a 24-hour cache in ~/.xactions.
xactions doctor
📦
Import your official X archive
Feed the data export X sends you (zip or folder) and get normalised tweets, likes, followers, DMs and lists, streamed so multi-gigabyte archives never fit in memory. Portability docs →
import { importTwitterArchive } from 'xactions/portability'

Works with

  • Claude Code
  • Cursor
  • Windsurf
  • Codex
  • Claude Desktop
  • n8n

Not sure which script or tool you need?Ask XActions answers in plain language, with the exact command and where to run it.

Ask XActions →

🚀 Get Started in 2 Minutes

Free for Humans

All features included, no payment required

Use browser scripts

Copy & paste into your browser console

Or install the CLI

npm install -g xactions

Start automating

Unfollow, detect unfollowers, scrape profiles — all free

Try Free Scripts Below →
— AI agents? Pay-per-request via x402

📋 Free Browser Scripts

Manual scripts for the technically inclined. Paste in browser console.

Unfollow Non-Followers
(() => {
  const $followButtons = '[data-testid$="-unfollow"]';
  const $confirmButton = '[data-testid="confirmationSheetConfirm"]';
  const retry = { count: 0, limit: 3 };

  const sleep = (s) => new Promise(r => setTimeout(r, s * 1000));
  const scroll = () => window.scrollTo(0, document.body.scrollHeight);

  const unfollowAll = async (buttons) => {
    for (const btn of buttons) {
      btn.click();
      await sleep(1);
      document.querySelector($confirmButton)?.click();
      await sleep(0.5);
    }
  };

  const run = async () => {
    scroll();
    await sleep(1);
    let buttons = [...document.querySelectorAll($followButtons)]
      .filter(b => !b.closest('[data-testid="UserCell"]')
        ?.querySelector('[data-testid="userFollowIndicator"]'));
    
    if (buttons.length) {
      console.log(`Unfollowing ${buttons.length} users...`);
      await unfollowAll(buttons);
      retry.count = 0;
      await sleep(2);
      return run();
    }
    
    if (++retry.count < retry.limit) {
      await sleep(2);
      return run();
    }
    console.log('✅ Done! Reload and run again if any were missed.');
  };

  run();
})();
📍 Use on: x.com/YOUR_USERNAME/following

🔒 Why XActions?

🔐

Private Payments

Pay with crypto for fast, private transactions.

Instant Activation

Start automating within minutes of payment.

💳

Crypto Payments

BTC, ETH, SOL, USDC accepted. Card payments too.

Open Source, Apache 2.0

Every line is on GitHub. Scripts run in your own browser; credentials never leave your device.

Try Free Scripts →