Reddit Posting V1 — Create Post (8 types) avatar

Reddit Posting V1 — Create Post (8 types)

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Reddit Posting V1 — Create Post (8 types)

Reddit Posting V1 — Create Post (8 types)

By using this Reddit poster, you can create any Reddit post — text, link, image, gallery, video, GIF, crosspost, or poll — in any subreddit. Pick a post type, fill the matching fields. Bring your Reddit OAuth bearer + matching proxy.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Red Crawler

Red Crawler

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

a day ago

Last modified

Share

Endpoints Auth Vault Pricing

Create any kind of Reddit post — text, link, image, gallery, video, GIF, crosspost, or poll — in any subreddit. One actor, one input form, eight post types. Pick the type, fill the matching section, supply credentials (saved by name in the Reddit Vault actor, or pasted inline), and the actor publishes the post on your behalf.


What this actor does

Pick a post type from the dropdown, fill the matching section, supply credentials, run. The actor publishes the post on the chosen subreddit on your account's behalf.

You can post:

  • Text — markdown self-post
  • Link — share an external URL (with an optional body)
  • Image — single image from a public URL
  • Gallery — 2–20 images from public URLs
  • Video — video from a public URL (with optional thumbnail)
  • GIF — animated .gif from a public URL
  • Crosspost — republish an existing Reddit post to another subreddit
  • Poll — 2–6 options, 1–7 day duration

For each type you control flair, NSFW / spoiler flags, reply notifications, and (for link posts) resubmit behavior — everything Reddit's own UI exposes.

Heads-up: this actor only handles post creation. For voting, editing, deleting, reporting, or replying, see the other actors in the RedCrawler family.


Quick start — your first post

Run the Reddit Vault actor with:

  • Mode = STORE
  • Account name = motor_tip8865
  • Token V2 (the token_v2 cookie, ~24 h) or Reddit Session (the reddit_session cookie, ~180 days) + Proxy = ip:port:user:pass

You only do this once per Reddit account, then reuse the name across every Reddit actor. See Reddit Vault for screenshots showing how to extract token_v2 / reddit_session from your browser.

In a hurry / one-off post? You can skip the vault: in the credentials section pick Paste Token V2 + proxy and supply both inline. Saving in the vault is recommended for repeat use because it spares you from re-pasting on every run and (with a Reddit Session) auto-refreshes the Token V2 for you.

2. Create a text post

