Reddit Commenting V2 — Create Comment + Reply
Pricing
from $4.99 / 1,000 results
Reddit Commenting V2 — Create Comment + Reply
Write Reddit comments at scale — top-level or reply, with optional inline images and GIFs.
Pricing
from $4.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 Commenting V2
Two self-contained commenting actions — write a top-level comment on a post or reply to an existing comment, on your saved account's behalf. Both actions support optional inline images and GIFs. One run = one comment = 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, write the body, 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 Parent comment field accepts: full URL, stripped ID (ogv9p8c), or t1_ fullname (t1_ogv9p8c).
Reddit markdown is supported in both text fields — **bold**, *italic*, > quote, [link](url), - bullet, fenced code, tables. Inline images and GIFs are uploaded to Reddit's CDN and embedded as  automatically.
Both endpoints (Reddit account required)
1. Create Comment — write a top-level comment on a post
Adds a new top-level comment to a Reddit post.
Input: post target (URL / ID / fullname) + comment body (markdown) + optional image / GIF URL.
Returns: echoed action, new comment fullname (t1_…), permalink, target 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: publishing articles/blog posts to relevant subreddits, programmatic engagement on your own posts, scheduled community announcements, AMA seed comments, customer-support replies in product subreddits, marketing automation with one-comment-per-target accounts.
Either
text,image_url, orgif_urlmust be supplied. Text-only is the most common — image/GIF are optional add-ons that get uploaded to Reddit's CDN and embedded inline.
Example
Input
{"operation": "create","create_post": "https://www.reddit.com/r/Wordpress/comments/1s4a4j6/","create_text": "Great rundown — I went through the same migration last month and would add: **back up your `wp_options` table before swapping URLs**. Saved me twice.","credentialSource": "vault","accountName": "motor_tip8865"}
Output (one dataset record)
{"success": true,"operation": "create","comment_id": "t1_n0c3kh8","permalink": "/r/Wordpress/comments/1s4a4j6/comment/n0c3kh8/","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}
Example — with inline image
Input
{"operation": "create","create_post": "https://www.reddit.com/r/Wordpress/comments/1s4a4j6/","create_text": "Here's the dashboard layout I ended up with after the migration — clean sidebar, no plugin bloat.","create_image_url": "https://i.redd.it/example.jpg","credentialSource": "vault","accountName": "motor_tip8865"}
Output (one dataset record)
{"success": true,"operation": "create","comment_id": "t1_n0c4mq2","permalink": "/r/Wordpress/comments/1s4a4j6/comment/n0c4mq2/","post_id": "t3_1s4a4j6","account_name": "motor_tip8865","media_asset_id": "z9p4k2x7n3m1q8w5","media_url": "https://i.redd.it/z9p4k2x7n3m1q8w5.jpg","error": null,"error_kind": null,"bearer_expires_at": "2026-05-15T11:42:18+00:00","rate_limit": 100,"rate_used": 2,"rate_remaining": 98,"rate_reset_in_seconds": 598}
The image URL is fetched once, re-uploaded to Reddit's CDN, and embedded inline in the rendered comment.
gif_urlworks the same way but accepts.gifsources. Usereply_image_url/reply_gif_urlon the Reply endpoint.
2. Reply to Comment — reply to an existing comment
Adds a reply under an existing comment in any post's comment tree.
Input: parent comment target (URL / ID / fullname) + reply body (markdown) + optional image / GIF URL.
Returns: echoed action, new reply fullname (t1_…), permalink, parent comment fullname, account name, error info (null on success), bearer expiry, live per-account rate-limit counters.
Use it when: automated thread engagement, customer-support replies under FAQs, scheduled follow-ups, AMA participant replies, community-management bots, programmatic karma-flow audits.
Example
Input
{"operation": "reply","reply_comment": "t1_n0c3kh8","reply_text": "Agreed — and if you're on multisite, **don't forget the per-site `home`/`siteurl` overrides** in `wp_X_options` for each subsite.","credentialSource": "vault","accountName": "motor_tip8865"}
Output (one dataset record)
{"success": true,"operation": "reply","comment_id": "t1_n0d1a92","permalink": "/r/Wordpress/comments/1s4a4j6/comment/n0d1a92/","parent_id": "t1_n0c3kh8","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 →
Create CommentorReply to Comment. - Fill the matching section (only the chosen action's section matters — the other is ignored).
- Write the comment body in Comment text / Reply text — Reddit markdown supported. Optional: attach an Image URL or GIF URL.
- Pick a Credential source and fill the matching vault or manual fields.
- Hit Start. One run = one comment = 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 Reddit accepted the comment, false otherwise |
operation | create or reply |
comment_id | The new comment's fullname (t1_…) on success |
permalink | Direct link to the new comment on success |
post_id / parent_id | Target fullname — post (t3_…) for create, parent comment (t1_…) for reply |
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_LOCKED, BANNED, SHADOWBAN, MEDIA_UPLOAD_FAILED, …), 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 locked | Mod has locked the post/comment — no new replies accepted | Row with success: false, error_kind: THREAD_LOCKED. Pick a different target. |
| Thread archived | Posts older than 6 months — Reddit no longer accepts comments | Row with success: false, error_kind: THREAD_ARCHIVED. Pick a non-archived target. |
| Banned from subreddit | Your account is banned from the subreddit | Row with success: false, error_kind: BANNED. Use a different account or get unbanned. |
| Subreddit private / quarantined | Your account doesn't have access (or hasn't accepted the quarantine prompt) | Row with success: false, error_kind: FORBIDDEN or QUARANTINED. |
| Reddit rate-limit hit | Per-account write throttle reached | Row with success: false, error_kind: RATELIMIT. Wait — rate_remaining tells you how many calls are left in the current window. |
| Comment shadowbanned | Reddit accepts the comment silently but doesn't show it to other users (anti-spam shadowing on new / low-karma accounts) | Row with success: true — comment is in the dataset but may not appear publicly. Warm the account up before automating. |
| Image / GIF upload failed | Source URL unreachable from Reddit's CDN, too large, or unsupported format | Row with success: false, error_kind: MEDIA_UPLOAD_FAILED. Try a different host (i.redd.it, imgur, giphy) or a smaller file. |
| Empty body | Forgot to paste comment text AND no image / GIF URL | Run FAILED immediately, no row pushed, no charge. Either supply text or an image / GIF URL. |
| Missing required input | Forgot to paste the post / comment URL | Run FAILED immediately, no row pushed, no charge. |
Why this actor is fast
- Speed — 2–4 seconds per comment, end-to-end (5–8 s when uploading an image or GIF). 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.
- Inline media handled for you. Pass an image URL or GIF URL — we download it, upload it to Reddit's media endpoint, and embed it inline. No manual upload step.
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 — comments 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 write 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. |
| Thread locked / archived | Post / comment no longer accepting new replies. | Run SUCCEEDED, failure row with error_kind: THREAD_LOCKED or THREAD_ARCHIVED. |
| Subreddit ban / quarantine | Account doesn't have write access to the community. | Run SUCCEEDED, failure row with error_kind: BANNED or QUARANTINED. |
| Image / GIF upload failed | Source URL unreachable, too large, or unsupported format. | Run SUCCEEDED, failure row with error_kind: MEDIA_UPLOAD_FAILED. |
| Validation error: missing target / body | 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 comment — top-level or reply, text-only or with image / GIF — 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 Manage Comments V2 — Comment Insights, Linked Comment Info, save / unsave / follow / unfollow / delete / edit
- Reddit Voting V2 — upvote / downvote / clear your vote on posts and comments
- 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 Commenting 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.

