<!-- BusyBot node reference — https://busybot.net/tools/reddit/ -->

> Node: Reddit (`reddit`) · Action · v1
> Category: Communication · Credentials: Reddit OAuth2 (`redditOAuth2`)
> Updated: 2026-08-16

# Reddit

> Manage posts, comments, profiles, subreddits, and user data on Reddit.

## Overview

Reddit is a social news and discussion platform. This tool provides operations for posts (create, delete, get, getAll, search), post comments (create, delete, getAll, reply), profile details (identity, friends, blocked users, karma, preferences, saved, trophies), subreddit information (get about/rules, getAll/search/trending), and user data (about, comments, gilded, overview, submitted). Authenticated operations use OAuth2 via oauth.reddit.com; public operations (subreddit, user) use www.reddit.com.

**Category:** Communication  
**Tool Name:** `reddit`  
**Version:** 1

**Appearance:** Icon: `si-reddit` | Color: `#FF4500`

## Node Type

**Action** — processes input items and produces output

This node is not listed in the node panel — it is placed as part of another node's pattern.

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Reddit OAuth2** credentials.
See the [Credentials Guide](https://busybot.net/credentials/reddit-oauth2/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Post | `post` |
| Post Comment | `postComment` |
| Profile | `profile` |
| Subreddit | `subreddit` |
| User | `user` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Post: Create | `create` | Submit a post to a subreddit |
| Post: Delete | `delete` | Delete a post from a subreddit |
| Post: Get | `get` | Get a post from a subreddit |
| Post: Get Many | `getAll` | Get many posts from a subreddit |
| Post: Search | `search` | Search posts in a subreddit or in all of Reddit |
| Post Comment: Create | `create` | Create a top-level comment in a post |
| Post Comment: Delete | `delete` | Remove a comment from a post |
| Post Comment: Get Many | `getAll` | Retrieve many comments in a post |
| Post Comment: Reply | `reply` | Write a reply to a comment in a post |
| Profile: Get | `get` | Get details about the authenticated user profile |
| Subreddit: Get | `get` | Retrieve background information about a subreddit |
| Subreddit: Get Many | `getAll` | Retrieve information about many subreddits |
| User: Get | `get` | Get information about a user |

### Parameters

#### Post: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Subreddit | `string` | Yes | — | Subreddit to create the post in (without r/ prefix). Supports expressions. |
| Kind | `options` | No | `self` | The kind of post to create. |
| | | | | Options: `self` (Text Post), `link` (Link Post), `image` (Image Post) |
| Title | `string` | Yes | — | Title of the post, up to 300 characters long. Supports expressions. |
| Text | `string` | Yes | — | Text of the post. Markdown supported. _(shown when Kind is `self`)_ |
| URL | `string` | Yes | — | URL of the post. _(shown when Kind is `link`, `image`)_ |
| Resubmit | `boolean` | No | `false` | Whether the URL will be posted even if it was already posted to the subreddit before. _(shown when Kind is `link`, `image`)_ |

#### Post: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Post ID | `string` | Yes | — | ID of the post to delete. Found in the post URL: /r/[subreddit_name]/comments/[post_id]/[post_title]. |

#### Post: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Subreddit | `string` | Yes | — | The name of subreddit to retrieve the post from. |
| Post ID | `string` | Yes | — | ID of the post to retrieve. Found in the post URL: /r/[subreddit_name]/comments/[post_id]/[post_title]. |

#### Post: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Subreddit | `string` | Yes | — | The name of subreddit to retrieve the posts from. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Optional filter narrowing which listing is read. |
| — Category | `options` | No | `top` | Category of the posts to retrieve. |
| | | | | Options: `top`, `hot`, `new`, `rising` |

#### Post: Search

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Location | `options` | No | `subreddit` | Location where to search for posts. |
| | | | | Options: `allReddit` (search all of Reddit), `subreddit` (search one specific subreddit) |
| Subreddit | `string` | Yes | — | The name of subreddit to search in. _(shown when Location is `subreddit`)_ |
| Keyword | `string` | Yes | — | The keyword for the search. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Additional Fields | `collection` | No | `{}` | Optional settings applied to the search. |
| — Sort | `options` | No | `relevance` | The category to sort results by. |
| | | | | Options: `comments`, `hot`, `new`, `relevance`, `top` |

#### Post Comment: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Post ID | `string` | Yes | — | ID of the post to write the comment to. Found in the post URL: /r/[subreddit_name]/comments/[post_id]/[post_title]. |
| Comment Text | `string` | Yes | — | Text of the comment. Markdown supported. Supports expressions. |

#### Post Comment: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Comment ID | `string` | Yes | — | ID of the comment to remove. Found in the comment URL: /r/[subreddit_name]/comments/[post_id]/[post_title]/[comment_id]. |

#### Post Comment: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Subreddit | `string` | Yes | — | The name of subreddit where the post is. |
| Post ID | `string` | Yes | — | ID of the post to get all comments from. Found in the post URL: /r/[subreddit_name]/comments/[post_id]/[post_title]. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Post Comment: Reply

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Comment ID | `string` | Yes | — | ID of the comment to reply to. Found in the comment URL: www.reddit.com/r/[subreddit_name]/comments/[post_id]/[post_title]/[comment_id]. |
| Reply Text | `string` | Yes | — | Text of the reply. Markdown supported. Supports expressions. |

#### Profile: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Details | `options` | Yes | `identity` | Details of the authenticated account to retrieve. |
| | | | | Options: `blockedUsers`, `friends`, `identity`, `karma` (subreddit karma), `prefs` (Preferences), `saved` (the account's saved posts), `trophies` |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. _(shown when Details is `saved`)_ |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Details is `saved` and Return All is `false`)_ |

#### Subreddit: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Content | `options` | Yes | `about` | Subreddit content to retrieve. |
| | | | | Options: `about`, `rules` |
| Subreddit | `string` | Yes | — | The name of subreddit to retrieve the content from. |

#### Subreddit: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Optional filter choosing which set of subreddits is returned. |
| — Keyword | `string` | No | — | The keyword for the subreddit search. |
| — Trending | `boolean` | No | `false` | Whether to fetch currently trending subreddits in all of Reddit. |

#### User: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Username | `string` | Yes | — | Reddit username of the user to retrieve. Supports expressions. |
| Details | `options` | Yes | `about` | Details of the user to retrieve. |
| | | | | Options: `about`, `comments`, `gilded`, `overview`, `submitted` |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. _(shown when Details is `comments`, `gilded`, `overview`, `submitted`)_ |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Details is `comments`, `gilded`, `overview`, `submitted` and Return All is `false`)_ |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Reddit Account | `credential` | No | — | Connect your Reddit account via OAuth2. |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. Reddit rate limits to 60 requests/minute for OAuth2. |

## Output Data

The Reddit response is merged onto the item JSON at the top level, so downstream nodes read its fields directly (`{{ $json.id }}`). The rest of the incoming item JSON passes through unchanged and binary data is forwarded. Operations that return a single record produce one output item per input item; operations that return a listing **fan out**, emitting one output item per record — and when the listing comes back empty, that input item produces no output item at all.

| Operation | What lands on the output item |
|-----------|-------------------------------|
| `post` / `create` | One item carrying the submitted post's data. |
| `post` / `delete` | One item carrying `success: true`. |
| `post` / `get` | One item carrying the post record. |
| `post` / `getAll` | Fans out — one item per post in the listing. |
| `post` / `search` | Fans out — one item per matching post. |
| `postComment` / `create`, `reply` | One item carrying the new comment's data. |
| `postComment` / `delete` | One item carrying `success: true`. |
| `postComment` / `getAll` | Fans out — one item per comment on the post. |
| `profile` / `get` | Depends on Details: `identity` and `prefs` produce one item; `friends`, `blockedUsers`, `karma`, `trophies` and `saved` fan out one item per record. |
| `subreddit` / `get` | `about` produces one item with the subreddit record; `rules` fans out one item per rule in the returned list. |
| `subreddit` / `getAll` | Fans out — one item per subreddit. With Trending on, the only field added is `name`. |
| `user` / `get` | `about` produces one item with the user record; `comments`, `gilded`, `overview` and `submitted` fan out one item per record. |

Failed items are routed to the `Error` port in `errorPort` mode, carrying an `_error` object.

## Usage Examples

- Create a text post in r/test
- Search Reddit for posts about Node.js
- Get all comments on a specific post
- Reply to a comment on Reddit
- Get my Reddit profile identity
- List trending subreddits
- Get information about a Reddit user

## Example Configuration

Submit a markdown text post to a subreddit:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "post",
    "operation": "create",
    "subreddit": "test",
    "kind": "self",
    "title": "{{ $json.title }}",
    "text": "This is the content of my text post with **markdown** support!"
  }
}
```

Submit a link post, allowing the same URL to be posted again:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "post",
    "operation": "create",
    "subreddit": "technology",
    "kind": "link",
    "title": "{{ $json.headline }}",
    "url": "{{ $json.url }}",
    "resubmit": true
  }
}
```

