# Reddit Wiki, Emojis & Widgets V1 (6 endpoints) (`red_crawler/reddit-wiki-emojis-widgets`) Actor

Pull a subreddit's wiki — list pages, fetch any page, browse revision history and discussions — plus grab custom emojis and the sidebar widgets payload. Bring your own Reddit bearer + matching proxy.

- **URL**: https://apify.com/red\_crawler/reddit-wiki-emojis-widgets.md
- **Developed by:** [Red Crawler](https://apify.com/red_crawler) (community)
- **Categories:** Automation, Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## 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 Wiki, Emojis & Widgets

Pull a subreddit's full **wiki, custom emojis, and sidebar widgets**. Six self-contained endpoints. **Bring your own Reddit Token V2 + matching proxy** — Reddit gates these reads behind a logged-in account and binds the Token V2 to the IP that minted it.

Pick the endpoint, fill the matching section, paste your Token V2 + proxy, hit Start.

---

### What you can fetch

Subreddit names accept `python`, `r/python`, or the full subreddit URL — paste whichever you have. Wiki page names accept slashes (e.g. `config/sidebar`, `config/description`) — pass them verbatim.

#### 1. Wiki Pages — list every page

Lists every wiki page in a subreddit's wiki.

**Input:** subreddit name.

**Returns per page:** subreddit, page slug.

**Use it when:** mapping a community's full documentation, building a wiki index, finding pages worth scraping in detail.

**Example**

**Input**

```json
{
  "endpoint": "wiki_pages",
  "pages_subreddit": "python",
  "credentialSource": "vault",
  "accountName": "default"
}
````

**Output** *(one record per page)*

```json
[
  { "endpoint": "wiki_pages", "subreddit": "python", "page": "automoderator-schedule" },
  { "endpoint": "wiki_pages", "subreddit": "python", "page": "config/description" },
  { "endpoint": "wiki_pages", "subreddit": "python", "page": "config/sidebar" }
]
```

#### 2. Wiki Page — content of one page

The full markdown content + metadata of a single wiki page.

**Inputs:**

- **Subreddit** — community name.
- **Page** — wiki page slug. Slashes allowed (e.g. `config/sidebar`). Default: `index`.

**Returns:** subreddit, page slug, full markdown content (`content_md`), revising user, revision date, may-revise flag (whether your Token V2's account can edit), and any other metadata Reddit returns for the page.

**Use it when:** capturing community rules, FAQ docs, megathread bodies, side-by-side wiki diffs, pulling full text into a knowledge base or chatbot.

**Example**

**Input**

```json
{
  "endpoint": "wiki_page",
  "page_subreddit": "python",
  "page_name": "index",
  "credentialSource": "vault",
  "accountName": "default"
}
```

**Output** *(one record — `content_md` truncated for readability; the full record contains the entire wiki markdown)*

```json
{
  "endpoint": "wiki_page",
  "subreddit": "python",
  "page": "index",
  "content_md": "## Welcome to r/Python\nSubreddit dedicated to news about the dynamic, interpreted, interactive, object-oriented, extensible programming language Python…",
  "may_revise": false,
  "reason": "Added link to flair description and flair filtering tutorial",
  "revision_date": 1603402766,
  "revision_id": "0eb54803-14af-11eb-8903-0e3e3e317287",
  "revision_by": {
    "id": "9iikd",
    "name": "IAmKindOfCreative",
    "icon_img": "https://styles.redditmedia.com/t5_1wkqsm/styles/profileIcon_…"
  }
}
```

#### 3. Wiki Page Revisions — revision history

Revision history for a single wiki page.

**Inputs:**

- **Subreddit**.
- **Page** — wiki page slug (default `index`).
- **Limit** — 1 to 100 (default 25).

**Returns per revision:** subreddit, page, revision ID, timestamp, page name, reason (the editor's note), revision-hidden flag, author.

**Use it when:** auditing changes, tracking mod activity, monitoring rule rewrites, compliance / change logs.

**Example**

**Input**

```json
{
  "endpoint": "wiki_revisions",
  "revisions_subreddit": "python",
  "revisions_page": "index",
  "revisions_limit": 5,
  "credentialSource": "vault",
  "accountName": "default"
}
```

**Output** *(one record per revision — `author` shortened for readability)*

```json
[
  {
    "endpoint": "wiki_revisions",
    "subreddit": "python",
    "page": "index",
    "id": "0eb54803-14af-11eb-8903-0e3e3e317287",
    "timestamp": 1603402766,
    "reason": "Added link to flair description and flair filtering tutorial",
    "revision_hidden": false,
    "author": { "id": "9iikd", "name": "IAmKindOfCreative" }
  },
  {
    "endpoint": "wiki_revisions",
    "subreddit": "python",
    "page": "index",
    "id": "8be9bb2c-9d34-11ea-8a04-0e3a6f8a9eb6",
    "timestamp": 1590169200,
    "reason": "Minor cleanup of intro paragraph",
    "revision_hidden": false,
    "author": { "id": "9iikd", "name": "IAmKindOfCreative" }
  }
]
```

#### 4. Wiki Discussions — discussion threads about one page

Reddit threads referencing a specific wiki page (the public discussions tab on the wiki).

**Inputs:**

- **Subreddit**.
- **Page** — wiki page slug (default `index`).
- **Limit** — 1 to 100 (default 25).

**Returns per thread:** subreddit, page, thread ID, fullname, title, author, score, comment count, created timestamp, permalink, URL, body / selftext.

**Use it when:** tracking conversation around community docs, finding feedback on rule changes, finding pinned discussion megathreads.

**Example**

**Input**

```json
{
  "endpoint": "wiki_discussions",
  "discussions_subreddit": "python",
  "discussions_page": "index",
  "discussions_limit": 5,
  "credentialSource": "vault",
  "accountName": "default"
}
```

**Output** *(typical record when discussions exist — most wiki pages return zero discussion threads, in which case the run succeeds with no records pushed)*

```json
{
  "endpoint": "wiki_discussions",
  "subreddit": "python",
  "page": "index",
  "id": "t3_1sx9abc",
  "name": "t3_1sx9abc",
  "title": "Feedback on the new wiki index layout",
  "author": "examplemod",
  "subreddit_name_prefixed": "r/python",
  "score": 42,
  "num_comments": 12,
  "created_utc": 1777800000,
  "permalink": "/r/Python/comments/1sx9abc/feedback_on_the_new_wiki_index_layout/",
  "url": "https://www.reddit.com/r/Python/comments/1sx9abc/feedback_on_the_new_wiki_index_layout/",
  "selftext": "We've updated the wiki — let us know what you think..."
}
```

#### 5. All Emojis — custom emojis

A subreddit's full set of custom emojis.

**Input:** subreddit name.

**Returns per emoji:** subreddit, emoji name, image URL, user-flair-allowed flag, post-flair-allowed flag, mod-flair-only flag, created-by user.

**Use it when:** branding capture, mirroring a community's identity, building flair pickers in your own UI, archiving custom emoji sets.

**Example**

**Input**

```json
{
  "endpoint": "all_emojis",
  "emojis_subreddit": "python",
  "credentialSource": "vault",
  "accountName": "default"
}
```

**Output** *(one record per emoji)*

```json
[
  {
    "endpoint": "all_emojis",
    "subreddit": "python",
    "name": "cake",
    "url": "https://emoji.redditmedia.com/46kel8lf1guz_t5_3nqvj/cake",
    "user_flair_allowed": true,
    "post_flair_allowed": true,
    "mod_flair_only": true,
    "created_by": ""
  },
  {
    "endpoint": "all_emojis",
    "subreddit": "python",
    "name": "cat_blep",
    "url": "https://emoji.redditmedia.com/p9sxc1zh1guz_t5_3nqvj/cat_blep",
    "user_flair_allowed": true,
    "post_flair_allowed": true,
    "mod_flair_only": true,
    "created_by": ""
  }
]
```

#### 6. Get Widgets — sidebar widgets

The sidebar widgets payload — one record per widget (rules, mod list, calendar, custom widget, image widget, button widget, etc.).

**Input:** subreddit name.

**Returns per widget:** subreddit, widget ID, kind (`rules` / `moderators` / `calendar` / `custom` / `image` / `button` / etc.), short name, styles object, plus the widget-specific payload (e.g. mod list, calendar entries, custom HTML).

**Use it when:** theme audits, sidebar mirroring, capturing a community's full visual identity, building branded clones.

**Example**

**Input**

```json
{
  "endpoint": "get_widgets",
  "widgets_subreddit": "python",
  "credentialSource": "vault",
  "accountName": "default"
}
```

**Output** *(one record per widget — calendar `data` array shortened to one event for readability)*

```json
[
  {
    "endpoint": "get_widgets",
    "subreddit": "python",
    "id": "widget_id-card-2qh0y",
    "kind": "id-card",
    "shortName": "Community Details",
    "styles": { "headerColor": "", "backgroundColor": "" },
    "description": "The largest Python community for Reddit! Stay up to date with the latest news, packages, and meta information…",
    "subscribersText": "Pythonistas",
    "currentlyViewingCount": 0,
    "subscribersCount": 1478337,
    "currentlyViewingText": "Online"
  },
  {
    "endpoint": "get_widgets",
    "subreddit": "python",
    "id": "widget_1bysnqcnesc7h",
    "kind": "calendar",
    "shortName": "Events",
    "styles": { "headerColor": "", "backgroundColor": "" },
    "data": [
      {
        "title": "PyCon US 2026",
        "location": "Long Beach, CA, USA",
        "allDay": true,
        "startTime": 1778630400,
        "endTime": 1779235200
      }
    ]
  }
]
```

***

### Reddit user auth — required for every endpoint

Every endpoint in this actor requires:

- **Token V2** (`token_v2` cookie) — your personal Reddit access token.
- **Proxy** — the proxy you used to mint the Token V2. Reddit binds the Token V2 to the IP that created it, so the proxy IP **must match**.

**Why:** Reddit gates wiki / emoji / widget reads behind a logged-in account for many subreddits. Anonymous calls return `USER_REQUIRED` or `403`.

#### Credential lifetimes

| Credential | Lifetime | When to refresh |
|---|---|---|
| **Token V2** (`token_v2` cookie) | ~24 hours | Daily — or save a Reddit Session in the [Reddit Vault](https://apify.com/red_crawler/reddit-vault) and let it auto-refresh |
| **Reddit Session** (`reddit_session` cookie) | ~180 days | Roughly twice a year, or when a run reports `unauthorized` |

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

**Proxy formats accepted:**

- `ip:port:user:pass`
- `http://user:pass@ip:port`
- `socks5://ip:port`

If the proxy IP doesn't match the Token V2's mint IP, Reddit returns 401 / 403 and the run fails.

Both fields are stored as **secrets** by Apify and not echoed back in logs.

***

### How to run

1. **Pick an endpoint** in the "What to fetch" dropdown.
2. **Open the matching section** and fill its fields. Each section is independent — fields outside your chosen section are ignored.
3. **Scroll to the Reddit user auth section** and paste your Token V2 + proxy (or pick a saved account from the [Reddit Vault](https://apify.com/red_crawler/reddit-vault)).
4. **Click Start.**

Default subreddit is `python` so the actor runs out of the box (once your Token V2 + proxy are filled in).

***

### Output

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

- **Wiki Page / All Emojis / Get Widgets** push **one record per page / emoji / widget**.
- **Wiki Pages** pushes one record per page slug.
- **Wiki Page Revisions / Wiki Discussions** push up to your limit records.

Every record is tagged with `endpoint` so you can tell rows apart at a glance. The most useful columns are placed first so the dataset Table view is readable without scrolling.

***

### Common edge cases

- **Token V2 + proxy mismatch** — Reddit binds the Token V2 to the IP it was minted on. If the proxy IP doesn't match, Reddit returns 401 / 403.
- **Mod-restricted wikis** — return Reddit's `WIKI_DISABLED` / `403` rather than a record. Use a public-wiki community for best results, or use a Token V2 from an account that holds mod rights for the target community.
- **Custom emojis on some subs require login** — when Reddit returns `USER_REQUIRED`, the actor pushes a single note record explaining the response (rather than failing the whole run).
- **Slashes in page names** — `config/sidebar`, `config/description`, etc. are passed through verbatim. No special escaping needed.
- **Suspended account / revoked Token V2** — Reddit returns 401 immediately. Refresh your Token V2 (or save a Reddit Session in the vault for auto-refresh) and rerun.
- **Empty results** — return zero records. The actor reports an empty result rather than failing.

***

### 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. Rare for this actor at default 300 s. | Re-run; consider narrowing inputs or lowering `limit`. |
| <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 | Wiki / emoji / widget set is empty for that subreddit. | Run `SUCCEEDED`, 0 records, no charge. |
| `WIKI_DISABLED` / 403 | Wiki is mod-restricted or disabled. | Run `SUCCEEDED`, note record explains the response. |
| `USER_REQUIRED` | Subreddit requires login to view custom emojis. | Run `SUCCEEDED`, note record explains the response. |
| 401 / Token V2 + proxy mismatch | Reddit binds the Token V2 to its mint IP; proxy IP differs. | Run `FAILED`. Refresh Token V2 from the same IP. |
| 401 / suspended or revoked Token V2 | Account suspended, password changed, or token revoked. | Run `FAILED`. Mint a new Token V2 (or use the vault session). |
| Validation error: missing `subreddit` | Required input not provided. | Run `FAILED` immediately, no charge. |

***

### Why this actor is fast

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

***

### Pricing

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

| Event | Trigger | Price (per 1,000) |
|-------|---------|--------------------|
| `result` | Each wiki page / emoji / widget / revision / discussion record pushed | **$1.99** |

***

### Need a different shape of data?

- **[Reddit Subreddits](https://apify.com/red_crawler/reddit-subreddits)** — about / rules / sidebar / popular-feed / autocomplete — anonymous, no Token V2 needed
- **[Reddit Scraper V2](https://apify.com/red_crawler/reddit-scrape-v2)** — 11 single-record reads for posts, comments, profiles, communities
- **[Reddit Bulk Scrape V2](https://apify.com/red_crawler/reddit-bulk-scrape-v2)** — paste up to 1500 IDs / names / URLs in a single run
- **[Reddit Search V2](https://apify.com/red_crawler/reddit-search-v2)** — search posts / comments / subreddits / users with full filters
- **[Reddit Users V2](https://apify.com/red_crawler/reddit-users-v2)** — single-user lookups (profile, trophies, posts, comments)
- **[Reddit Posts V1](https://apify.com/red_crawler/reddit-posts)** — front-page feed, crosspost duplicates, pinned posts
- **[Reddit Vault](https://apify.com/red_crawler/reddit-vault)** — save Reddit accounts once, call them by name from this actor (free)

***

### 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 Wiki, Emojis & Widgets 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 lookup to run.

## `pages_subreddit` (type: `string`):

Subreddit name (e.g. python). Used by: Wiki Pages.

## `page_subreddit` (type: `string`):

Subreddit name (e.g. python). Used by: Wiki Page.

## `page_name` (type: `string`):

Wiki page name. Slashes are allowed (e.g. config/sidebar). Default: index.

## `revisions_subreddit` (type: `string`):

Subreddit name (e.g. python). Used by: Wiki Page Revisions.

## `revisions_page` (type: `string`):

Wiki page name (e.g. index, config/sidebar).

## `revisions_limit` (type: `integer`):

Max revisions (1–100). Used by: Wiki Page Revisions.

## `discussions_subreddit` (type: `string`):

Subreddit name (e.g. python). Used by: Wiki Discussions.

## `discussions_page` (type: `string`):

Wiki page name (e.g. index, config/sidebar).

## `discussions_limit` (type: `integer`):

Max discussion threads (1–100). Used by: Wiki Discussions.

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

Subreddit name (e.g. AskReddit). Used by: All Emojis.

## `widgets_subreddit` (type: `string`):

Subreddit name (e.g. AskReddit). Used by: Get Widgets.

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

Pick which authentication path this run uses. **Use saved account (vault)** loads your stored Token V2 + proxy from the **reddit-vault** actor (auto-refreshed if you saved a Reddit Session) — only the 'Saved account name' field below is used; Token V2 + proxy are ignored. **Paste Token V2 + proxy** uses the values you paste below — the 'Saved account name' field is ignored.

## `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`):

Your own proxy used to mint the Token V2. Formats: ip:port:user:pass, http://user:pass@ip:port, socks5://ip:port. MUST be the SAME IP the Token V2 was minted on or Reddit will 401/403. Ignored when 'Credential source' = vault.

## Actor input object example

```json
{
  "endpoint": "wiki_pages",
  "pages_subreddit": "python",
  "page_subreddit": "python",
  "page_name": "index",
  "revisions_subreddit": "python",
  "revisions_page": "index",
  "revisions_limit": 25,
  "discussions_subreddit": "python",
  "discussions_page": "index",
  "discussions_limit": 25,
  "emojis_subreddit": "AskReddit",
  "widgets_subreddit": "AskReddit",
  "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": "wiki_pages",
    "pages_subreddit": "python",
    "page_subreddit": "python",
    "page_name": "index",
    "revisions_subreddit": "python",
    "revisions_page": "index",
    "discussions_subreddit": "python",
    "discussions_page": "index",
    "emojis_subreddit": "AskReddit",
    "widgets_subreddit": "AskReddit"
};

// Run the Actor and wait for it to finish
const run = await client.actor("red_crawler/reddit-wiki-emojis-widgets").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": "wiki_pages",
    "pages_subreddit": "python",
    "page_subreddit": "python",
    "page_name": "index",
    "revisions_subreddit": "python",
    "revisions_page": "index",
    "discussions_subreddit": "python",
    "discussions_page": "index",
    "emojis_subreddit": "AskReddit",
    "widgets_subreddit": "AskReddit",
}

# Run the Actor and wait for it to finish
run = client.actor("red_crawler/reddit-wiki-emojis-widgets").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": "wiki_pages",
  "pages_subreddit": "python",
  "page_subreddit": "python",
  "page_name": "index",
  "revisions_subreddit": "python",
  "revisions_page": "index",
  "discussions_subreddit": "python",
  "discussions_page": "index",
  "emojis_subreddit": "AskReddit",
  "widgets_subreddit": "AskReddit"
}' |
apify call red_crawler/reddit-wiki-emojis-widgets --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Reddit Wiki, Emojis & Widgets V1 (6 endpoints)",
        "description": "Pull a subreddit's wiki — list pages, fetch any page, browse revision history and discussions — plus grab custom emojis and the sidebar widgets payload. Bring your own Reddit bearer + matching proxy.",
        "version": "0.16",
        "x-build-id": "Dgv4KZaMz23gZ2oBa"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/red_crawler~reddit-wiki-emojis-widgets/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-red_crawler-reddit-wiki-emojis-widgets",
                "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-wiki-emojis-widgets/runs": {
            "post": {
                "operationId": "runs-sync-red_crawler-reddit-wiki-emojis-widgets",
                "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-wiki-emojis-widgets/run-sync": {
            "post": {
                "operationId": "run-sync-red_crawler-reddit-wiki-emojis-widgets",
                "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",
                    "credentialSource"
                ],
                "properties": {
                    "endpoint": {
                        "title": "What to fetch",
                        "enum": [
                            "wiki_pages",
                            "wiki_page",
                            "wiki_revisions",
                            "wiki_discussions",
                            "all_emojis",
                            "get_widgets"
                        ],
                        "type": "string",
                        "description": "Choose which lookup to run.",
                        "default": "wiki_pages"
                    },
                    "pages_subreddit": {
                        "title": "Subreddit",
                        "type": "string",
                        "description": "Subreddit name (e.g. python). Used by: Wiki Pages."
                    },
                    "page_subreddit": {
                        "title": "Subreddit",
                        "type": "string",
                        "description": "Subreddit name (e.g. python). Used by: Wiki Page."
                    },
                    "page_name": {
                        "title": "Page",
                        "type": "string",
                        "description": "Wiki page name. Slashes are allowed (e.g. config/sidebar). Default: index."
                    },
                    "revisions_subreddit": {
                        "title": "Subreddit",
                        "type": "string",
                        "description": "Subreddit name (e.g. python). Used by: Wiki Page Revisions."
                    },
                    "revisions_page": {
                        "title": "Page",
                        "type": "string",
                        "description": "Wiki page name (e.g. index, config/sidebar)."
                    },
                    "revisions_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Max revisions (1–100). Used by: Wiki Page Revisions.",
                        "default": 25
                    },
                    "discussions_subreddit": {
                        "title": "Subreddit",
                        "type": "string",
                        "description": "Subreddit name (e.g. python). Used by: Wiki Discussions."
                    },
                    "discussions_page": {
                        "title": "Page",
                        "type": "string",
                        "description": "Wiki page name (e.g. index, config/sidebar)."
                    },
                    "discussions_limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Max discussion threads (1–100). Used by: Wiki Discussions.",
                        "default": 25
                    },
                    "emojis_subreddit": {
                        "title": "Subreddit",
                        "type": "string",
                        "description": "Subreddit name (e.g. AskReddit). Used by: All Emojis."
                    },
                    "widgets_subreddit": {
                        "title": "Subreddit",
                        "type": "string",
                        "description": "Subreddit name (e.g. AskReddit). Used by: Get Widgets."
                    },
                    "credentialSource": {
                        "title": "Credential source",
                        "enum": [
                            "vault",
                            "manual"
                        ],
                        "type": "string",
                        "description": "Pick which authentication path this run uses. **Use saved account (vault)** loads your stored Token V2 + proxy from the **reddit-vault** actor (auto-refreshed if you saved a Reddit Session) — only the 'Saved account name' field below is used; Token V2 + proxy are ignored. **Paste Token V2 + proxy** uses the values you paste below — the 'Saved account name' field is ignored.",
                        "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": "Your proxy (used when source = manual)",
                        "type": "string",
                        "description": "Your own proxy used to mint the Token V2. Formats: ip:port:user:pass, http://user:pass@ip:port, socks5://ip:port. MUST be the SAME IP the Token V2 was minted on or Reddit will 401/403. 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
