# Discord Forum Channel Exporter (`charlieakan/discord-forum-channel-exporter`) Actor

Export Discord forum posts, tags, authors, reply counts, timestamps, and thread URLs from servers you manage.

- **URL**: https://apify.com/charlieakan/discord-forum-channel-exporter.md
- **Developed by:** [CharlieAKAN](https://apify.com/charlieakan) (community)
- **Categories:** Social media, Automation, Other
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / completed discord forum export

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Discord Forum Channel Exporter

Export Discord forum posts, tags, authors, reply counts, timestamps, and thread URLs from servers you own or manage.

This Actor is for community owners, moderators, support teams, creators, game servers, and product communities that use Discord forum channels and need a clean CSV/API export.

### What it exports

The Actor can export forum/media channel thread metadata including:

- forum channel name and ID
- thread/post title
- thread URL
- applied forum tags
- owner ID
- starter author ID/username when first-post export is enabled
- message/reply counts
- total messages sent when Discord provides it
- created timestamp
- last message timestamp
- archived/locked status
- auto-archive duration

By default, the Actor exports **thread metadata only**. First post content is optional and disabled by default.

### Important permission note

This Actor is for Discord servers you own or manage. It requires your own Discord bot token and only accesses channels your bot has permission to read.

It does **not** bypass Discord permissions, use user tokens, scrape private servers, or extract members from servers you do not control.

### Input

```json
{
  "botToken": "YOUR_DISCORD_BOT_TOKEN",
  "guildId": "123456789012345678",
  "forumChannelIds": ["234567890123456789"],
  "includeArchivedThreads": true,
  "includePrivateArchivedThreads": false,
  "includeFirstPostContent": false,
  "maxThreadsPerChannel": 500
}
````

#### Input fields

- `botToken` — Discord bot token. Store this as a secret.
- `guildId` — Discord server ID.
- `forumChannelIds` — optional list of forum/media channel IDs. If omitted, the Actor exports all visible forum/media channels.
- `includeArchivedThreads` — include public archived threads.
- `includePrivateArchivedThreads` — try private archived threads if your bot has permission.
- `includeFirstPostContent` — export first post text. Disabled by default for privacy.
- `maxThreadsPerChannel` — cap per channel to control runtime and output size.

### Output

The dataset includes CSV-friendly rows:

- `summary` — start/final summary rows
- `forum_channel` — one row per exported forum/media channel
- `thread` — one row per forum thread/post
- `channel_error` — non-fatal per-channel permission/API issues

Example thread row:

```json
{
  "recordType": "thread",
  "guildId": "123456789012345678",
  "forumChannelId": "234567890123456789",
  "forumChannelName": "support",
  "threadId": "345678901234567890",
  "threadTitle": "How do I connect Shopify?",
  "threadUrl": "https://discord.com/channels/123456789012345678/234567890123456789/345678901234567890",
  "appliedTagNames": ["question", "shopify"],
  "messageCount": 12,
  "createdAt": "2026-07-04T00:00:00.000Z",
  "archived": false,
  "locked": false
}
```

### Bot setup

Your Discord bot should be installed in the server and have permission to:

- view the selected forum channels
- read message history

If you enable first post content export, the bot also needs access to message content for those channels.

### Common uses

- export support forum posts for auditing
- archive bug report or feature request threads
- analyze which tags are being used
- find stale unanswered forum posts
- move Discord forum data into Sheets, Airtable, Notion, or a data warehouse

# Actor input Schema

## `botToken` (type: `string`):

Bot token for a Discord bot installed in a server you own or manage. The bot must have permission to view the selected forum channels.

## `guildId` (type: `string`):

The Discord server ID to export forum channels from.

## `forumChannelIds` (type: `array`):

Optional list of Discord forum channel IDs. If empty, the Actor exports all forum/media channels the bot can see.

## `includeArchivedThreads` (type: `boolean`):

Include public archived forum threads in addition to active threads.

## `includePrivateArchivedThreads` (type: `boolean`):

Try to include private archived threads. Requires the bot to have the right Discord permissions.

## `includeFirstPostContent` (type: `boolean`):

Include the first post text for each forum thread. Leave off unless you have consent to export message content.

## `maxThreadsPerChannel` (type: `integer`):

Maximum number of threads to export per forum channel.

## Actor input object example

```json
{
  "includeArchivedThreads": true,
  "includePrivateArchivedThreads": false,
  "includeFirstPostContent": false,
  "maxThreadsPerChannel": 500
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("charlieakan/discord-forum-channel-exporter").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("charlieakan/discord-forum-channel-exporter").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 '{}' |
apify call charlieakan/discord-forum-channel-exporter --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=charlieakan/discord-forum-channel-exporter",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Discord Forum Channel Exporter",
        "description": "Export Discord forum posts, tags, authors, reply counts, timestamps, and thread URLs from servers you manage.",
        "version": "0.1",
        "x-build-id": "NP4TUQyYuibUHTv3Y"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/charlieakan~discord-forum-channel-exporter/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-charlieakan-discord-forum-channel-exporter",
                "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/charlieakan~discord-forum-channel-exporter/runs": {
            "post": {
                "operationId": "runs-sync-charlieakan-discord-forum-channel-exporter",
                "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/charlieakan~discord-forum-channel-exporter/run-sync": {
            "post": {
                "operationId": "run-sync-charlieakan-discord-forum-channel-exporter",
                "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": [
                    "botToken",
                    "guildId"
                ],
                "properties": {
                    "botToken": {
                        "title": "Discord bot token",
                        "type": "string",
                        "description": "Bot token for a Discord bot installed in a server you own or manage. The bot must have permission to view the selected forum channels."
                    },
                    "guildId": {
                        "title": "Discord server/guild ID",
                        "type": "string",
                        "description": "The Discord server ID to export forum channels from."
                    },
                    "forumChannelIds": {
                        "title": "Forum channel IDs",
                        "type": "array",
                        "description": "Optional list of Discord forum channel IDs. If empty, the Actor exports all forum/media channels the bot can see.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeArchivedThreads": {
                        "title": "Include archived threads",
                        "type": "boolean",
                        "description": "Include public archived forum threads in addition to active threads.",
                        "default": true
                    },
                    "includePrivateArchivedThreads": {
                        "title": "Include private archived threads",
                        "type": "boolean",
                        "description": "Try to include private archived threads. Requires the bot to have the right Discord permissions.",
                        "default": false
                    },
                    "includeFirstPostContent": {
                        "title": "Include first post content",
                        "type": "boolean",
                        "description": "Include the first post text for each forum thread. Leave off unless you have consent to export message content.",
                        "default": false
                    },
                    "maxThreadsPerChannel": {
                        "title": "Max threads per forum channel",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of threads to export per forum channel.",
                        "default": 500
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
