cli-web-reddit
Browse Reddit without auth; vote, comment, submit, and manage subscriptions after auth login. Install: pip install cli-web-reddit
Commands
Read (no auth):
| Command | Purpose | Key options | |---------|---------|-------------| | feed hot\|new\|top\|rising\|popular | Front-page feeds | --limit N (max 100), --after CURSOR; top adds --time hour\|day\|week\|month\|year\|all | | sub hot\|new\|top NAME | Subreddit posts | same as feed | | sub info NAME / sub rules NAME | Subreddit metadata | | | sub search NAME QUERY | Search within a subreddit | --sort relevance\|hot\|top\|new\|comments, --limit, --after | | search posts QUERY | Search all of Reddit | --sort, --time, --limit, --after | | search subs QUERY | Find subreddits | --limit, --after | | post get URL_OR_ID | Post + full comment tree (expands nested threads) | --sub NAME (required with bare ID), --comments N | | user info\|posts\|comments USERNAME | User profiles and activity | --sort hot\|new\|top\|controversial, --time, --limit |
Write (requires login). THING_ID is a fullname: t3_xxx (post) or t1_xxx (comment):
| Command | Purpose | |---------|---------| | vote up\|down\|unvote THING_ID | Vote | | comment add THING_ID TEXT / comment edit / comment delete | Comment, reply, edit, delete | | submit text SUB TITLE BODY [--flair ID] / submit link SUB TITLE URL [--flair ID] | Submit posts; submit flairs SUB lists flair IDs first | | saved save\|unsave THING_ID | Save items | | sub join\|leave NAME | Manage subscriptions | | me profile\|saved\|upvoted\|subscriptions\|inbox | Your account (--limit, --after on lists) |
Examples
# Top posts this week in r/python
cli-web-reddit sub top python --time week --limit 10 --json | jq '.posts[] | {title, score, url}'
# Search posts, then read one with comments
cli-web-reddit search posts "fastapi tutorial" --limit 3 --json
cli-web-reddit post get https://www.reddit.com/r/python/comments/abc123/my_post/ --json
# Submit a flaired text post (get flair IDs first)
cli-web-reddit submit flairs ClaudeCode --json
cli-web-reddit submit text ClaudeCode "My Title" "Body here" --flair abc123 --json
# Upvote a post
cli-web-reddit vote up t3_abc123 --json
JSON output
Every command accepts --json. List reads return {"posts": [...], "after": "cursor"} (pass after back via --after to paginate); writes return {"success": true, ...}. Errors return {"error": true, "code": "...", "message": "..."}.
Auth
cli-web-reddit auth login # opens a Playwright browser, extracts the token_v2 cookie
cli-web-reddit auth status --json
cli-web-reddit auth logout
When token_v2 expires (~15-30 min) the CLI refreshes it silently via a headless browser — no manual re-login. For CI, set CLI_WEB_REDDIT_AUTH_JSON with the cookies JSON. Run doctor to diagnose auth problems.
Utilities
cli-web-reddit doctor [--json] self-diagnoses the local setup (install, auth, dependencies). cli-web-reddit mcp-serve serves the commands as MCP tools over stdio.
Agent tips
- An HTTP 403 on a specific endpoint (e.g. flair fetch on some subreddits) means "permission denied" for that resource, not expired auth.
- Public rate limit is roughly 60 requests/minute — space out scripted reads.