In this actor:

  1. Post typeText post
  2. Scroll to the Text post section:
    • Subreddittest (or your own user-profile sub like u_yourname)
    • Post titleHello from Apify!
    • Post bodyMarkdown supported. **Bold**, *italic*, > quote, [link](https://example.com)
  3. Scroll to Reddit credentials and pick one of:
    • Use saved account (vault) + Saved account name = motor_tip8865 (recommended)
    • Paste Token V2 + proxy + paste your eyJ… Token V2 (the token_v2 cookie) and ip:port:user:pass proxy (quick, no save)
  4. Run.

3. Read the result

The dataset row gives you the live post URL plus rate-limit metadata:

{
"success": true,
"post_type": "text",
"post_id": "1abc23",
"post_fullname": "t3_1abc23",
"permalink": "https://reddit.com/r/test/comments/1abc23/hello_from_apify/",
"url": "https://reddit.com/r/test/comments/1abc23/hello_from_apify/",
"subreddit": "test",
"title": "Hello from Apify!",
"selftext": "Markdown supported...",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599,
"bearer_expires_at": "2026-05-08T11:42:18+00:00"
}

The 8 post types

Each post type has its own dedicated section in the input form. The fields are namespaced (e.g. text_subreddit, link_url, gallery_items, poll_options) so you only fill the section that matches your chosen Post type — the others are ignored.

1. Text post

A self-post with markdown body. Most subs allow text posts.

FieldRequiredNotes
SubreddityesJust the name, with or without r/
Post titleyesMax 300 chars
Post bodyoptionalMarkdown — **bold**, *italic*, > quote, [link](url), - bullet
Flair IDoptionalReddit's internal flair template ID
Flair textoptionalDisplay text override
Mark as NSFW / SpoileroptionalBooleans
Send reply notificationsoptional (default: true)Inbox notifications when someone replies

Example

Input

{
"post_type": "text",
"text_subreddit": "test",
"text_title": "Hello from RedCrawler Posting V1 — text post",
"text_body": "**Markdown supported.** *italic*, > quote, [link](https://redcrawler.com), `code`.\n\nThis is a sample text post created by the actor on r/test for the README capture.",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"post_type": "text",
"post_id": "1tbwj7w",
"post_fullname": "t3_1tbwj7w",
"permalink": "https://www.reddit.com/r/test/comments/1tbwj7w/hello_from_redcrawler_posting_v1_text_post/",
"url": "https://www.reddit.com/r/test/comments/1tbwj7w/hello_from_redcrawler_posting_v1_text_post/",
"subreddit": "test",
"title": "Hello from RedCrawler Posting V1 — text post",
"selftext": "**Markdown supported.** *italic*, > quote, [link](https://redcrawler.com), `code`. ...",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z"
}

2. Link post

Share an outbound URL with an optional caption.

FieldRequiredNotes
SubreddityesJust the name, with or without r/
Post titleyesMax 300 chars
Link URLyesThe URL you want to share
Post bodyoptionalCaption shown below the link. Subs configured for rich/media link posts keep it; classic link-only subs silently drop it
Allow resubmitoptional (default: true)Permit re-submitting a URL already posted to this sub
Flair / NSFW / Spoiler / Send repliesoptionalSame as text

Example

Input

{
"post_type": "link",
"link_subreddit": "test",
"link_title": "RedCrawler Posting V1 — link post sample",
"link_url": "https://redcrawler.com",
"link_body": "Caption shown below the link — markdown OK.",
"link_resubmit": true,
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"post_type": "link",
"post_id": "1tbwje9",
"post_fullname": "t3_1tbwje9",
"permalink": "https://www.reddit.com/r/test/comments/1tbwje9/redcrawler_posting_v1_link_post_sample/",
"url": "https://www.reddit.com/r/test/comments/1tbwje9/redcrawler_posting_v1_link_post_sample/",
"subreddit": "test",
"title": "RedCrawler Posting V1 — link post sample",
"selftext": "Caption shown below the link — markdown OK.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z"
}

3. Image post

Upload a JPG / PNG / GIF from a public URL.

FieldRequiredNotes
SubreddityesJust the name, with or without r/
Post titleyesMax 300 chars
Image URLyesPublicly reachable image URL (.jpg, .png, .gif)
Post bodyoptionalCaption shown below the image
Flair / NSFW / Spoiler / Send repliesoptionalSame as text

Media posts return a websocket URL, not a post_id. Reddit uploads images / video / GIFs asynchronously — the synchronous response carries a websocket_url your client connects to for the final post_id once Reddit finishes processing the upload. The post itself still lands; just poll your account's submitted page if you don't want to handle the websocket.

Example

Input

{
"post_type": "image",
"image_subreddit": "test",
"image_title": "Sunset over the lake — image post sample",
"image_url": "https://i.imgur.com/KAeuBNn.jpeg",
"image_body": "Single-image post created via RedCrawler Posting V1.",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record — note media posts ship a websocket_url instead of a post_id)

{
"success": true,
"post_type": "image",
"subreddit": "test",
"title": "Sunset over the lake — image post sample",
"selftext": "Single-image post created via RedCrawler Posting V1.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z",
"websocket_url": "wss://k8s-lb.wss.redditmedia.com/lwhwk61w1w0h1?m=AQAAr18Eaouz..."
}

The post actually landed at https://www.reddit.com/r/test/comments/1tbwjlt/.

4. Gallery post

2–20 images, one URL per row. The whole gallery shares the Post body.

FieldRequiredNotes
SubreddityesJust the name, with or without r/
Post titleyesMax 300 chars
Gallery imagesyes2–20 publicly reachable image URLs, one per row
Post bodyoptionalCaption shown above the gallery
Flair / NSFW / Spoiler / Send repliesoptionalSame as text

Example

Input

{
"post_type": "gallery",
"gallery_subreddit": "test",
"gallery_title": "Three-shot gallery sample",
"gallery_items": [
"https://i.imgur.com/B9omOe6.jpeg",
"https://i.imgur.com/GGhH70K.jpeg",
"https://i.imgur.com/TPMezMZ.jpeg"
],
"gallery_body": "Gallery post created via RedCrawler Posting V1.",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"post_type": "gallery",
"post_id": "t3_1tbwjv3",
"permalink": "https://www.reddit.com/r/test/comments/1tbwjv3/threeshot_gallery_sample/",
"url": "https://www.reddit.com/r/test/comments/1tbwjv3/threeshot_gallery_sample/",
"subreddit": "test",
"title": "Three-shot gallery sample",
"selftext": "Gallery post created via RedCrawler Posting V1.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z"
}

5. Video post

Upload an MP4 / MOV from a public URL.

FieldRequiredNotes
SubreddityesJust the name, with or without r/
Post titleyesMax 300 chars
Video URLyesPublicly reachable .mp4 / .mov URL
Thumbnail URLoptionalIf omitted, a frame is auto-extracted from the video
Post bodyoptionalCaption shown below the video
Flair / NSFW / Spoiler / Send repliesoptionalSame as text

Video uploads are slower than images — Reddit transcodes the file before the post becomes visible. Expect 30–90 s end-to-end. Like image posts, the record carries a websocket_url for the final post_id.

Example

Input

{
"post_type": "video",
"video_subreddit": "test",
"video_title": "30-second clip — video post sample",
"video_url": "https://i.imgur.com/BuzoHUZ.mp4",
"video_body": "Video post created via RedCrawler Posting V1.",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record — post_id arrives via the websocket once Reddit finishes transcoding)

{
"success": true,
"post_type": "video",
"subreddit": "test",
"title": "30-second clip — video post sample",
"selftext": "Video post created via RedCrawler Posting V1.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z",
"websocket_url": "wss://k8s-lb.wss.redditmedia.com/qbn8ql502w0h1?m=AQAA1l8Eag2v..."
}

The post actually landed at https://www.reddit.com/r/test/comments/1tbwk4e/.

6. GIF post

Upload a .gif from a public URL. Reddit converts it to native MP4 for playback.

FieldRequiredNotes
SubreddityesJust the name, with or without r/
Post titleyesMax 300 chars
GIF URLyesPublicly reachable .gif URL
Post bodyoptionalCaption shown below the GIF
NSFW / Spoiler / Send repliesoptionalSame as text. GIF posts skip the flair field

Example

Input

{
"post_type": "gif",
"gif_subreddit": "test",
"gif_title": "When the build passes on the first try — GIF sample",
"gif_url": "https://media3.giphy.com/media/v1.../11fot0YzpQMA0g/giphy.gif",
"gif_body": "Animated GIF posted via RedCrawler Posting V1.",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record — same async pattern as image / video)

{
"success": true,
"post_type": "gif",
"subreddit": "test",
"title": "When the build passes on the first try — GIF sample",
"selftext": "Animated GIF posted via RedCrawler Posting V1.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z",
"websocket_url": "wss://k8s-lb.wss.redditmedia.com/vwb245w12w0h1?m=AQAA5l8Eaq..."
}

The post actually landed at https://www.reddit.com/r/test/comments/1tbwkby/.

7. Crosspost

Republish an existing post to another subreddit.

FieldRequiredNotes
SubreddityesThe destination subreddit
Post titleyesThe crosspost title (independent of the source post)
Source post URLyesA full reddit.com/r/.../comments/... URL
Post bodyoptionalComment shown above the crossposted source post
NSFW / Spoiler / Send repliesoptionalSame as text. Crossposts inherit the source post's flair

The source post's subreddit must allow crossposting (it's a per-sub setting). Some subs lock it down.

