Reddit Posts & Feeds V2 — Types, Home Feed, State Controls avatar

Reddit Posts & Feeds V2 — Types, Home Feed, State Controls

Pricing

$1.99 / 1,000 results

Go to Apify Store
Reddit Posts & Feeds V2 — Types, Home Feed, State Controls

Reddit Posts & Feeds V2 — Types, Home Feed, State Controls

Three V2 reads on posts and your home feed: 1) allowed post types per subreddit (anonymous), 2) personalized home feed sorted Best/Hot/New/Top/Controversial/Rising, 3) state controls on your own posts (save / hide / nsfw / spoiler / pin / delete and 14 more). 1 anonymous + 2 saved-account.

Pricing

$1.99 / 1,000 results

Rating

5.0

(2)

Developer

Red Crawler

Red Crawler

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Reddit Posts & Feeds V2

Endpoints Auth Proxy Pricing

Three V2 reads on Reddit posts and your home feed:

  1. Allowed Post Types — which post types a subreddit accepts (anonymous, no account needed)
  2. Home Feed — your personalized home-feed posts, sorted any way you want (bearer required)
  3. Post State Controls — apply 20 different state actions to one of your own posts: save / hide / nsfw / spoiler / pin / delete / update / send_replies / follow / brand / reminder plus their inverses (bearer required)

The first endpoint is anonymous — no Reddit account, no proxy required. The other two reuse a Reddit account you've already saved in the Reddit Vault actor (or you can paste a Token V2 + matching proxy directly).

Pick an endpoint, fill the matching section, hit Start.


What you can fetch / change

The subreddit field accepts a name in any of these formats — paste whichever you have:

  • raw name — pics
  • prefixed — r/pics
  • subreddit URL — https://www.reddit.com/r/pics
  • old-Reddit URL — https://old.reddit.com/r/pics

Public endpoints (no Reddit account needed)

1. Allowed Post Types — what kinds of posts a subreddit accepts

Returns the post-type policy for a subreddit. Every sub can independently enable / disable each post type via its Allowed posts settings — this endpoint surfaces the result.

Inputs:

  • Subreddit (required)

Returns: booleans for isTextPostAllowed, isImagePostAllowed, isLinkPostAllowed, isVideoPostAllowed, isGalleryPostAllowed, isPollPostAllowed, isAmaPostAllowed, isCrosspostAllowed, plus a allowedPostTypes summary list.

