xfetch 🐦
Fast X/Twitter CLI scraper. No API keys. Just cookies and go.
Install
npm install -g xfetch-cli
Authentication
xfetch requires Twitter session cookies (auth_token and ct0).
Set tokens directly:
xfetch auth set --auth-token <token> --ct0 <token>
Check auth status:
xfetch auth check
Get cookies from browser: Open X.com in Chrome DevTools → Application → Cookies → Copy auth_token and ct0 values.
Commands
User Data
xfetch user @handle # Profile by handle
xfetch user 12345678 # Profile by ID
xfetch followers @handle -n 100 # Followers list
xfetch following @handle -n 100 # Following list
Tweets
xfetch tweets @handle -n 50 # User timeline
xfetch tweet <url-or-id> # Single tweet
xfetch thread <url-or-id> # Full conversation thread
Search
xfetch search "query" -n 100
xfetch search "from:handle since:2024-01-01"
xfetch search "query" --type latest # top|latest|people|photos|videos
Timelines
xfetch home # Algorithmic home
xfetch home --following # Chronological
xfetch bookmarks -n 50 # Your bookmarks
xfetch likes @handle -n 50 # User's likes
Output Formats
xfetch tweets @handle --format json # Default, pretty
xfetch tweets @handle --format jsonl # Line-delimited JSON
xfetch tweets @handle --json # Shorthand for JSON
xfetch tweets @handle --plain # No formatting
Pagination
xfetch tweets @handle --all # All pages
xfetch tweets @handle --max-pages 10 # Limit pages
xfetch tweets @handle --cursor <cursor> # Resume from cursor
xfetch tweets @handle --delay 1000 # Delay between pages (ms)
Query ID Management
Twitter changes GraphQL query IDs frequently. xfetch auto-refreshes them.
xfetch query-ids --list # Show cached IDs
xfetch query-ids --refresh # Fetch latest from X
Global Options
--auth-token <token> # Set auth_token directly
--ct0 <token> # Set ct0 directly
--format <format> # json|jsonl|csv|sqlite
--timeout <ms> # Request timeout (default: 30000)
--delay <ms> # Delay between requests (default: 500)
--proxy <url> # Proxy URL
Examples
Get recent tweets from a user:
xfetch tweets @elonmusk -n 20 --format jsonl
Search for AI content:
xfetch search "AI agents" --type latest -n 50
Get thread/conversation:
xfetch thread https://x.com/user/status/123456789
Export followers to JSON:
xfetch followers @handle --all > followers.json
Rate Limits
xfetch tracks rate limits per endpoint and automatically backs off when approaching limits. For high-volume scraping, use --delay to add time between requests.