Reddit Voting V2 — Vote on Posts and Comments
Pricing
$1.99 / 1,000 results
Reddit Voting V2 — Vote on Posts and Comments
Cast upvotes, downvotes, or remove votes on any Reddit post or comment from a Reddit account you control.
Pricing
$1.99 / 1,000 results
Rating
0.0
(0)
Developer
Red Crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Reddit Voting V2
Two self-contained voting actions — upvote / downvote / clear your vote on any Reddit post or comment, on your saved account's behalf. One run = one vote = one dataset record.
Bring a Reddit Token V2 + matching proxy, or reuse a saved account from the Reddit Vault. Pick the action, paste the target, choose the direction, hit Start.
What you can do
The Post field accepts: full URL (https://reddit.com/r/sub/comments/1sys4r2/...), stripped ID (1sys4r2), or t3_ fullname (t3_1sys4r2). The Comment field accepts: full URL, stripped ID (ogv9p8c), or t1_ fullname (t1_ogv9p8c).
Both endpoints (Reddit account required)
1. Vote on Post — upvote, downvote, or clear your vote on a post
The standard post-vote action — applies an upvote, downvote, or removes your previous vote.
Input: post target (URL / ID / fullname) + vote direction (upvote / downvote / remove).
Returns: echoed action, vote direction, post fullname, account name, error info (null on success), bearer expiry, live per-account rate-limit counters (rate_limit, rate_used, rate_remaining, rate_reset_in_seconds).
Use it when: ranking your own content up, signal-boosting useful posts across communities you participate in, programmatic karma-flow audits, account-warmup pipelines, scheduled content curation.
removeclears your previous vote. If you'd already upvoted,removeundoes the upvote. If you hadn't voted at all,removeis a no-op (Reddit accepts it without error).
Example
Input
{"operation": "vote_post","vote_post_id": "https://www.reddit.com/r/Wordpress/comments/1s4a4j6/","vote_post_direction": "upvote","credentialSource": "vault","accountName": "motor_tip8865"}
Output (one dataset record)
{"success": true,"operation": "vote_post","vote": "upvote","post_id": "t3_1s4a4j6","account_name": "motor_tip8865","error": null,"error_kind": null,"bearer_expires_at": "2026-05-15T11:42:18+00:00","rate_limit": 100,"rate_used": 1,"rate_remaining": 99,"rate_reset_in_seconds": 599}
2. Vote on Comment — upvote, downvote, or clear your vote on a comment
The standard comment-vote action — applies an upvote, downvote, or removes your previous vote on a comment.
Input: comment target (URL / ID / fullname) + vote direction (upvote / downvote / remove).
Returns: echoed action, vote direction, comment fullname, account name, error info (null on success), bearer expiry, live per-account rate-limit counters.
Use it when: rewarding helpful answers, downvoting low-quality replies in moderated communities, programmatic engagement tracking, comment-quality scoring pipelines, account-warmup automation.
Example
Input
{"operation": "vote_comment","vote_comment_id": "t1_ogv9p8c","vote_comment_direction": "downvote","credentialSource": "vault","accountName": "motor_tip8865"}
Output (one dataset record)
{"success": true,"operation": "vote_comment","vote": "downvote","comment_id": "t1_ogv9p8c","account_name": "motor_tip8865","error": null,"error_kind": null,"bearer_expires_at": "2026-05-15T11:42:18+00:00","rate_limit": 100,"rate_used": 1,"rate_remaining": 99,"rate_reset_in_seconds": 599}
Credentials
Both endpoints need a signed-in Reddit account. Save it once in Reddit Vault and reuse the name forever, or paste a Token V2 + matching proxy inline for one-off runs.
Credential lifetimes
| Credential | Lifetime | When to refresh |
|---|---|---|
Token V2 (token_v2 cookie) | ~24 hours | Daily — or save a Reddit Session in the vault and let it auto-refresh |
Reddit Session (reddit_session cookie) | ~180 days | Roughly twice a year, or when a run reports unauthorized |
How to extract these from your browser: open Reddit in Chrome / Brave / Edge / Firefox, then DevTools → Application → Cookies →
https://www.reddit.com. Filter bytoken_v2orreddit_sessionand copy the Value column.
Option A — Use saved account (vault) (recommended)
- Run the Reddit Vault actor once with mode
STORE, an account name (e.g.main), your Token V2 (or Reddit Session for auto-refresh), and the matching proxy. - In this actor, set Credential source =
Use saved account (vault)and Saved account name =main. - Token V2 + proxy are pulled from the vault on every run. If you saved a Reddit Session, the Token V2 auto-refreshes whenever it expires.
Option B — Paste Token V2 + proxy inline
- Set Credential source =
Paste Token V2 + proxy. - Paste the
eyJ…Token V2 cookie value (encrypted by Apify at rest). - Paste the Proxy as
ip:port:user:pass— must be the same IP that minted the Token V2 (Reddit IP-binds these cookies).
How to run
- Action →
Vote on PostorVote on Comment. - Fill the matching section (only the chosen action's section matters — the other is ignored).
- Pick a Vote direction (
upvote/downvote/remove). - Pick a Credential source and fill the matching vault or manual fields.
- Hit Start. One run = one vote = one row in the dataset.
Output
Every run pushes exactly one record to the run's default dataset. Success and failure both produce a row — the success field distinguishes them.
| Front-loaded column | Meaning |
|---|---|
success | true if the vote was accepted by Reddit, false otherwise |
operation | vote_post or vote_comment |
vote | upvote, downvote, or remove |
post_id / comment_id | Target fullname (t3_… or t1_…) |
account_name | Vault account name (or "manual" for inline credentials) |
error | Human-readable message on failure, null on success |
error_kind | Short error code (UNAUTHORIZED, RATELIMIT, THREAD_ARCHIVED, QUARANTINED, …), null on success |
bearer_expires_at | When the saved Token V2 expires (helps you spot upcoming refresh) |
rate_limit / rate_used / rate_remaining / rate_reset_in_seconds | Live per-account rate-limit counters from Reddit |
Common edge cases
| Edge case | Cause | How it surfaces |
|---|---|---|
| Bearer expired | Saved Token V2 past ~24 h, no vault session for auto-refresh | Row with success: false, error_kind: UNAUTHORIZED. Re-save the account in Reddit Vault with a Reddit Session for auto-refresh. |
| Bearer minted on a different IP | Token V2 was minted on a different proxy than the one you've paired with it | Row with success: false, error_kind: UNAUTHORIZED. Re-mint the Token V2 on the proxy you'll use, save them as a pair. |
| Thread archived | Posts / comments older than 6 months — Reddit no longer accepts votes | Row with success: false, error_kind: THREAD_ARCHIVED. Pick a non-archived target. |
| Quarantined subreddit | Your account hasn't opted in to the quarantined community | Row with success: false, error_kind: QUARANTINED. Open the subreddit in your browser as that account and accept the quarantine notice. |
| Reddit rate-limit hit | Per-account write throttle reached | Row with success: false, error_kind: RATELIMIT. Wait — rate_remaining field tells you how many calls are left in the current window. |
| Vote silently dropped | Reddit accepts the vote but anti-spam zero-weights it (new account, datacenter proxy, suspicious fingerprint) | Row with success: true — vote was accepted but score may not change. Warm the account up; switch to mobile / residential proxy. |
| Datacenter proxy zero-weighted | Reddit zero-weighted all datacenter-IP votes as of March 2026 | Vote accepted but doesn't affect score. Switch to mobile / residential proxy. |
remove on no-existing-vote | You called remove but hadn't voted previously | Row with success: true — Reddit treats this as a no-op, not an error. |
| Missing required input | Forgot to paste the post / comment URL | Run FAILED immediately, no row pushed, no charge. |
Why this actor is fast
- Speed — 1–3 seconds per vote, end-to-end. Pure HTTP to Reddit. No browser to boot, no Playwright / Selenium / Puppeteer overhead. Competing browser-based actors typically take 15–60 seconds per call.
- Reliability — zero browser flakiness. No headless-Chromium crashes. No JS-render timeouts. No captcha pages.
- Footprint — under 100 MB RAM per run. Most browser-based actors need 1–4 GB. Built for reliability behind the scenes — just paste your inputs and run.
Status & error reference
Run status (Apify-side, shown on the run page)
| Status | Apify message | Meaning | What to do |
|---|---|---|---|
| "Actor succeeded with N results in the dataset" | Run finished, one record pushed. | Open the dataset to view the result. | |
| "The Actor process failed…" | Validation error or missing required input. | Check the run log. You are NOT charged for failed runs. | |
| "The Actor timed out. You can resurrect it with a longer timeout to continue where you left off." | Run exceeded timeout (rare — votes are fast). | Re-run; check proxy is reachable. | |
| "The Actor process was aborted. You can resurrect it to continue where you left off." | You stopped the run manually. | No charge for unpushed results. |
Common in-run conditions (visible in run log and output record)
| Condition | Cause | Result |
|---|---|---|
RATELIMIT from Reddit | Per-account vote throttle hit. | Run SUCCEEDED, failure row with error_kind: RATELIMIT. |
| Bearer expired / invalid | Saved Token V2 past ~24 h, no vault session for auto-refresh. | Run SUCCEEDED, failure row with error_kind: UNAUTHORIZED. |
| Datacenter proxy zero-weighted | Reddit accepts the vote but silently drops it (March 2026 policy). | Run SUCCEEDED, vote may not register on score. |
THREAD_ARCHIVED | Post older than 6 months — votes no longer accepted. | Run SUCCEEDED, failure row with error_kind: THREAD_ARCHIVED. |
QUARANTINED | Account hasn't opted in to the target quarantined sub. | Run SUCCEEDED, failure row with error_kind: QUARANTINED. |
| Validation error: missing post / comment | Required input not provided. | Run FAILED immediately, no charge. |
Pricing
Pay-per-result. You're only charged for records actually pushed to the dataset — failed runs, validation errors, and credential errors that never reach Reddit cost nothing.
| Event | Trigger | Price (per 1,000) |
|---|---|---|
result | Each row pushed to the dataset (success or failure) | $1.99 |
Every vote — post or comment, upvote / downvote / remove — is one row, one charge.
Need a different shape of data?
- Reddit Vault — save Reddit accounts once, call them by name from this actor (free)
- Reddit Commenting V2 — write top-level comments + replies (with optional inline image / GIF)
- Reddit Manage Comments V2 — Comment Insights, Linked Comment Info, save / unsave / follow / unfollow / delete / edit
- Reddit Posting V2 — create text / link / image / gallery / video / GIF / crosspost / poll posts
- Reddit Posts & Feeds V2 — home feed + post state controls
- Reddit Subreddits — info, browse, join / leave, create
- Reddit Users V2 — full profile, your account, followers, follow / unfollow
- Reddit Bulk Scrape V2 — bulk lookups by ID (up to 1500 per run)
All of them accept the same accountName field, so saving credentials in Reddit Vault unlocks them all.
Support and feedback
Found a bug, want a feature, or hit a Reddit error code we don't translate clearly? Open an issue via the actor's Apify Console feedback link, or reach out at the RedCrawler support channel.
Reddit Voting V2 is part of the RedCrawler family of Reddit actors. RedCrawler is independent — not affiliated with, endorsed by, or sponsored by Reddit, Inc. Use it within Reddit's API terms.

