# Reddit Feeds V2 — 11 sitewide, subreddit & account feeds (`red_crawler/reddit-feeds`) Actor

Fetch any of Reddit's 11 feeds at scale: Popular, News, r/All, Watch (videos), Games, Explore, Topic, Recommended Media, any subreddit's posts feed, plus your account's Latest and Saved Posts feeds. 11 self-contained endpoints — 9 anonymous, 2 require a Reddit account.

- **URL**: https://apify.com/red\_crawler/reddit-feeds.md
- **Developed by:** [Red Crawler](https://apify.com/red_crawler) (community)
- **Categories:** Lead generation, SEO tools, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Reddit Feeds V2

Pull posts from any of Reddit's eleven post feeds at scale. Nine of them — sitewide tabs (Popular, News, r/all), discovery feeds (Explore, Games, Watch, Topic, Recommended Media), and any individual subreddit's feed — work anonymously with no account required. Two of them — your account's **Latest Feed** and **Saved Posts Feed** — read your personal Reddit account and need a Token V2 (either pasted directly or stored in the **reddit-vault** actor).

Eleven self-contained endpoints. Each call returns a paginated batch of post records, one row per post. Pick the endpoint, fill the matching section, hit Start.

---

### What you can fetch

The first nine feeds accept the same three controls — **Sort**, **Time filter**, and **Limit** — so once you learn one, you know them all. The Subreddit, Topic, and Recommended Media feeds add one extra input each (the subreddit name, topic ID, or seed IDs respectively). The two account feeds at the end add the credentials section at the bottom of the form.

#### 1. Subreddit Feed — posts from one subreddit

The classic "scrape r/python" use case. Returns posts from a single subreddit.

**Inputs:**
- **Subreddit** — bare name (`python`), prefixed (`r/python`), or full URL (`https://reddit.com/r/python`)
- **Sort** — `best`, `hot`, `new`, `top`, `controversial`, `rising`
- **Time filter** — `hour`, `day`, `week`, `month`, `year`, `all` (only applies when sort is `top` or `controversial` — ignored otherwise)
- **Limit** — 1 to 500

**Use it when:** you want the standard subreddit-feed scrape — recent posts, top-of-week roundups, monitoring a niche community.

#### 2. Popular Feed — Reddit's sitewide Popular tab

Returns whatever Reddit currently shows on its main Popular page — the homepage of logged-out Reddit.

**Inputs:** Sort, Time filter, Limit (1–500) — same controls as Subreddit Feed.

**Use it when:** trend-watching, daily front-page snapshots, training models on what's currently going viral.

#### 3. News Feed — Reddit's News tab

Reddit's curated News feed — pulls posts from news-oriented subreddits the way Reddit's News tab does.

**Inputs:** Sort (with one extra option, `awarded`), Time filter, Limit (1–500).

**Use it when:** news monitoring, link aggregation, headline scraping.

#### 4. All Feed — r/all

Posts from r/all — the firehose of every public subreddit on Reddit (minus the few opted out).

**Inputs:** Sort, Time filter, Limit (1–500).

**Use it when:** maximum breadth — high-volume scraping across all of Reddit, training data, dataset bootstrapping.

#### 5. Explore Feed — Reddit's discovery / Communities feed

Pulls Reddit's "Explore" tab content — discovery-style posts plus surfaced communities.

**Inputs:** Sort, Time filter, Limit.

**Use it when:** finding new subreddits Reddit is recommending, mapping community discovery surfaces, market-sizing the long tail.

#### 6. Games Feed — Reddit's Games-focused feed

A vertical feed weighted toward gaming communities and content.

**Inputs:** Sort, Time filter, Limit.

**Use it when:** gaming-niche scraping, esports / launch-day monitoring, game-marketing intelligence.

#### 7. Watch Feed — video-focused content

Reddit's video-first feed — favors posts with embedded videos / GIFs / short clips over self-text.

**Inputs:** Sort, Time filter, Limit.

**Use it when:** video / clip mining, social-media short-form content sourcing, media-asset collection.

#### 8. Topic Feed — interest-topic feed

Returns posts for a specific Reddit topic ID. Topic IDs look like `tx1_2unn29s` and you can pull them from the Explore feed (each Explore item carries its topic ID).

**Inputs:**
- **Topic ID** — the `tx1_...` ID from Explore (default `tx1_2unn29s` is a working example)
- **Scheme name (optional)** — Reddit's internal topic scheme name; usually leave blank
- **Sort, Time filter, Limit**

**Use it when:** scraping a specific interest topic at scale (e.g., a particular hobby, fandom, or category Reddit has clustered).

#### 9. Recommended Media — image / video recommendations seeded by subreddits

Reddit returns image/video posts recommended off a list of seed subreddit IDs. Useful for visual content discovery anchored to communities you care about.

**Inputs:**
- **Seed subreddit IDs** — comma-separated `t5_...` IDs (default `t5_2qh33,t5_2cneq` is r/funny + r/aww)
- **Sort, Time filter, Limit**

**Tip:** Use the **Reddit Subreddits V2** actor's `ID` endpoint to convert a subreddit name (e.g. `funny`) into its `t5_` ID.

**Use it when:** building image / meme datasets seeded by topic, content recommendation experiments, visual-trend scraping.

#### 10. Latest Feed — your account's Latest feed (bearer required)

The personalised "Latest" feed your Reddit account sees — chronologically newest posts from the subreddits and users you follow, plus recommendations Reddit attaches to the account.

**Inputs:** Sort (defaults to `new`), Time filter, Limit, **plus credentials** (saved account name from the vault, or pasted Token V2 + proxy).

**Use it when:** monitoring brand-new posts in your followed communities, watching a niche-feed of accounts you've subscribed to, building a fresh-content notifier.

#### 11. Saved Posts Feed — your account's saved posts (bearer required)

Pulls every post you've saved on your Reddit account. Useful for exporting bookmarks, building a personal archive, or auditing a moderator-account's saved review queue.

**Inputs:** Sort, Time filter, Limit, **plus credentials** (saved account name from the vault, or pasted Token V2 + proxy).

**Use it when:** exporting your saved-posts archive to JSON / CSV, syncing a personal bookmark database, auditing moderator review history.

---

### How to run

1. **Pick a feed** in the "What to fetch" dropdown at the top.
2. **Open the matching section** below it and fill in the fields (subreddit name, topic ID, or seed IDs if needed — sort / time / limit always show up).
3. **For the Latest Feed or Saved Posts Feed:** also fill the **credentials section** at the bottom of the form. Two ways to authenticate:
   - **Saved account (recommended)** — store your account once in the **reddit-vault** actor, then enter that name in "Saved account name" here. Token V2 + matching proxy are loaded automatically.
   - **Manual** — paste your `token_v2` cookie (`eyJ...`) and a matching proxy in `ip:port:user:pass` format. Reddit IP-binds Token V2, so the proxy MUST be the same IP that minted the cookie.
4. **Click Start.**

Each endpoint section is independent — fields outside your chosen section are ignored, so you can leave them as-is between runs. The default endpoint is `popular` so the actor runs out of the box without any credentials.

**Time filter gotcha:** the Time filter is **only applied when Sort is `top` or `controversial`**. Reddit ignores it for `hot`, `new`, `best`, `rising`. The actor passes whatever you set — it's just a no-op for the other sorts.

---

### Output

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

Every feed pushes **one record per post** (up to your `limit`). Each record carries:

- **Identity** — `id`, `__typename`, `endpoint`
- **Headline** — `postTitle`, `score`, `commentCount`, `createdAt`, `url`, `domain`
- **State flags** — `isNsfw`, `isSpoiler`, `isLocked`, `isStickied`, `isArchived`, `voteState`
- **Content** — `content` (selftext / body), `thumbnail`, `media`, `flair`, `authorInfo`

The most useful columns are placed first so the dataset Table view is readable without horizontal scrolling.

---

### Common edge cases

- **Empty pages** — if a sort/time combination has no matching posts (e.g. `top` of `hour` on a quiet subreddit), the actor returns an empty dataset. This is normal Reddit behavior, not an error.
- **Quarantined or NSFW subreddits** — Subreddit Feed works on most NSFW subreddits. Quarantined ones may return no posts unless the feed is logged-in-only (those are out of scope for this actor).
- **Topic IDs change** — Reddit occasionally renames or retires topic IDs. If your saved Topic ID stops returning posts, pull a fresh one from the Explore feed.
- **Recommended Media seed limits** — Reddit caps the number of seed IDs it'll consider; pass your most relevant 2–10 subreddit IDs rather than dozens.
- **Time filter on wrong sorts** — passing `time=week` with `sort=hot` is silently ignored by Reddit. Use `top` or `controversial` if you want time-window filtering.
- **Latest / Saved Posts return nothing** — usually means the Token V2 expired (~24 h lifetime) or the proxy IP doesn't match the IP that minted it. Refresh the cookie in your browser, save it again in **reddit-vault**, and re-run.
- **Empty Saved Posts Feed** — if your Reddit account has never saved a post, this feed legitimately returns nothing. Save one post via Reddit's UI to confirm the pipeline works.

---

### Why this actor is fast

- **Speed — 1–4 seconds per call, end-to-end.** 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. Reddit auth, IP rotation, and retry are all handled for you — the actor itself is a thin client.

---

### Pricing

Pay-per-result. You're only charged for posts actually pushed to the dataset — failed runs cost nothing. See the actor's pricing tab for the current per-result rate.

---

### Need a different shape of data?

- For **search** (find posts by keyword across Reddit), see **Reddit Search V2**.
- For **single-post / comment-tree scraping** (one post + its full comment tree), see **Reddit Scraper V2**.
- For **user-feed scraping** (posts and comments by a specific user), see **Reddit Users V2**.
- For **subreddit metadata** (rules, flairs, wiki, style, etc., not posts), see **Reddit Subreddits V2**.
- For **bulk lookups** (up to 1500 posts / comments / users / subreddits in one run), see **Reddit Bulk Scrape**.
- For **storing Reddit accounts** so the Latest / Saved Posts feeds (and other authed actors) can re-use them, see **Reddit Vault**.

# Actor input Schema

## `endpoint` (type: `string`):

Choose which feed to call. The first 9 are anonymous (no Reddit account needed). The last 2 require a Reddit account — fill the Reddit credentials section at the bottom of the form.
## `subreddit_name` (type: `string`):

Subreddit name, r/name, or full URL (e.g. 'python', 'r/python', or 'https://www.reddit.com/r/python').
## `subreddit_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `subreddit_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `subreddit_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `popular_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `popular_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `popular_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `news_sort` (type: `string`):

Sort order. News supports an extra 'awarded' option. Time filter only applies to 'top' / 'controversial'.
## `news_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `news_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `all_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `all_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `all_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `explore_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `explore_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `explore_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `games_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `games_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `games_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `watch_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `watch_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `watch_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `topic_id` (type: `string`):

Topic ID like 'tx1_2unn29s'. Get IDs from the 'Explore Feed' endpoint.
## `topic_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `topic_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `topic_scheme_name` (type: `string`):

Optional scheme name. Leave blank unless you know what you need.
## `topic_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `recommended_media_seeds` (type: `string`):

Comma-separated subreddit fullnames (e.g. 't5_2qh33,t5_2cneq'). Recommendations are seeded from these communities.
## `recommended_media_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `recommended_media_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `recommended_media_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `latest_sort` (type: `string`):

Sort order. Defaults to 'new' for the Latest feed. Time filter only applies to 'top' / 'controversial'.
## `latest_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `latest_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `saved_posts_sort` (type: `string`):

Sort order. Time filter only applies to 'top' / 'controversial'.
## `saved_posts_time` (type: `string`):

Time window — IGNORED unless sort is 'top' or 'controversial'.
## `saved_posts_limit` (type: `integer`):

Max posts to return (1–500). Auto-paginates.
## `credentialSource` (type: `string`):

Only used when the chosen endpoint is one of the bearer-required ones ('Latest Feed' and 'Saved Posts Feed'). For all other endpoints leave the default — credentials are ignored. **Use saved account (vault)** loads your stored Token V2 + proxy from the **reddit-vault** actor — only the 'Saved account name' field is used. **Paste Token V2 + proxy** uses the values you paste below.
## `accountName` (type: `string`):

The name you used in the **reddit-vault** actor when you stored this account. Your Token V2 + proxy load automatically from the vault. Ignored when 'Credential source' = manual.
## `bearer` (type: `string`):

Your Reddit `token_v2` cookie value (`eyJ...`). Lifetime ~24 h. Encrypted at rest by Apify. Ignored when 'Credential source' = vault.
## `proxy` (type: `string`):

Proxy in `ip:port:user:pass` format. MUST be the same IP that originally minted the Token V2. Ignored when 'Credential source' = vault.

## Actor input object example

```json
{
  "endpoint": "popular",
  "subreddit_name": "python",
  "subreddit_sort": "hot",
  "subreddit_time": "all",
  "subreddit_limit": 100,
  "popular_sort": "hot",
  "popular_time": "all",
  "popular_limit": 100,
  "news_sort": "best",
  "news_time": "all",
  "news_limit": 100,
  "all_sort": "hot",
  "all_time": "all",
  "all_limit": 100,
  "explore_sort": "hot",
  "explore_time": "all",
  "explore_limit": 100,
  "games_sort": "hot",
  "games_time": "all",
  "games_limit": 100,
  "watch_sort": "hot",
  "watch_time": "all",
  "watch_limit": 100,
  "topic_id": "tx1_2unn29s",
  "topic_sort": "hot",
  "topic_time": "all",
  "topic_limit": 100,
  "recommended_media_seeds": "t5_2qh33,t5_2cneq",
  "recommended_media_sort": "hot",
  "recommended_media_time": "all",
  "recommended_media_limit": 100,
  "latest_sort": "new",
  "latest_time": "all",
  "latest_limit": 100,
  "saved_posts_sort": "hot",
  "saved_posts_time": "all",
  "saved_posts_limit": 100,
  "credentialSource": "vault"
}
````

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "endpoint": "popular",
    "subreddit_name": "python",
    "topic_id": "tx1_2unn29s",
    "recommended_media_seeds": "t5_2qh33,t5_2cneq"
};

// Run the Actor and wait for it to finish
const run = await client.actor("red_crawler/reddit-feeds").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "endpoint": "popular",
    "subreddit_name": "python",
    "topic_id": "tx1_2unn29s",
    "recommended_media_seeds": "t5_2qh33,t5_2cneq",
}

# Run the Actor and wait for it to finish
run = client.actor("red_crawler/reddit-feeds").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "endpoint": "popular",
  "subreddit_name": "python",
  "topic_id": "tx1_2unn29s",
  "recommended_media_seeds": "t5_2qh33,t5_2cneq"
}' |
apify call red_crawler/reddit-feeds --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=red_crawler/reddit-feeds",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Reddit Feeds V2 — 11 sitewide, subreddit & account feeds",
        "description": "Fetch any of Reddit's 11 feeds at scale: Popular, News, r/All, Watch (videos), Games, Explore, Topic, Recommended Media, any subreddit's posts feed, plus your account's Latest and Saved Posts feeds. 11 self-contained endpoints — 9 anonymous, 2 require a Reddit account.",
        "version": "0.5",
        "x-build-id": "M8Ynd6n63ZFnXfsSe"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/red_crawler~reddit-feeds/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-red_crawler-reddit-feeds",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/red_crawler~reddit-feeds/runs": {
            "post": {
                "operationId": "runs-sync-red_crawler-reddit-feeds",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/red_crawler~reddit-feeds/run-sync": {
            "post": {
                "operationId": "run-sync-red_crawler-reddit-feeds",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "endpoint"
                ],
                "properties": {
                    "endpoint": {
                        "title": "What to fetch",
                        "enum": [
                            "subreddit",
                            "popular",
                            "news",
                            "all",
                            "explore",
                            "games",
                            "watch",
                            "topic",
                            "recommended_media",
                            "latest",
                            "saved_posts"
                        ],
                        "type": "string",
                        "description": "Choose which feed to call. The first 9 are anonymous (no Reddit account needed). The last 2 require a Reddit account — fill the Reddit credentials section at the bottom of the form.",
                        "default": "popular"
                    },
                    "subreddit_name": {
                        "title": "Subreddit",
                        "type": "string",
                        "description": "Subreddit name, r/name, or full URL (e.g. 'python', 'r/python', or 'https://www.reddit.com/r/python')."
                    },
                    "subreddit_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "subreddit_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "subreddit_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "popular_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "popular_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "popular_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "news_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising",
                            "awarded"
                        ],
                        "type": "string",
                        "description": "Sort order. News supports an extra 'awarded' option. Time filter only applies to 'top' / 'controversial'.",
                        "default": "best"
                    },
                    "news_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "news_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "all_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "all_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "all_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "explore_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "explore_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "explore_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "games_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "games_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "games_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "watch_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "watch_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "watch_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "topic_id": {
                        "title": "Topic ID",
                        "type": "string",
                        "description": "Topic ID like 'tx1_2unn29s'. Get IDs from the 'Explore Feed' endpoint."
                    },
                    "topic_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "topic_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "topic_scheme_name": {
                        "title": "Scheme name (optional)",
                        "type": "string",
                        "description": "Optional scheme name. Leave blank unless you know what you need."
                    },
                    "topic_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "recommended_media_seeds": {
                        "title": "Seed subreddit IDs",
                        "type": "string",
                        "description": "Comma-separated subreddit fullnames (e.g. 't5_2qh33,t5_2cneq'). Recommendations are seeded from these communities."
                    },
                    "recommended_media_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "recommended_media_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "recommended_media_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "latest_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Defaults to 'new' for the Latest feed. Time filter only applies to 'top' / 'controversial'.",
                        "default": "new"
                    },
                    "latest_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "latest_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "saved_posts_sort": {
                        "title": "Sort",
                        "enum": [
                            "best",
                            "hot",
                            "new",
                            "top",
                            "controversial",
                            "rising"
                        ],
                        "type": "string",
                        "description": "Sort order. Time filter only applies to 'top' / 'controversial'.",
                        "default": "hot"
                    },
                    "saved_posts_time": {
                        "title": "Time filter (top / controversial only)",
                        "enum": [
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year",
                            "all"
                        ],
                        "type": "string",
                        "description": "Time window — IGNORED unless sort is 'top' or 'controversial'.",
                        "default": "all"
                    },
                    "saved_posts_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max posts to return (1–500). Auto-paginates.",
                        "default": 100
                    },
                    "credentialSource": {
                        "title": "Credential source",
                        "enum": [
                            "vault",
                            "manual"
                        ],
                        "type": "string",
                        "description": "Only used when the chosen endpoint is one of the bearer-required ones ('Latest Feed' and 'Saved Posts Feed'). For all other endpoints leave the default — credentials are ignored. **Use saved account (vault)** loads your stored Token V2 + proxy from the **reddit-vault** actor — only the 'Saved account name' field is used. **Paste Token V2 + proxy** uses the values you paste below.",
                        "default": "vault"
                    },
                    "accountName": {
                        "title": "Saved account name (used when source = vault)",
                        "pattern": "^[A-Za-z0-9_-]{1,32}$",
                        "maxLength": 32,
                        "type": "string",
                        "description": "The name you used in the **reddit-vault** actor when you stored this account. Your Token V2 + proxy load automatically from the vault. Ignored when 'Credential source' = manual."
                    },
                    "bearer": {
                        "title": "Token V2 (used when source = manual)",
                        "type": "string",
                        "description": "Your Reddit `token_v2` cookie value (`eyJ...`). Lifetime ~24 h. Encrypted at rest by Apify. Ignored when 'Credential source' = vault."
                    },
                    "proxy": {
                        "title": "Proxy (used when source = manual)",
                        "type": "string",
                        "description": "Proxy in `ip:port:user:pass` format. MUST be the same IP that originally minted the Token V2. Ignored when 'Credential source' = vault."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