Example

Input

{
"post_type": "crosspost",
"crosspost_subreddit": "test",
"crosspost_title": "Crosspost sample — AITAH chair story",
"crosspost_source_post_url": "https://www.reddit.com/r/AITAH/comments/1p3hgw2/someone_at_work_stole_my_chair_so_i_had_them/",
"crosspost_body": "Crosspost created via RedCrawler Posting V1.",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"post_type": "crosspost",
"post_id": "1tbwkhp",
"post_fullname": "t3_1tbwkhp",
"permalink": "https://www.reddit.com/r/test/comments/1tbwkhp/crosspost_sample_aitah_chair_story/",
"url": "https://www.reddit.com/r/test/comments/1tbwkhp/crosspost_sample_aitah_chair_story/",
"subreddit": "test",
"title": "Crosspost sample — AITAH chair story",
"selftext": "Crosspost created via RedCrawler Posting V1.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z"
}

8. Poll post

2–6 options, 1–7 day duration.

FieldRequiredNotes
SubreddityesSub must allow polls
Post titleyesThe poll question
Poll optionsyes2–6 options, one per row
Poll duration (days)yes (default: 3)1–7 days
Post bodyoptionalDescription shown above the poll
Flair / NSFW / Spoiler / Send repliesoptionalSame as text