Use it when: building a posting UI that auto-disables the wrong types per sub, pre-flighting before bulk posting (skip subs that won't accept your content), auditing which subs allow polls / videos / etc.

Example

Input

{
"endpoint": "post_types",
"post_types_subreddit": "AskReddit"
}

Output (one dataset record)

{
"endpoint": "post_types",
"subreddit": "AskReddit",
"__typename": "Subreddit",
"allAllowedPostTypes": ["TEXT", "SPOILER"],
"isCrosspostingAllowed": false,
"isPredictionAllowed": false,
"amaSettings": { "postPermissions": "OFF" },
"rate_limit_used": 1,
"rate_limit_remaining": 1799,
"rate_limit_reset_at": "2026-05-13T18:00:00Z"
}

Reddit returns the post-type policy as the allAllowedPostTypes enum list (TEXT, LINK, IMAGE, VIDEO, GALLERY, POLL, SPOILER, etc.). Subs that opt out of crossposts or AMAs have isCrosspostingAllowed: false / amaSettings.postPermissions: "OFF".

Bearer-required endpoints (need a Reddit account)

These two endpoints require authentication. Fill the Reddit credentials section at the bottom of the input form (see Credentials below).

2. Home Feed — your personalized home-page posts

Returns the posts Reddit shows on your home feed (the one you see when logged in at reddit.com/). Reddit personalizes this based on your subscriptions, follows, and interaction history.

Inputs:

  • Sortbest, hot, new, top, controversial, rising (default best)
  • Time filterhour, day, week, month, year, all (only applies when sort is top or controversial)
  • Limit — 1 to 1250 (default 100). Auto-paginates server-side.

Returns: post records with title, body, score, comment count, created timestamp, subreddit, post URL, thumbnail, vote state, NSFW / spoiler / locked / stickied / archived flags, flair, media, author info — one dataset row per post.

Use it when: mirroring your personal home feed into a dashboard, exporting the posts Reddit recommends to you, training models on what your account actually sees, building "what's new in my subs" digests.

Example

Input

{
"endpoint": "home_feed",
"home_feed_sort": "best",
"home_feed_limit": 3,
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record per post — first record shown, truncated)

{
"endpoint": "home_feed",
"__typename": "RichtextRecommendationContextCell",
"id": "1t9rspp",
"name": "t3_1t9rspp",
"title": "Finally joined Reddit after years of hearing about it 😅",
"authorName": "u/[deleted]",
"score": 8,
"commentCount": 5,
"createdAt": "2026-05-11T03:41:08.501000+0000",
"voteState": "NONE",
"detailsString": "r/redditdev",
"detailsLink": "redditdev",
"iconPath": "https://b.thumbs.redditmedia.com/...png",
"iconShape": "ROUND",
"isJoinButtonShown": true,
"joinSubredditId": "t5_2qizd",
"isVisited": false,
"text": "Hey everyone 👋 I recently started exploring the Reddit API and wanted to learn more...",
"isRead": false,
"isScoreHidden": false,
"shareCount": 5,
"groupRecommendationContext": {
"typeIdentifier": "user_to_post",
"richText": "{\"document\":[{\"c\":[{\"e\":\"text\",\"t\":\"Suggested for you\"}],\"e\":\"par\"}]}"
}
}

The home feed flattens Reddit's per-post cell stack — each row carries the title / preview / score / comment count, the resolved subreddit at detailsString (e.g. r/redditdev), the personalization hint at groupRecommendationContext, and the cell-level vote state at voteState. Set home_feed_limit higher to auto-paginate.

3. Post State Controls — apply an action to one of your own posts

Action endpoint (writes state to your own post). Apply any of 20 state-control actions: save, hide, mark NSFW, mark spoiler, follow comments, pin to profile, set reminder, toggle inbox replies, mark as brand-affiliate, delete, update body — plus the inverse (unsave, unhide, unnsfw, unspoiler, unfollow, unpin, no_reminder, no_replies, unbrand).

Inputs:

  • Post ID (required) — accepts t3_abc123, raw abc123, or a full Reddit post URL
  • Action (required) — one of:
    • save, unsave — Reddit's "save for later"
    • hide, unhide — hide from your feed
    • nsfw, unnsfw — toggle NSFW flag
    • spoiler, unspoiler — toggle spoiler flag
    • follow, unfollow — follow comments / replies on this post
    • brand, unbrand — brand-affiliate disclosure flag
    • pin, unpin — pin to your profile (max 4 pinned posts)
    • reminder, no_reminder — Reddit's "remind me later"
    • send_replies, no_replies — toggle inbox notifications for replies
    • delete — permanently delete the post
    • update — edit the post body (requires Content field)
  • Content (only used when action = update) — the new markdown body

Returns: success: true, action, post_id, plus any structured response Reddit returned.

Use it when: building post-management automation (auto-save threads matching a query, auto-pin a sticky to a fresh-account profile, bulk-NSFW your back-catalog, scheduled-edit a stale post, cleanup-delete old posts).

Action endpoint, not a scraper. Each run modifies one post — no dataset bulk action. For bulk-saving / bulk-deleting, schedule multiple runs with the Apify Scheduler.

Example (save action shown — the output shape is the same for every action; update echoes the new body in the response payload, pin returns the updated pin slot, etc.)

Input

{
"endpoint": "post_state",
"post_state_action": "save",
"post_state_post_id": "1syw2sd",
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record)

{
"endpoint": "post_state",
"success": true,
"action": "save",
"post_id": "1syw2sd",
"result": {
"updatePostSaveState": { "ok": true, "errors": null }
},
"rate_limit_used": 3,
"rate_limit_remaining": 1797,
"rate_limit_reset_at": "2026-05-13T18:00:00Z"
}

Credentials

The two bearer-required endpoints (Home Feed, Post State Controls) need a Reddit Token V2 cookie + the proxy that minted it. The Allowed Post Types endpoint ignores credentials entirely — leave the section blank for that one.

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 or reddit_session and copy the Value column.

Token V2 cookie in DevTools

Reddit Session cookie in DevTools

You have two options:

  1. Run the Reddit Vault actor once to store a Reddit account under a name you choose (e.g. main, alt-account, burner1). The vault encrypts the Token V2 + matching proxy and stores them keyed by name. If you save a long-lived reddit_session cookie alongside it, the vault auto-refreshes the Token V2 for you (~180 days).
  2. In this actor, set Credential source = Use saved account (vault) and put the same name in Saved account name.
  3. Done — Token V2 + proxy load automatically on every run.

Option B — Paste Token V2 + proxy directly

For one-off runs without setting up the vault:

  1. Set Credential source = Paste Token V2 + proxy.
  2. Paste your Reddit token_v2 cookie value (eyJ...) into Token V2.
  3. Paste the matching proxy in ip:port:user:pass format into Proxy.

Critical: Reddit IP-binds Token V2 cookies. The proxy MUST be the exact same IP that originally minted the Token V2 — otherwise Reddit returns 401 on every bearer call. Both fields are stored encrypted by Apify (isSecret: true).


How to run

  1. Pick an endpoint in the "What to do" dropdown at the top. The anonymous endpoint (Allowed Post Types) is at the top of the list; bearer-required endpoints (Home Feed, Post State Controls) follow.
  2. Open the matching section below it and fill its fields.
  3. If your endpoint is bearer-required, fill the Reddit credentials section at the bottom.
  4. Click Start.

Each endpoint section is independent — fields outside your chosen section are ignored, so you can leave them as-is between runs.


Output

Results are pushed to the actor's default dataset. View them as a table or download as JSON / CSV / Excel / XML.

  • Allowed Post Types pushes one record per run.
  • Home Feed pushes one record per post (up to your limit).
  • Post State Controls pushes one record per run (success or failure).

The most useful columns are placed first (endpoint, id, name, subreddit, title, etc.) so the dataset Table view is readable without horizontal scrolling.


Common edge cases

  • Empty home feed — brand-new accounts with no subscriptions get a thin or empty home feed. Subscribe to a few subs first.
  • Time filter ignored — only top and controversial sort respect time filter; on best / hot / new / rising it's silently dropped.
  • Pin limit — Reddit caps pinned posts at 4 per profile. Trying to pin a 5th returns an error.
  • Update on a deleted post — returns success but the post body remains "[deleted]". You can't un-delete.
  • NSFW / spoiler on a non-self post — works on link/image/video too. The flag attaches to the post, not the body.
  • Action on someone else's post — Post State Controls only works on your own posts. Trying to delete or update another user's post returns 403.
  • Bearer expired — Reddit Token V2 cookies live ~24 h. If you get a bearer_expired response, refresh the Token V2 in your vault entry (or paste a fresh one in manual mode) and re-run.

Why this actor is fast

  • Speed — 1–3 seconds per call. 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.
  • 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.

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. Some or zero records pushed.Open the dataset to view results.
Failed"The Actor process failed…"Validation error or upstream Reddit fault.Check the run log. You are NOT charged for 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.Re-run with a smaller limit or fewer inputs.
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 results.

Common in-run conditions (visible in run log)

ConditionCauseResult
Empty result setFeed has no posts matching the inputs.Run SUCCEEDED, 0 records, no charge.
Private / quarantined subredditReddit hides these from anonymous reads.Run SUCCEEDED, those rows skipped.
Banned subredditSubreddit has been banned by Reddit.Run SUCCEEDED, 0 records for that input.
Validation error: required input missingRequired parameter not provided.Run FAILED immediately, no charge.

Pricing

Pay-per-result. You're only charged for records actually pushed to the dataset — failed runs and validation errors cost nothing.

EventTriggerPrice (per 1,000)
resultEach post / state row pushed to the dataset$1.99

A 100-post Home Feed run = 100 rows. A single Post State action = 1 row. An Allowed Post Types lookup = 1 row.


Need a different shape of data?

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, 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 Posts & Feeds 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 and within each subreddit's posting rules.