Read the top posts of a subreddit, one output item per post:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "post",
    "operation": "getAll",
    "subreddit": "programming",
    "returnAll": false,
    "limit": 10,
    "filters": {
      "category": "top"
    }
  }
}
```

Search one subreddit for a keyword and sort the results by newest:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "post",
    "operation": "search",
    "location": "subreddit",
    "subreddit": "MachineLearning",
    "keyword": "{{ $json.keyword }}",
    "returnAll": false,
    "limit": 20,
    "additionalFields": {
      "sort": "new"
    }
  }
}
```

Add a top-level comment to a post:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "postComment",
    "operation": "create",
    "postId": "{{ $json.postId }}",
    "commentText": "Great post! Thanks for sharing this **interesting** content."
  }
}
```

Reply to an existing comment:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "postComment",
    "operation": "reply",
    "commentId": "{{ $json.commentId }}",
    "replyText": "I completely agree with your point about this topic."
  }
}
```

Retrieve the signed-in account's saved posts:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "profile",
    "operation": "get",
    "details": "saved",
    "returnAll": false,
    "limit": 50
  }
}
```

Get a subreddit's background information:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "subreddit",
    "operation": "get",
    "subreddit": "programming",
    "content": "about"
  }
}
```

List the subreddits trending right now:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "subreddit",
    "operation": "getAll",
    "returnAll": false,
    "limit": 25,
    "filters": {
      "trending": true
    }
  }
}
```

Pull a user's recent comments:

```json
{
  "type": "reddit",
  "parameters": {
    "resource": "user",
    "operation": "get",
    "username": "{{ $json.username }}",
    "details": "comments",
    "returnAll": false,
    "limit": 100
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Reddit tool for managing posts, comments, profiles, subreddits, and user data via the Reddit API.

### Notes

- **Post, Post Comment and Profile need the connected account.** Those three resources act as the authenticated Reddit user; Subreddit and User read public data.
- **Trending wins over Keyword.** In Subreddit: Get Many, turning Trending on ignores any Keyword you also set. Leave both off to list subreddits generally.
- **Empty listings emit nothing.** An input item whose listing returns no records produces no output item, so a downstream node may receive fewer items than it was sent — or none.
- **Friends and Karma raise an error when empty.** Profile: Get with Details set to `friends` or `karma` reports a failure rather than an empty result when the account has nothing to return, so it lands on the `Error` port in `errorPort` mode.
- **Keep Max Concurrency modest.** Reddit rate limits OAuth2 traffic, and the node's default of 5 concurrent items is chosen to stay under it.