Example

Input

{
"post_type": "poll",
"poll_subreddit": "test",
"poll_title": "Which language should I learn next?",
"poll_options": ["Rust", "Go", "Zig", "TypeScript"],
"poll_duration_days": 3,
"poll_body": "Quick poll for the README capture.",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"post_type": "poll",
"post_id": "t3_1tbwvgs",
"permalink": "https://www.reddit.com/r/test/comments/1tbwvgs/which_language_should_i_learn_next/",
"url": "https://www.reddit.com/r/test/comments/1tbwvgs/which_language_should_i_learn_next/",
"subreddit": "test",
"title": "Which language should I learn next?",
"selftext": "Quick poll for the README capture.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T11:29:01Z"
}

What a Reddit-throttled failure looks like — when the same account posts too many times in a short window, Reddit returns its anti-spam cooldown, and the actor pushes a failure record with the message in the error field:

{
"success": false,
"post_type": "poll",
"subreddit": "test",
"title": "Which language should I learn next?",
"selftext": "Quick poll for the README capture.",
"is_nsfw": false,
"is_spoiler": false,
"sendreplies": true,
"bearer_expires_at": "2026-05-14T10:20:54Z",
"error": "Looks like you've been doing that a lot. Take a break for 1 minute before trying again."
}

Reddit credentials (shared across all types)

The bottom section of the input form is the same for every post type.

Credential lifetimes

CredentialLifetimeWhen to refresh
Token V2 (token_v2 cookie)~24 hoursDaily — or save a Reddit Session in the vault and let it auto-refresh
Reddit Session (reddit_session cookie)~180 daysRoughly 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 by token_v2 (the Token V2) or reddit_session (the Reddit Session) and copy the Value column.

Token V2 cookie in DevTools

Reddit Session cookie in DevTools

Credential source

  • Use saved account (vault) — pull Token V2 + proxy from the Reddit Vault by name. Only the Saved account name field below matters.
  • Paste Token V2 + proxy — fill the Token V2 + proxy fields directly. The saved-account-name field is ignored.

Saved account name (vault path)

The label you used when running Reddit Vault → STORE. Lowercase, 1–32 chars, letters/digits/-/_.

Token V2 (manual path)

Your token_v2 cookie value (eyJ…). Encrypted by Apify at rest (isSecret: true). Lifetime: ~24 h.

Proxy (manual path)

ip:port:user:pass. Must be the IP that minted the Token V2 — Reddit IP-binds these cookies.


Output schema

Every run pushes exactly one record to the run's default dataset. The shape is the same across post types, with type-specific fields filled where relevant. Per-type captured examples live under each section above — this section is the field reference.

