Discord Server Scraper — Messages, Members & Channels avatar

Discord Server Scraper — Messages, Members & Channels

Pricing

from $3.00 / 1,000 member scrapeds

Go to Apify Store
Discord Server Scraper — Messages, Members & Channels

Discord Server Scraper — Messages, Members & Channels

Export a Discord server via your bot token: messages, members, channels, roles & full structure. HTTP-only, no proxy. MCP-ready Apify Actor.

Pricing

from $3.00 / 1,000 member scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Discord Server Scraper

Export an entire Discord server with your own bot token — messages, members, channels, roles and full structure — into one clean dataset. HTTP-only, no browser, no proxy. MCP-ready for Claude, ChatGPT and other AI agents.

What it does

Point it at a Discord server (guild) ID plus a bot token for a bot that is already a member of that server, and it exports any combination of:

ResourceWhat you get
ServerName, description, member & online counts, owner, features, verification level, boost tier, vanity URL, icon/banner, creation date
Channels & threadsFull channel/category/forum/thread tree — name, type, position, parent, topic, NSFW flag, slow-mode
RolesName, color, position, hoist/mention/managed flags, permission bitfield
MembersUsername, global & display name, nickname, roles, join date, boost-since, bot flag, avatar (needs the Server Members Intent)
MessagesAuthor, content, timestamp, edits, reactions, attachments, embeds, reply-to, pinned — per channel, newest first

Every record carries a recordType field (server, channel, role, member, message) so you can split one dataset into five tables.

When to use it

  • Community managers & server owners — export/backup/audit your own server.
  • Analytics — member growth, role distribution, most-active channels.
  • Migration — snapshot a server before a restructure or move.
  • Research & moderation — pull message history for a channel into a spreadsheet or LLM.

This is the authenticated, deep-export companion to Discord All-in-One Scraper, which resolves invites and searches public directories without a token. Use that one for public recon; use this one to export a server your bot can access.

Setup — get a bot token (2 minutes)

  1. Open the Discord Developer PortalNew Application.
  2. Bot tab → Reset Token → copy the token. Paste it into the Discord bot token field here (stored encrypted, masked in logs).
  3. To scrape members, enable Privileged Gateway Intents → Server Members Intent on that same Bot tab.
  4. OAuth2 → URL Generator → scope bot, permissions View Channels + Read Message History → open the URL → add the bot to your server.
  5. In Discord, enable Settings → Advanced → Developer Mode, then right-click the server icon → Copy Server ID. Paste it into Server (guild) ID.

The bot must be a member of the server — Discord exposes no way to read a server a bot has not joined.

Output

Each dataset item is a flat JSON record. Example member and message records:

{
"recordType": "member",
"userId": "80351110224678912",
"username": "nelly",
"globalName": "Nelly",
"displayName": "Nelly",
"isBot": false,
"roleIds": ["41771983423143936"],
"joinedAt": "2024-03-04T18:22:11.000Z",
"avatarUrl": "https://cdn.discordapp.com/avatars/80351110224678912/8342.png",
"serverId": "613425648685547541"
}
{
"recordType": "message",
"id": "1099999999999999999",
"channelId": "974519864045756446",
"channelName": "general",
"authorUsername": "nelly",
"content": "ship it",
"createdAt": "2026-02-01T12:00:00.000Z",
"reactions": [{ "emoji": "rocket", "count": 5 }],
"attachmentUrls": [],
"replyToId": null,
"serverId": "613425648685547541"
}

Pricing — Pay Per Event

EventPriceWhen
Actor start$0.00005Once per run (per GB RAM)
Member scraped$0.003Per member returned
Message scraped$0.002Per message returned

Server, channel and role records are free — you only pay for members and messages. A run that exports 1,000 members and 2,000 messages costs about $7 (1000 x $0.003 + 2000 x $0.002). Set maxMembers / maxMessagesPerChannel to cap spend; the actor prints the worst-case cost before charging and stops cleanly if you set a run cost limit.

Input reference

FieldTypeDefaultNotes
botTokenstring (secret)Discord bot token. Required.
serverIdstringNumeric guild ID. Required.
resourcesarrayall fiveserver, channels, roles, members, messages
channelIdsarrayall readableRestrict messages to these channel IDs
maxMessagesPerChannelinteger1000 to skip messages; max 10000
maxMembersinteger10000 to skip members; max 100000
messagesNewerThanstringISO date; only newer messages
includeThreadsbooleantrueInclude active threads

Use from code

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('khadinakbar/discord-server-scraper').call({
botToken: 'YOUR_DISCORD_BOT_TOKEN',
serverId: '613425648685547541',
resources: ['members', 'channels'],
maxMembers: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => i.recordType === 'member'));

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("khadinakbar/discord-server-scraper").call(run_input={
"botToken": "YOUR_DISCORD_BOT_TOKEN",
"serverId": "613425648685547541",
"resources": ["messages"],
"maxMessagesPerChannel": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["recordType"], item.get("content"))

MCP / AI agents

Exposed as apify--discord-server-scraper in the Apify MCP server. An agent passes serverId + botToken, picks resources, and receives structured JSON it can reason over — member rosters, message history, channel maps.

FAQ

Do I need a bot token? Yes. Discord blocks anonymous reads of server members and messages. For token-free public data (invite resolution, directory search, member counts) use Discord All-in-One Scraper instead.

Members come back empty / skipped. Enable the Server Members Intent on your bot (Developer Portal → Bot → Privileged Gateway Intents). The actor reports this as a warning and still returns everything else.

A channel returned no messages. The bot lacks Read Message History there. The channel is skipped with a warning; other channels continue.

Can it scrape a server my bot is not in? No. Add the bot to the server first.

Is this a self-bot? No. It uses a proper Bot token via Discord's official REST API. Never use a user token — that violates Discord's Terms of Service.

Use only with bot tokens you control and on servers you are authorized to access. You are responsible for complying with Discord's Terms of Service, Developer Terms, and applicable privacy laws (GDPR/CCPA) when handling member and message data. This actor does not bypass any access control — it only reads what the supplied bot is already permitted to see. Not affiliated with Discord Inc.