xfetch
Use xfetch CLI to fetch X/Twitter data - tweets, user profiles, search results, timelines, lists, DMs, and notifications. Use this skill whenever you need to...
Like a lobster shell, security has layers — review code before you run it.
License
SKILL.md
xfetch - X/Twitter CLI Data Fetcher
xfetch is a cookie-based X/Twitter scraper CLI. It requires no API keys - just browser cookies for authentication. It's installed globally as xfetch (or can be run via npx @lxgic/xfetch / bunx @lxgic/xfetch).
Prerequisites
Authentication must be set up first. Check with:
xfetch auth check
If not authenticated, extract cookies from the user's browser:
xfetch auth extract --browser chrome # or firefox, safari, arc, brave
xfetch auth extract --browser chrome --profile "Profile 1" # specific profile
Or set tokens directly:
xfetch auth set --auth-token <token> --ct0 <token>
Command Reference
Single Tweet
Accepts a tweet URL or numeric ID:
xfetch tweet https://x.com/user/status/123456789
xfetch tweet 123456789
Also works with X Article URLs (/article/ID).
User Profile
xfetch user @handle # by handle (@ is optional)
xfetch user 12345678 # by numeric ID
User Tweets
xfetch tweets @handle # latest 20 tweets
xfetch tweets @handle -n 50 # 50 per page
xfetch tweets @handle --replies # include replies
xfetch tweets @handle --all # all pages (paginated)
xfetch tweets @handle --max-pages 5 # limit to 5 pages
Thread / Conversation
xfetch thread <url-or-id> # full conversation thread
Search
xfetch search "query" # top results
xfetch search "query" --type latest # latest tweets
xfetch search "query" --type people # user results
xfetch search "query" --type photos # photo tweets
xfetch search "query" --type videos # video tweets
xfetch search "from:handle since:2024-01-01" # advanced operators
xfetch search "query" -n 100 --all # all pages
Search types: top (default), latest, people, photos, videos.
Timelines
xfetch home # algorithmic home timeline
xfetch home --following # chronological (following only)
xfetch bookmarks # your bookmarks
xfetch likes @handle # user's liked tweets
Followers / Following
xfetch followers @handle -n 100
xfetch following @handle -n 100
Lists
xfetch lists @handle # user's lists
xfetch list <list-id-or-url> # list details
xfetch list-members <list-id-or-url> # list members
xfetch list-tweets <list-id-or-url> -n 50 # list timeline
Direct Messages
xfetch dms # inbox overview
xfetch dms inbox # same as above
xfetch dms conversation <conversation_id> # messages in a conversation
xfetch dms <conversation_id> # shortcut for above
Notifications
xfetch notifications # all notifications
xfetch mentions # mentions only
xfetch verified-notifications # from verified accounts
Auth Management
xfetch auth check # show auth status
xfetch auth extract --browser chrome # extract cookies
xfetch auth set --auth-token <t> --ct0 <t> # set tokens manually
xfetch auth clear # clear saved auth
xfetch auth browsers # list available browsers + profiles
Query ID Management
xfetch query-ids --refresh # fetch latest query IDs from X frontend
xfetch query-ids --list # show cached query IDs
Pagination Options
All list-like commands (tweets, search, followers, following, likes, bookmarks, home, notifications, mentions, list-members, list-tweets, dms inbox, dms conversation) support these pagination options:
| Flag | Description |
|---|---|
-n, --count <N> | Results per page (default: 20) |
--all | Fetch all available pages |
--max-pages <N> | Maximum number of pages to fetch |
--cursor <cursor> | Resume from a specific cursor |
--resume <file> | Save/restore cursor state to a file |
--delay <ms> | Delay between page requests (default: 1000ms) |
Output Formats
Control output with --format:
xfetch tweets @handle --format json # pretty-printed JSON (default)
xfetch tweets @handle --format jsonl # newline-delimited JSON (streaming)
xfetch tweets @handle --format csv # CSV with headers
xfetch tweets @handle --format sqlite --db tweets.db # SQLite database
Additional output flags:
--json— shorthand for--format json--plain— disable pretty printing
Pipe to files with shell redirection:
xfetch tweets @handle -n 100 --format csv > tweets.csv
xfetch search "AI" --all --format jsonl > results.jsonl
Global Options
These can be passed to any command:
| Flag | Description |
|---|---|
--auth-token <token> | Override auth_token cookie |
--ct0 <token> | Override ct0 cookie |
--cookie-source <src> | Cookie source browser |
--chrome-profile <name> | Chrome profile name |
--proxy <url> | Proxy URL (http://user:pass@host:port) |
--proxy-file <path> | File with proxy URLs for rotation |
--timeout <ms> | Request timeout (default: 30000) |
--delay <ms> | Delay between requests (default: 500) |
--no-color | Disable colored output |
Tips for Effective Use
- When fetching large datasets, prefer
--format jsonlfor streaming output (avoids buffering entire result set in memory). - Use
--max-pagesinstead of--allwhen you only need a sample — it's faster and avoids rate limits. - If a request fails with a 404 or query ID error, try
xfetch query-ids --refreshto update cached query IDs — X periodically rotates these. - Pipe JSON output through
jqfor filtering:xfetch tweets @handle | jq '.[].text' - For SQLite output, always specify
--db:xfetch tweets @handle --format sqlite --db data.db - Rate limits are handled internally with jitter, but high-volume scraping benefits from
--delay 2000or higher.
Files
1 totalComments
Loading comments…