Field reference

FieldTypePresent whenNotes
successboolalwaystrue if the post landed (or, for media, the upload was accepted and a websocket URL was issued); false if Reddit or the actor rejected it
post_typestringalwaysOne of text, link, image, gallery, video, gif, crosspost, poll
post_idstringsuccess, non-mediaReddit's post ID (e.g. 1tbwj7w). Media posts (image / video / GIF) ship websocket_url instead
post_fullnamestringsuccess, non-mediat3_ + post_id
permalink, urlstringsuccess, non-mediaFull reddit.com URL of the landed post
subredditstringalwaysEcho of the input subreddit (normalized — no r/ prefix)
title, selftextstringalwaysEcho of input (selftext = the body text you provided)
is_nsfw, is_spoiler, sendrepliesboolalwaysEcho of input booleans
flair_id, flair_textstring | nullalways (non-GIF / non-crosspost)Echo of flair input (these post types skip flair)
websocket_urlstringsuccess, media onlywss://...redditmedia.com/... — your client connects to receive the final post_id once Reddit finishes processing the upload
errorstring | nullfailureHuman-readable Reddit error or actor validation message
error_kindstring | nullfailureReddit's structured error code (RATELIMIT, SUBREDDIT_NOTALLOWED, BAD_FLAIR_TEMPLATE_ID, ALREADY_SUB, etc.)
bearer_expires_atISO 8601 stringalwaysWhen your Token V2 cookie expires — refresh before this if you didn't save a Reddit Session
bearer_expired_atISO 8601 string | nullfailure (auth)Set if the bearer was already expired when this run started
rate_limit, rate_used, rate_remainingintwhen Reddit returns headersYour account's live per-window post-create counter — pace your runs to stay above zero
rate_reset_in_secondsintwhen Reddit returns headersSeconds until the window resets

Failure record (example)

{
"success": false,
"post_type": "link",
"subreddit": "AskReddit",
"title": "A delightful little site",
"error": "URL has already been submitted",
"error_kind": "ALREADY_SUB",
"bearer_expires_at": "2026-05-14T10:20:54Z"
}

error_kind echoes Reddit's structured error code when available. The plain error string is always set.


Status & error reference

Run status (Apify-side, shown on the run page)

StatusApify messageMeaningWhat to do
Succeeded"Actor succeeded with N results in the dataset"Run finished. One dataset row per post.Open the dataset — check success and permalink.
Failed"The Actor process failed…"Hard process error. Rare; Reddit faults finish SUCCEEDED.Check the run log. You are NOT charged on FAILED runs.
Timed out"The Actor timed out. You can resurrect it with a longer timeout to continue where you left off."Run exceeded its timeout. Usually a slow video upload.Re-run with a longer timeout — bump to 5+ min for big videos.
Aborted"The Actor process was aborted. You can resurrect it to continue where you left off."You stopped the run manually.No charge for unpushed posts.

Common in-run errors (success: false in the dataset row — visible in run log)

Error / error_kindWhat it meansFix
URL has already been submitted / ALREADY_SUB (link post)Someone already posted that URL to that subredditSet link_resubmit: true, or pick a different URL or sub
SUBREDDIT_NOTALLOWEDSub doesn't allow this post type, or your account has too little karma / agePick a different sub, or read r/{sub}'s posting rules
RATELIMIT ("you are doing that too much")Reddit's per-account post throttle (often 1–15 minutes between posts on new accounts, escalating with each retry while throttled)Wait the full quoted cooldown before retrying. The rate_remaining field shows how many calls you have left in the current window
BAD_FLAIR_TEMPLATE_IDFlair ID doesn't exist on this subDrop the flair fields, or fetch the right ID via Reddit Flairs V2 actor
Bearer token invalid / expiredYour saved Token V2 expired and you don't have a Reddit Session for auto-refreshRun Reddit Vault → UPDATE with a fresh Token V2, or save a Reddit Session next time
Proxy connection failedProxy IP unreachable from RedditCheck the proxy is alive — Reddit must return 200 OK when reached through it
failed to resolve image_urlImage / video / GIF URL not publicly reachableUse a CDN URL the actor can GET without auth
Bearer minted on a different IPSaved Token V2's IP doesn't match your saved proxyRe-mint the Token V2 on the proxy you'll use, then STORE / UPDATE both together
crossposting is not enabled in this communityThe source post's subreddit disabled crosspostingPick a different source post

