# Reddit Subreddits V2 — Info, Rules, Wiki, Leaderboard (16) (`red_crawler/reddit-subreddits-v2`) Actor

Full subreddit toolkit: ID, rules, access info, type, channels, flairs, emojis, style/widgets, highlights, status, wiki + 5 bearer ops (access eligibility, settings, post requirements, top posters, top commenters).

- **URL**: https://apify.com/red\_crawler/reddit-subreddits-v2.md
- **Developed by:** [Red Crawler](https://apify.com/red_crawler) (community)
- **Categories:** Automation, Lead generation, Social media
- **Stats:** 61 total users, 12 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Subreddits V2

![Endpoints](https://img.shields.io/badge/endpoints-16-blue) ![Auth](https://img.shields.io/badge/Reddit_account-11_no_/_5_yes-yellow) ![Proxy](https://img.shields.io/badge/proxy-only_for_bearer_endpoints-yellow) ![Pricing](https://img.shields.io/badge/pricing-pay_per_result-orange)

Sixteen self-contained subreddit lookups — ID, rules, access state, type / topic, chat channels, flairs, custom emojis, theme & widgets, highlighted posts, status, wiki, **plus the 5 bearer-only endpoints** that require a signed-in Reddit account (access eligibility, full mod-side settings, post requirements, top-poster leaderboard, top-commenter leaderboard).

The first 11 endpoints are **anonymous — no Reddit account, no proxy required.** The 5 bearer endpoints 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

Every endpoint accepts a subreddit in any of these formats — paste whichever you have:

- bare name — `AskReddit`
- prefixed — `r/AskReddit`
- subreddit URL — `https://www.reddit.com/r/AskReddit`
- old-Reddit URL — `https://old.reddit.com/r/AskReddit`

#### Public endpoints (no Reddit account needed)

##### 1. ID — resolve subreddit name to its `t5_` ID

The simplest endpoint. Takes a subreddit name and returns Reddit's internal `t5_...` ID.

**Returns:** `id` (`t5_...`), `name`, `prefixedName` (`r/...`).

**Use it when:** you need a subreddit ID to seed another endpoint that takes IDs (e.g., the Recommended Media feed in **Reddit Feeds V2**, or any of Reddit's bulk-by-ID lookups).

**Example**

**Input**

```json
{ "endpoint": "id", "id_subreddit": "AskReddit" }
```

**Output** *(one dataset record)*

```json
{
  "endpoint": "id",
  "type": "id",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": { "id": "t5_2qh1i" }
}
```

##### 2. Rules — community rules list

Returns the subreddit's published rules — the list shown in the sidebar / community page.

**Returns:** array of rules, each with `priority`, `name` (short name), `description`, `violationReason`, `kind` (link / comment / all), `createdAt`.

**Use it when:** moderation tooling, rule-based content classification, building a "before you post" UX, or compliance / content-policy auditing.

**Example**

**Input**

```json
{ "endpoint": "rules", "rules_subreddit": "AskReddit" }
```

**Output** *(truncated)*

```json
{
  "endpoint": "rules",
  "type": "rules",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "siteRules": [
      { "ruleText": "Spam" },
      { "ruleText": "Personal and confidential information" },
      { "ruleText": "Threatening, harassing, or inciting violence" }
    ],
    "rules": [
      {
        "name": "Rule 1 - Questions must be clear and direct and may not use the body textbox",
        "content": { "html": "<ul><li>All questions must be clear, written in English...</li></ul>" }
      }
    ]
  }
}
```

##### 3. Access Info — public / restricted / private + age gate

Tells you whether the subreddit is public, restricted, or private — and whether content is age-gated (NSFW).

**Returns:** `isContributorRequired` (restricted-mode flag), `isNsfw` (over-18 flag), `isQuarantined`, `subscribersCount`, `permissions` (what an anonymous viewer can do).

**Use it when:** filtering content collection (skip private / quarantined subs), bulk-checking accessibility before scraping, NSFW-policy enforcement.

**Example**

**Input**

```json
{ "endpoint": "access_info", "access_info_subreddit": "AskReddit" }
```

**Output**

```json
{
  "endpoint": "access_info",
  "type": "access_info",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "id": "t5_2qh1i",
    "type": "PUBLIC",
    "name": "AskReddit",
    "publicDescriptionText": "r/AskReddit is the place to ask and answer thought-provoking questions.",
    "isContributor": false,
    "isCommentingRestricted": false,
    "isPostingRestricted": true,
    "styles": { "icon": "https://styles.redditmedia.com/t5_2qh1i/styles/communityIcon_p6kb2m6b185b1.png?..." }
  }
}
```

##### 4. Type — community type & topic settings

Returns Reddit's type-classification settings for the subreddit — what kind of community it is, what posts it allows, what topic it's tagged under.

**Returns:** `type` (public / restricted / private / employees\_only), `topic` (Reddit's interest-topic tag), `allowedPostTypes` (text / link / image / video / poll / gallery), `language`, `country`, `originalContentTagEnabled`.

**Use it when:** community taxonomy, building targeting rules ("only image-allowed gaming subs in EN"), audience research.

**Example**

**Input**

```json
{ "endpoint": "type", "type_subreddit": "AskReddit" }
```

**Output**

```json
{
  "endpoint": "type",
  "type": "type",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "isNsfw": false,
    "type": "PUBLIC",
    "isCommentingRestricted": false,
    "isPostingRestricted": true,
    "isContributorRequestsDisabled": false
  }
}
```

##### 5. Channels — chat channels enabled flag

Returns whether the subreddit has Reddit chat channels enabled.

**Returns:** `chatChannelsEnabled` flag plus channel metadata if any.

**Use it when:** mapping which subreddits have an active Reddit Chat surface, community-engagement audits.

**Example**

**Input**

```json
{ "endpoint": "channels", "channels_subreddit": "AskReddit" }
```

**Output**

```json
{
  "endpoint": "channels",
  "type": "channels",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "isSubredditChannelsEnabled": { "isChatEnabled": true, "isPostEnabled": false }
  }
}
```

##### 6. Flairs — post flairs OR user flairs (you pick)

Returns the list of flair templates the subreddit has configured. **Pick one** of the two flair types using the **Flair type** dropdown:

- **`Post flairs` (default)** — the tags applied to posts (e.g. "Serious Replies Only", "Mod Announcement"). Returned under `postFlairTemplates`.
- **`User flairs`** — the tags shown next to each member's name in the subreddit. Returned under `userFlairTemplates`.

**Inputs**

| Field | Notes |
|---|---|
| `Subreddit` | Subreddit name, `r/name`, or URL. |
| `Flair type` | `Post flairs` (default) or `User flairs`. |

**Returns (Post flairs)** — array of post-flair templates, each with `id`, `type` (`richtext` / `text`), `text`, `textColor`, `backgroundColor`, `richtext` (raw richtext JSON), `isEditable`, `isModOnly`, `maxEmojis`, `allowableContent`.

**Returns (User flairs)** — `userFlairTemplates.edges[]` — each `node` is a user-flair template with the same field shape as post flairs (`id`, `text`, `textColor`, `backgroundColor`, `richtext`, etc.) plus `userFlairTemplates.pageInfo` for cursor-paginated continuation. Also includes `flairPromptSettings`.

**Use it when:** flair-aware scraping (filter posts by flair), building a flair picker for a posting actor, content classification using subreddit-defined tags, mirroring a community's user-flair palette.

**Example — Post flairs**

**Input**

```json
{ "endpoint": "flairs", "flairs_subreddit": "AskReddit", "flairs_type": "post_flairs" }
```

**Output** *(truncated to first 1 template)*

```json
{
  "endpoint": "flairs",
  "type": "flairs",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "postFlairTemplates": [
      {
        "id": "54ea6bda-dcf0-11e2-9548-12313b0c8c59",
        "type": "richtext",
        "text": "Serious Replies Only",
        "textColor": "LIGHT",
        "richtext": "[{\"e\":\"text\",\"t\":\"Serious Replies Only\"}]",
        "backgroundColor": "#99C160",
        "isEditable": false,
        "isModOnly": false,
        "maxEmojis": 10,
        "allowableContent": "ALL"
      }
    ]
  }
}
```

**Example — User flairs**

**Input**

```json
{ "endpoint": "flairs", "flairs_subreddit": "AskReddit", "flairs_type": "user_flairs" }
```

**Output** *(subs without user-flair templates return an empty `edges` list; subs that have them populate it)*

```json
{
  "endpoint": "flairs",
  "type": "flairs",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "userFlairTemplates": {
      "edges": [],
      "pageInfo": {
        "hasNextPage": false,
        "hasPreviousPage": false,
        "startCursor": null,
        "endCursor": null
      }
    },
    "flairPromptSettings": null
  }
}
```

##### 7. Emojis — custom emoji list (snoomoji + community)

Returns the subreddit's custom emoji set — the community-uploaded emojis used in flairs and comments.

**Returns:** array of emojis, each with `name`, `url` (image URL), `mod-only` flag, `userFlairAllowed` flag, `postFlairAllowed` flag, `createdAt`.

**Use it when:** rendering subreddit content with proper emoji assets, building emoji catalogs for a UI, monitoring custom-emoji adoption.

**Example**

**Input**

```json
{ "endpoint": "emojis", "emojis_subreddit": "AskReddit" }
```

**Output** *(truncated to first 2 emojis)*

```json
{
  "endpoint": "emojis",
  "type": "emojis",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "id": "t5_2qh1i",
    "emojis": {
      "edges": [
        {
          "node": {
            "name": "Martha",
            "url": "https://emoji.redditmedia.com/6ufqrbuw8m201_t5_2qh1i/Martha",
            "flairPermission": "ALL",
            "isModOnly": false,
            "createdByInfo": { "id": "t2_9yfak" }
          }
        },
        {
          "node": {
            "name": "Steve",
            "url": "https://emoji.redditmedia.com/nszan0tz8m201_t5_2qh1i/Steve",
            "flairPermission": "ALL",
            "isModOnly": false,
            "createdByInfo": { "id": "t2_9yfak" }
          }
        }
      ]
    }
  }
}
```

##### 8. Style & Widgets — colors, banners, sidebar widgets

The full visual identity payload — theme colors, banner / icon imagery, and the sidebar widgets Reddit shows on the community page (rules block, mod list, custom widgets, calendar, button widgets, image widgets, etc.).

**Returns:** `style` (banner image, icon, mobile banner, primary color, banner background color), plus `widgets` (id-keyed map of every widget on the sidebar with its kind and content).

**Use it when:** asset extraction, building a community-aware UI, embedding subreddit branding in a downstream app, design-research / community-aesthetics analysis.

**Example**

**Input**

```json
{ "endpoint": "style", "style_subreddit": "AskReddit" }
```

**Output** *(truncated — full payload includes every sidebar widget)*

```json
{
  "endpoint": "style",
  "type": "style",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "id": "t5_2qh1i",
    "styles": {
      "primaryColor": "#646D73",
      "bannerBackgroundImage": "https://styles.redditmedia.com/t5_2qh1i/styles/bannerBackgroundImage_fs33xogq946f1.png",
      "icon": "https://styles.redditmedia.com/t5_2qh1i/styles/communityIcon_p6kb2m6b185b1.png?..."
    },
    "widgets": {
      "items": { "...id-keyed map of every sidebar widget...": "..." },
      "layout": { "sidebar": { "order": ["widget_id_1", "widget_id_2"] } }
    },
    "moderatorsInfo": { "...": "..." },
    "rules": [ { "...": "..." } ]
  }
}
```

##### 9. Highlights — highlighted posts on community page

Returns the posts the subreddit's mods have highlighted / pinned to the community page (the "Pinned" section at the top).

**Returns:** array of post records — same field shape as Reddit Feeds V2 (`id`, `postTitle`, `score`, `commentCount`, `createdAt`, `url`, `flair`, etc.).

**Note:** Many subreddits have no highlighted posts. An empty list is the normal result when the mods haven't pinned anything.

**Use it when:** featured-content discovery, finding the rules / mod-announcement pinned posts, monitoring community campaigns.

**Example**

**Input**

```json
{ "endpoint": "highlights", "highlights_subreddit": "Wordpress" }
```

**Output** *(one record per call; `highlightedPosts` is an array, first entry shown)*

```json
{
  "endpoint": "highlights",
  "type": "highlights",
  "subreddit": "Wordpress",
  "subreddit_id": "t5_2rcsg",
  "success": true,
  "subredditInfoById": {
    "id": "t5_2rcsg",
    "name": "Wordpress",
    "highlightedPosts": [
      {
        "label": "ANNOUNCEMENT",
        "expiresAt": null,
        "post": {
          "id": "t3_1r80vkz",
          "title": "Monthly AMA - Suggestions wanted!",
          "commentCount": 12,
          "createdAt": "2026-02-18T11:48:13.247000+0000",
          "content": { "markdown": "We're launching a monthly AMA series featuring people from across the WordPress ecosystem..." }
        }
      }
    ]
  }
}
```

##### 10. Status — community status flags

Returns the lifecycle / visibility state of the subreddit — whether it is currently active, archived, locked, deleted, banned, or quarantined.

**Returns:** `isActive`, `isArchived`, `isLocked`, `isDeleted`, `isBanned`, `isQuarantined`, plus the human-readable reason / message Reddit displays for unavailable communities.

**Use it when:** screening dead / banned / archived subs out of a target list before launching a scrape, monitoring health of communities you depend on, dashboards that show which subs went down.

**Example**

**Input**

```json
{ "endpoint": "status", "status_subreddit": "AskReddit" }
```

**Output**

```json
{
  "endpoint": "status",
  "type": "status",
  "subreddit": "AskReddit",
  "subreddit_id": "t5_2qh1i",
  "success": true,
  "subredditInfoById": {
    "name": "AskReddit",
    "communityStatus": {
      "description": { "markdown": "​Credit" },
      "emoji": {
        "name": "donkey_right",
        "url": "https://emoji.redditmedia.com/5atpv9pyenjf1_t5_2qh1i/donkey_right"
      }
    }
  }
}
```

##### 11. Wiki — wiki page content

Reads the markdown content of any wiki page on the subreddit. Defaults to the wiki index, but you can pick from a dropdown of the most common pages.

**Inputs:**

- **Subreddit** — same input as everywhere else
- **Wiki page** — one of `index` (default), `config/sidebar`, `config/description`, `config/submit_text`, `faq`, `rules`, `wiki`

**Returns:** `content` (the page's markdown body), `revisionDate`, `revisionAuthor`, `mayRevise` (whether the current viewer can edit — always false for anonymous reads), `pageName`.

**Use it when:** scraping FAQ / sidebar / rules-as-prose, archiving wiki history, building a chat-bot grounded on a community's wiki.

**Note on `wiki` vs `index`:** these are usually the same page. `index` is the canonical name; `wiki` is what some communities use as the entry point.

**Example**

**Input**

```json
{ "endpoint": "wiki", "wiki_subreddit": "AskReddit", "wiki_page": "index" }
```

**Output** *(truncated — pageTree lists every wiki page in the subreddit)*

```json
{
  "endpoint": "wiki",
  "type": "wiki",
  "subreddit": "AskReddit",
  "page": "index",
  "success": true,
  "subredditInfoByName": {
    "id": "t5_2qh1i",
    "name": "AskReddit",
    "isSubscribed": false,
    "wiki": {
      "index": {
        "status": "VALID",
        "pageTree": [
          { "name": "bestof",          "path": "bestof",          "depth": 0, "isPagePresent": true },
          { "name": "commonquestions", "path": "commonquestions", "depth": 0, "isPagePresent": true },
          { "name": "description",     "path": "config/description", "depth": 1, "isPagePresent": true, "parent": "config" }
        ]
      }
    },
    "styles": { "icon": "https://styles.redditmedia.com/t5_2qh1i/styles/communityIcon_p6kb2m6b185b1.png?..." }
  }
}
```

#### Bearer-required endpoints (need a Reddit account)

These five endpoints require authentication. Fill the **Reddit credentials** section at the bottom of the input form (see [Credentials](#credentials) below).

##### 12. Access Eligibility — gating + age / quarantine state

Reddit's per-user access-gate check: tells you, *for the signed-in user*, whether they can access this subreddit and what gate (age verification, quarantine ack, NSFW opt-in, contributor requirement) is currently blocking them.

**Returns:** `eligibility` (allowed / blocked), `gate` (e.g. `age_verification`, `quarantined`, `nsfw_opt_in`, `contributors_only`), `acknowledgmentRequired`, `messageHtml` (the modal text Reddit would show the user).

**Use it when:** building a sign-in / browse flow that has to handle the same gates Reddit applies to signed-in users; pre-checking before a scraper authenticated as a user tries to read content; dashboards that surface "this account can / can't reach sub X".

**Example**

**Input** *(using a vault account)*

```json
{
  "endpoint": "access_eligibility",
  "access_eligibility_subreddit": "AskReddit",
  "credentialSource": "vault",
  "accountName": "main"
}
```

**Output**

```json
{
  "endpoint": "access_eligibility",
  "type": "access_eligibility",
  "subreddit": "AskReddit",
  "success": true,
  "subredditInfoByName": {
    "type": "PUBLIC",
    "isContributor": false,
    "isCommentingRestricted": false,
    "isPostingRestricted": true,
    "lastContributorRequestTimeAt": null,
    "modPermissions": null
  },
  "rate_limit_used": 12,
  "rate_limit_remaining": 1788,
  "rate_limit_reset_at": "2026-05-13T16:50:00Z"
}
```

##### 13. Settings — full mod-side settings

Returns the full Settings payload Reddit returns to a user with mod permissions on the subreddit — the exact fields the mod tools page edits. Many fields are also visible to non-mods (read-only); a non-mod call still returns the public subset.

**Returns:** `name`, `description`, `publicDescription`, `submitText`, `submitTextLabel`, `submitLinkLabel`, `language`, `country`, `subredditType`, `wikiEditMode`, `wikiEditAge`, `wikiEditKarma`, `spoilerEnabled`, `allOriginalContent`, `originalContentTagEnabled`, `welcomeMessageEnabled`, `welcomeMessageText`, plus content-control flags (`isCommentScoreHideMinsEnabled`, `commentScoreHideMins`, `suggestedCommentSort`, etc.).

**Use it when:** building mod tooling, exporting / migrating a community config, snapshot-diffing your settings over time, auditing a subreddit you own.

**Example**

**Input**

```json
{
  "endpoint": "settings",
  "settings_subreddit": "AskReddit",
  "credentialSource": "vault",
  "accountName": "main"
}
```

**Output** *(public-visible subset shown — moderators of the sub see more fields)*

```json
{
  "endpoint": "settings",
  "type": "settings",
  "subreddit": "AskReddit",
  "subreddit_id": "t5_2qh1i",
  "success": true,
  "subredditInfoById": {
    "id": "t5_2qh1i",
    "isTopListingAllowed": true,
    "isDiscoveryAllowed": true,
    "language": "es",
    "allAllowedPostTypes": ["TEXT", "SPOILER"],
    "isArchivePostsEnabled": true,
    "postFlairSettings":  { "isEnabled": true,  "isSelfAssignable": false },
    "authorFlairSettings":{ "isEnabled": false, "isSelfAssignable": false },
    "isSubredditChannelsEnabled": { "isChatEnabled": true, "isPostEnabled": false },
    "amaSettings": { "postPermissions": "OFF" },
    "videoInCommentSettings": { "commentPermissions": "MODS" },
    "commentContributionSettings": { "allowedMediaTypes": ["VIDEO"] },
    "countrySiteSettings": {
      "countryCode": "",
      "languageCode": "en",
      "isCountrySiteEditable": true,
      "modMigrationAt": "2022-06-15T22:34:00.000000+0000"
    }
  },
  "rate_limit_used": 13,
  "rate_limit_remaining": 1787,
  "rate_limit_reset_at": "2026-05-13T16:50:00Z"
}
```

##### 14. Post Requirements — title / body rules + allowed types

Returns the per-subreddit **posting rules** Reddit enforces server-side — what title length is allowed, which body types (text / link / image / video) are accepted, whether flair is required, banned domains, banned words, repost windows.

**Returns:** `titleRequired`, `titleBlacklistedRegex`, `titleRegex`, `bodyRequired`, `bodyBlacklistedRegex`, `bodyRegex`, `bodyRestrictionPolicy`, `bodyTextMinLength`, `bodyTextMaxLength`, `linkRequired`, `linkRestrictionPolicy`, `domainBlacklist`, `domainWhitelist`, `flairRequired`, `repostAge`, `linkRepostProtection`, `imageRepostProtection`.

**Use it when:** validating user-supplied post content *before* you submit through any of the posting actors (saves you a failed submission), building a "post-prep" UI, audit-trailing why a community auto-removes posts.

**Example**

**Input**

```json
{
  "endpoint": "post_requirements",
  "post_requirements_subreddit": "AskReddit",
  "credentialSource": "vault",
  "accountName": "main"
}
```

**Output**

```json
{
  "endpoint": "post_requirements",
  "type": "post_requirements",
  "subreddit": "AskReddit",
  "subreddit_id": "t5_2qh1i",
  "success": true,
  "subredditInfoById": {
    "postRequirements": {
      "titleTextMinLength": 12,
      "titleTextMaxLength": null,
      "titleRequiredStrings": [],
      "titleBlacklistedStrings": [],
      "titleRegexes": [],
      "bodyRestrictionPolicy": "NOT_ALLOWED",
      "bodyRequiredStrings": [],
      "bodyBlacklistedStrings": [],
      "bodyRegexes": [],
      "domainBlacklist": [],
      "domainWhitelist": [],
      "isFlairRequired": false,
      "galleryCaptionsRequirement": "NONE",
      "galleryUrlsRequirement": "NONE",
      "galleryMinItems": null,
      "galleryMaxItems": null,
      "guidelinesText": "Welcome to r/AskReddit! This subreddit is for open-ended, discussion based questions..."
    }
  },
  "rate_limit_used": 14,
  "rate_limit_remaining": 1786,
  "rate_limit_reset_at": "2026-05-13T16:50:00Z"
}
```

##### 15. Top Posters — community leaderboard, top posters

Returns Reddit's official "Top Contributors → Posters" leaderboard for the community. Reddit splits these contributors into tiers (gold / silver / bronze plus an honorable-mentions tail).

**Inputs (optional):**

- **Max users** — `1` to `1000` (default `100`). Higher values fetch more contributors and take proportionally longer to run.

**Returns:** `tiers` (top tier blocks with their slot caps and contributors), `users` (flat list of all returned contributors with `username`, `avatar`, `score`, `rank`, `tierName`), `count`, `has_more`.

**Use it when:** finding the most active posters in a community, sourcing power-users for outreach, ranking communities by contributor concentration.

**Example**

**Input**

```json
{
  "endpoint": "leaderboard_posters",
  "leaderboard_posters_subreddit": "wallstreetbets",
  "leaderboard_posters_max_users": 5,
  "credentialSource": "vault",
  "accountName": "main"
}
```

**Output** *(one record per call; `users` is the full ranked list)*

```json
{
  "endpoint": "leaderboard_posters",
  "type": "leaderboard_posters",
  "subreddit": "wallstreetbets",
  "category_id": "top_posters",
  "categoryId": "top_posters",
  "success": true,
  "category": {
    "id": "top_posters",
    "name": "Top Posters",
    "description": "Based on votes counted for the month.",
    "updateInterval": "Rankings updated daily",
    "lastUpdated": "Last updated: 3 hours ago"
  },
  "tiers": [
    { "title": "Top 1% Poster", "icon": "https://i.redd.it/gqujlodqi3yd1.png", "scoreLabel": "Upvotes" }
  ],
  "users": [
    { "rank": "1", "username": "u/[deleted]",      "userId": null,            "isDeleted": true,  "score": "38,882", "scoreChange": "+5,279", "tier": "Top 1% Poster", "icon": "https://i.redd.it/3eg7kwpjdtae1.png" },
    { "rank": "2", "username": "Front-Ad3508",     "userId": "t2_85ob0rev",   "isDeleted": false, "score": "17,225", "scoreChange": "+142",   "tier": "Top 1% Poster", "icon": "https://styles.redditmedia.com/t5_407t9d/styles/profileIcon_snoo...png" },
    { "rank": "3", "username": "Anonymous",        "userId": "t2_2ae29cdzxq", "isDeleted": false, "score": "16,660", "scoreChange": "+11",    "tier": "Top 1% Poster", "icon": null },
    { "rank": "4", "username": "fack-the-suits",   "userId": "t2_2ba50etna8", "isDeleted": false, "score": "12,162", "scoreChange": "+1",     "tier": "Top 1% Poster", "icon": "https://www.redditstatic.com/avatars/defaults/v2/avatar_default_0.png" },
    { "rank": "5", "username": "uncle-ice493",     "userId": "t2_26qjuvtvt9", "isDeleted": false, "score": "11,583", "scoreChange": null,     "tier": "Top 1% Poster", "icon": "https://www.redditstatic.com/avatars/defaults/v2/avatar_default_2.png" }
  ],
  "count": 5,
  "rate_limit_used": 15,
  "rate_limit_remaining": 1785,
  "rate_limit_reset_at": "2026-05-13T16:50:00Z"
}
```

##### 16. Top Commenters — community leaderboard, top commenters

Same payload shape as Top Posters but for the commenters leaderboard.

**Inputs (optional):**

- **Max users** — `1` to `1000` (default `100`).

**Returns:** identical to Top Posters but ranking is by comment activity.

**Use it when:** finding most active commenters for engagement / community-management work, analyzing whether a sub's culture is post-driven or discussion-driven.

**Example**

**Input**

```json
{
  "endpoint": "leaderboard_commenters",
  "leaderboard_commenters_subreddit": "wallstreetbets",
  "leaderboard_commenters_max_users": 5,
  "credentialSource": "vault",
  "accountName": "main"
}
```

**Output** *(one record per call)*

```json
{
  "endpoint": "leaderboard_commenters",
  "type": "leaderboard_commenters",
  "subreddit": "wallstreetbets",
  "category_id": "top_commenters",
  "categoryId": "top_commenters",
  "success": true,
  "category": {
    "id": "top_commenters",
    "name": "Top Commenters",
    "description": "Based on votes counted for the month.",
    "updateInterval": "Rankings updated daily",
    "lastUpdated": "Last updated: 3 hours ago"
  },
  "tiers": [
    { "title": "Top 1% Commenter", "icon": "https://i.redd.it/qwkcwa2zi3yd1.png", "scoreLabel": "Upvotes" }
  ],
  "users": [
    { "rank": "1", "username": "CommentBig3066",      "userId": "t2_acgxqmdk0", "isDeleted": false, "score": "12,301", "scoreChange": "+31",    "tier": "Top 1% Commenter" },
    { "rank": "2", "username": "Top_Category_2526",   "userId": "t2_7p5ja9v4",  "isDeleted": false, "score": "12,129", "scoreChange": "+1,424", "tier": "Top 1% Commenter" },
    { "rank": "3", "username": "chuggin_ballz",       "userId": "t2_23n9kn2qfp","isDeleted": false, "score": "9,415",  "scoreChange": "+127",   "tier": "Top 1% Commenter" },
    { "rank": "4", "username": "Totallycomputername", "userId": "t2_nwes3tft8", "isDeleted": false, "score": "6,261",  "scoreChange": "+1,413", "tier": "Top 1% Commenter" },
    { "rank": "5", "username": "...",                 "userId": "...",          "isDeleted": false, "score": "...",     "scoreChange": "...",    "tier": "Top 1% Commenter" }
  ],
  "count": 5,
  "rate_limit_used": 16,
  "rate_limit_remaining": 1784,
  "rate_limit_reset_at": "2026-05-13T16:50:00Z"
}
```

***

### Credentials

The 5 bearer-required endpoints (Access Eligibility, Settings, Post Requirements, Top Posters, Top Commenters) need a Reddit Token V2 cookie + the proxy that minted it. The first 11 endpoints ignore credentials entirely — leave the section blank for those.

#### Credential lifetime

| Credential | Lifetime | When to refresh |
|---|---|---|
| **Token V2** (`token_v2` cookie) | ~24 hours | Daily — or save it once in the [Reddit Vault](https://apify.com/red_crawler/reddit-vault) and let the vault auto-refresh. |

> **How to extract Token V2 from your browser:** open Reddit in Chrome / Brave / Edge / Firefox, then **DevTools → Application → Cookies → `https://www.reddit.com`**. Filter by `token_v2` and copy the **Value** column.
>
> ![Token V2 cookie in DevTools](https://docs.redcrawler.com/img/credentials/token-v2-cookie.jpg)

You have two options:

#### Option A — Use a saved account (recommended)

1. Run the **Reddit Vault** actor once to store a Reddit account under a name you choose (e.g. `main`, `mod-account`, `burner1`). The vault encrypts the Token V2 + matching proxy and stores them keyed by name.
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. Refresh the vault entry whenever the Token V2 expires (~24 h lifetime).

#### 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.

***

### How to run

1. **Pick an endpoint** in the "What to fetch" dropdown at the top.
2. **Open the matching section** below it and fill the subreddit (and any extra fields, like Wiki page name or leaderboard Max users).
3. **If your endpoint is bearer-required** (12–16), 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. Default subreddit is `AskReddit` and the default endpoint is `Rules`, so the actor runs out of the box.

***

### Output

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

- **ID / Access Info / Type / Channels / Style & Widgets / Status / Wiki / Access Eligibility / Settings / Post Requirements** push **one record** per run.
- **Rules / Flairs / Emojis** push **one record per item** (one row per rule, flair, emoji).
- **Highlights** pushes **one record per highlighted post**.
- **Top Posters / Top Commenters** push **one record** containing the full leaderboard payload (`tiers`, `users`, `count`, `has_more`).

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

***

### Common edge cases

- **Subreddit doesn't exist / banned** — Reddit returns no data; the actor pushes an error record. The Status endpoint surfaces the `isBanned` / `isDeleted` flags explicitly.
- **Private subreddits** — anonymous lookups can't see content of private subs. Access Info will tell you `isContributorRequired = true`; most other public endpoints will be empty. Bearer endpoints work if your account is an approved contributor.
- **Quarantined subreddits** — usually accessible read-only; Access Info / Status surface the `isQuarantined` flag, and Access Eligibility (bearer) tells you if your account has acknowledged the quarantine.
- **Empty wiki pages** — many subreddits have no wiki; the call returns empty content. This is normal.
- **No flairs / emojis / highlights** — some subreddits configure none of these. An empty list is the expected response, not a failure.
- **Bearer expired** — Reddit Token V2 cookies live ~24 h. If you get an `error_kind: bearer_expired` response, refresh the Token V2 in your vault entry (or paste a fresh one in manual mode) and re-run.
- **Settings on a sub you don't moderate** — call still succeeds but returns only the public-visible subset (name, description, language, country, etc.); mod-only fields are absent.
- **Subreddit name with mixed case** — Reddit is case-insensitive on subreddit names, but for cleanliness the actor uses whatever you paste. Both `AskReddit` and `askreddit` work.

***

### Why this actor is fast

- **Speed — 1–3 seconds per call, end-to-end** (single-page leaderboards 2–4 s; full 1000-user leaderboards 10–20 s for the largest communities). 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. Just paste your inputs and run — sign-in (where needed) and run reliability are handled for you behind the scenes.

***

### Status & error reference

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

| Status | Apify message | Meaning | What to do |
|---|---|---|---|
| <img src="https://redcrawler.com/s/apify_pill_succeeded_v11.png" alt="Succeeded" height="40" style="max-width:none" /> | "Actor succeeded with N results in the dataset" | Run finished. Some or zero records pushed. | Open the dataset to view results. |
| <img src="https://redcrawler.com/s/apify_pill_failed_v11.png" alt="Failed" height="40" style="max-width:none" /> | "The Actor process failed…" | Validation error or upstream Reddit fault. | Check the run log. You are NOT charged for failed runs. |
| <img src="https://redcrawler.com/s/apify_pill_timed_out_v11.png" alt="Timed out" height="40" style="max-width:none" /> | "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. |
| <img src="https://redcrawler.com/s/apify_pill_aborted_v11.png" alt="Aborted" height="40" style="max-width:none" /> | "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)*

| Condition | Cause | Result |
|---|---|---|
| Empty result set | Subreddit has no matching data for the chosen endpoint. | Run `SUCCEEDED`, 0 records, no charge. |
| Private / quarantined subreddit | Reddit hides these from anonymous reads. | Run `SUCCEEDED`, those rows skipped. |
| Banned subreddit | Subreddit has been banned by Reddit. | Run `SUCCEEDED`, 0 records for that input. |
| Validation error: missing `subreddit` | Required input not provided. | Run `FAILED` immediately, no charge. |

***

### Pricing

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

| Event | Trigger | Price (per 1,000) |
|-------|---------|--------------------|
| `result` | Each subreddit / rule / flair / emoji / widget / leaderboard record pushed to the dataset | **$1.99** |

***

### Need a different shape of data?

- **[Reddit Feeds V2](https://apify.com/red_crawler/reddit-feeds-v2)** — subreddit feeds (the actual posts, not the metadata)
- **[Reddit Search V2](https://apify.com/red_crawler/reddit-search-v2)** — search Reddit by query (posts, comments, communities, users)
- **[Reddit Scraper V2](https://apify.com/red_crawler/reddit-scrape-v2)** — single-post + comments and 10 other single-record lookups
- **[Reddit Users V2](https://apify.com/red_crawler/reddit-users-v2)** — single-user lookups (profile, trophies, posts, comments)
- **[Reddit Bulk Scrape V2](https://apify.com/red_crawler/reddit-bulk-scrape-v2)** — bulk subreddit lookups (up to 1500 subreddit IDs per run via `subreddit_info_by_ids` mode)
- **[Reddit Vault](https://apify.com/red_crawler/reddit-vault)** — store a Reddit account once and reuse it across actors
- **[Reddit Subreddits](https://apify.com/red_crawler/reddit-subreddits)** — moderation-side V1 companion: create, join / leave, post requirements, list your subscriptions

***

### Support and feedback

Found a bug, want a feature, or hit a Reddit error code we don't translate clearly? Open an issue via the actor's Apify Console feedback link, or reach out at the RedCrawler support channel.

***

*Reddit Subreddits 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.*

# Actor input Schema

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

Choose which subreddit lookup to run.

## `id_subreddit` (type: `string`):

Subreddit name (without r/).

## `rules_subreddit` (type: `string`):

Subreddit name (without r/).

## `access_info_subreddit` (type: `string`):

Subreddit name (without r/).

## `type_subreddit` (type: `string`):

Subreddit name (without r/).

## `channels_subreddit` (type: `string`):

Subreddit name (without r/).

## `flairs_subreddit` (type: `string`):

Subreddit name (without r/).

## `flairs_type` (type: `string`):

Which set of flairs to return for this subreddit. Post flairs are the tags applied to posts; user flairs are the tags shown next to each member's name.

## `emojis_subreddit` (type: `string`):

Subreddit name (without r/).

## `style_subreddit` (type: `string`):

Subreddit name (without r/).

## `highlights_subreddit` (type: `string`):

Subreddit name (without r/).

## `status_subreddit` (type: `string`):

Subreddit name (without r/).

## `access_eligibility_subreddit` (type: `string`):

Subreddit name (without r/).

## `settings_subreddit` (type: `string`):

Subreddit name (without r/).

## `post_requirements_subreddit` (type: `string`):

Subreddit name (without r/).

## `wiki_subreddit` (type: `string`):

Subreddit name (without r/).

## `wiki_page` (type: `string`):

Wiki page name. Common pages: index, config/sidebar, config/description, faq, rules. Use the dropdown for typical pages or enter any custom page slug.

## `leaderboard_posters_subreddit` (type: `string`):

Subreddit name (without r/).

## `leaderboard_posters_max_users` (type: `integer`):

Maximum number of users to fetch (1-1000). Higher values use more API calls.

## `leaderboard_commenters_subreddit` (type: `string`):

Subreddit name (without r/).

## `leaderboard_commenters_max_users` (type: `integer`):

Maximum number of users to fetch (1-1000). Higher values use more API calls.

## `credentialSource` (type: `string`):

Only used when the chosen endpoint requires a bearer (Access Eligibility, Settings, Post Requirements, Top Posters, Top Commenters). 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": "rules",
  "id_subreddit": "Python",
  "rules_subreddit": "Python",
  "access_info_subreddit": "Python",
  "type_subreddit": "Python",
  "channels_subreddit": "Python",
  "flairs_subreddit": "Python",
  "flairs_type": "post_flairs",
  "emojis_subreddit": "Python",
  "style_subreddit": "Python",
  "highlights_subreddit": "Python",
  "status_subreddit": "Python",
  "access_eligibility_subreddit": "Python",
  "settings_subreddit": "Python",
  "post_requirements_subreddit": "Python",
  "wiki_subreddit": "Python",
  "wiki_page": "index",
  "leaderboard_posters_subreddit": "Python",
  "leaderboard_posters_max_users": 100,
  "leaderboard_commenters_subreddit": "Python",
  "leaderboard_commenters_max_users": 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": "rules",
    "id_subreddit": "Python",
    "rules_subreddit": "Python",
    "access_info_subreddit": "Python",
    "type_subreddit": "Python",
    "channels_subreddit": "Python",
    "flairs_subreddit": "Python",
    "flairs_type": "post_flairs",
    "emojis_subreddit": "Python",
    "style_subreddit": "Python",
    "highlights_subreddit": "Python",
    "status_subreddit": "Python",
    "access_eligibility_subreddit": "Python",
    "settings_subreddit": "Python",
    "post_requirements_subreddit": "Python",
    "wiki_subreddit": "Python",
    "leaderboard_posters_subreddit": "Python",
    "leaderboard_commenters_subreddit": "Python"
};

// Run the Actor and wait for it to finish
const run = await client.actor("red_crawler/reddit-subreddits-v2").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": "rules",
    "id_subreddit": "Python",
    "rules_subreddit": "Python",
    "access_info_subreddit": "Python",
    "type_subreddit": "Python",
    "channels_subreddit": "Python",
    "flairs_subreddit": "Python",
    "flairs_type": "post_flairs",
    "emojis_subreddit": "Python",
    "style_subreddit": "Python",
    "highlights_subreddit": "Python",
    "status_subreddit": "Python",
    "access_eligibility_subreddit": "Python",
    "settings_subreddit": "Python",
    "post_requirements_subreddit": "Python",
    "wiki_subreddit": "Python",
    "leaderboard_posters_subreddit": "Python",
    "leaderboard_commenters_subreddit": "Python",
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": "rules",
  "id_subreddit": "Python",
  "rules_subreddit": "Python",
  "access_info_subreddit": "Python",
  "type_subreddit": "Python",
  "channels_subreddit": "Python",
  "flairs_subreddit": "Python",
  "flairs_type": "post_flairs",
  "emojis_subreddit": "Python",
  "style_subreddit": "Python",
  "highlights_subreddit": "Python",
  "status_subreddit": "Python",
  "access_eligibility_subreddit": "Python",
  "settings_subreddit": "Python",
  "post_requirements_subreddit": "Python",
  "wiki_subreddit": "Python",
  "leaderboard_posters_subreddit": "Python",
  "leaderboard_commenters_subreddit": "Python"
}' |
apify call red_crawler/reddit-subreddits-v2 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,red_crawler/reddit-subreddits-v2"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8IMFVXxv2qxjvr0HH/builds/QrsocsPKd4Tp9lp5O/openapi.json