Limits and quirks

  • Title length: Reddit caps post titles at 300 characters.
  • Body length: 40,000 characters.
  • Per-account rate limit: Reddit enforces per-account write limits — pace your runs accordingly to avoid throttling (shared with voting). The rate_* fields in the response show your live counter.
  • New-account throttle: Brand-new accounts (low age or low karma) get extra cooldowns between posts (sometimes minutes apart). This is a Reddit-side anti-spam measure, not an actor bug.
  • Datacenter proxies: Reddit zero-weights votes from datacenter IPs and aggressively rate-limits them for posting. Use mobile or residential proxies for sustained automation.
  • File extension must match: Reddit rejects images whose actual format doesn't match the URL extension (e.g. a .jpg URL serving a PNG). Make sure the URL extension reflects the real file type.
  • Video processing: Reddit processes videos asynchronously, so the post can show "Processing" for 30–90 seconds before becoming visible.
  • Crosspost source restrictions: Some subreddits disable crossposting from their content. The error returned by Reddit is crossposting is not enabled in this community.

Best practices

  1. Use the Reddit Vault. Save your accounts once with a Reddit Session — Token V2 auto-refresh keeps everything working for ~180 days.
  2. Match account ↔ subreddit. Brand-new accounts can't post to large default subs (AskReddit, news, etc.). Build account reputation first by commenting in small communities.
  3. Stagger posts. Reddit's anti-spam looks at velocity — 5 posts in 5 minutes from the same account is suspicious. Schedule with the Apify Scheduler instead.
  4. Mobile/residential proxies only for posting. Datacenter IPs work for read-only scraping but are visibility-degraded for vote/post actions (March 2026 Reddit policy change).
  5. Respect subreddit rules. Each sub's r/{sub}/about/rules.json lists posting requirements. The Reddit Subreddits V2 actor can fetch them programmatically.

Need a different shape of data?

All of them accept the same accountName field, so saving credentials in Reddit Vault unlocks them all.


Why this actor is fast

  • Speed — 1–3 seconds per call, end-to-end. Pure HTTP to Reddit's API. No browser to boot, no Playwright / Selenium / Puppeteer overhead. Competing browser-based scrapers typically take 15–60 seconds per call.
  • Reliability — zero browser flakiness. No headless-Chromium crashes. No JS-render timeouts. No captcha pages. No surprise mid-run failures from a browser quirk.
  • Footprint — under 100 MB RAM per run. Most browser-based scrapers need 1–4 GB. Built for reliability behind the scenes — just paste your inputs and run.

Pricing

Pay-per-event — you only pay for successful post creations. Failed runs (auth errors, validation errors, subreddit-rule rejections, network timeouts) are not charged.

EventTriggerPrice (per 1,000)
post-created-textSuccessful text post$30
post-created-linkSuccessful link post$30
post-created-crosspostSuccessful crosspost$30
post-created-pollSuccessful poll post$30
post-created-imageSuccessful single-image post$40
post-created-gifSuccessful GIF post$40
post-created-gallerySuccessful gallery post (any number of images)$50
post-created-videoSuccessful video post$60
resultEach row pushed to the dataset (success or failure)$0.01

Heavier media types cost more because they involve a longer end-to-end pipeline — upload, processing, and asset readiness checks against Reddit. Light text/link posts complete in seconds and are priced accordingly.

You'll see each line item on your Apify usage statement under its event name (e.g. post-created-image).


Support and feedback

Found a bug, want a feature, 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 Posting V1 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 and within each subreddit's posting rules.