Discord Member Scraper avatar

Discord Member Scraper

Pricing

from $4.00 / 1,000 member scrapeds

Go to Apify Store
Discord Member Scraper

Discord Member Scraper

Scrape Discord server members via the official Bot API — usernames, roles, join dates, and Nitro boosts.

Pricing

from $4.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

11 days ago

Last modified

Share

Export the full member roster of a Discord server you own or manage — using the official Discord Bot API, not banned user-token tricks. Returns one clean record per member: username, server display name, roles (resolved to names), join date, Nitro-boost status, timeout status, and more.

This actor is ToS-compliant by design. It only reads servers where you have added your own bot with the Server Members Intent enabled. It will never get your Discord account banned and will not be pulled from the Store for abuse — unlike scrapers that ride on user account tokens.

⚙️ MCP-ready. Single server ID + bot token in, structured JSON out. Built for AI agents (Claude, ChatGPT) and no-code tools alike.

What you get

FieldDescription
userIdDiscord user snowflake ID
usernameDiscord username (handle)
globalNameAccount-wide display name
displayNameServer nickname → global name → username (best available)
nicknamePer-server nickname, if set
isBottrue for bot / application accounts
avatarUrlCDN URL of the member's avatar
roleIdsArray of role snowflake IDs
roleNamesArray of human-readable role names (when resolution is on)
joinedAtISO-8601 timestamp the member joined
premiumSinceISO-8601 timestamp Nitro-boosting started, if any
isPendingtrue if the member hasn't passed membership screening
isTimedOuttrue if the member is currently timed out
communicationDisabledUntilISO-8601 timeout expiry, if any
guildIdThe server this record came from

A run summary (guild name, members scraped/scanned, filters, estimated cost) is written to the key-value store under OUTPUT.

When to use it

  • Community managers / server owners exporting their member list for analytics, CRM, or backups.
  • Moderation teams auditing who holds which roles, who's timed out, who's pending screening.
  • Growth teams tracking Nitro boosters and join cohorts over time.

Not for: scraping servers you don't control, reading messages, or harvesting emails (Discord's API does not expose member email addresses). For message history, use a dedicated Discord message scraper.

Pricing (pay-per-event)

EventPrice
Actor start$0.001 per run
Member scraped$0.004 per member returned

A 5,000-member server costs about $20. You are billed only for members actually returned (after your exclude-bots and role filters), and maxMembers caps your spend. No subscription.

Setup (one-time, ~3 minutes)

  1. Go to the Discord Developer PortalNew Application.
  2. Open BotReset Token → copy the token. Paste it into this actor's botToken input.
  3. On the same Bot page, enable Privileged Gateway Intents → Server Members Intent. This is mandatory — without it Discord refuses to return members.
  4. Open OAuth2 → URL Generator, tick bot scope, copy the URL, open it, and add the bot to your server. (You need Manage Server permission on that server.)
  5. In Discord, enable Developer Mode (User Settings → Advanced), right-click your server icon → Copy Server ID. Paste it into guildId.

That's it. Run the actor.

Input example

{
"botToken": "YOUR_BOT_TOKEN",
"guildId": "974519864045756446",
"maxMembers": 5000,
"includeRoleNames": true,
"excludeBots": true,
"roleFilter": ["Moderator", "Verified"]
}

Output example

{
"userId": "100000000000000001",
"username": "jane_doe",
"globalName": "Jane",
"displayName": "Jane (mod)",
"nickname": "Jane (mod)",
"isBot": false,
"avatarUrl": "https://cdn.discordapp.com/avatars/100000000000000001/abc.png?size=256",
"roleIds": ["200000000000000001"],
"roleNames": ["Moderator"],
"joinedAt": "2023-04-01T12:00:00.000000+00:00",
"premiumSince": null,
"isPending": false,
"isTimedOut": false,
"guildId": "974519864045756446"
}

Call it from code

Apify JS client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('khadinakbar/discord-member-scraper').call({
botToken: 'YOUR_BOT_TOKEN',
guildId: '974519864045756446',
maxMembers: 5000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("khadinakbar/discord-member-scraper").call(run_input={
"botToken": "YOUR_BOT_TOKEN",
"guildId": "974519864045756446",
"maxMembers": 5000,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

How it works

The actor authenticates as your bot (GET /users/@me), confirms the bot can see the target server (GET /guilds/{id}), optionally fetches the role list once to resolve names (GET /guilds/{id}/roles), then paginates the official member endpoint (GET /guilds/{id}/members?limit=1000&after=…) until the whole roster — or your maxMembers cap — is collected. It respects Discord's rate limits (429 Retry-After, per-route buckets) and retries transient errors with backoff. HTTP-only; no browser, no proxy required.

FAQ

Do I need to host the bot anywhere? No. The bot just needs to exist and be a member of your server. This actor does the API calls.

Why only my own servers? Discord's API only returns member lists to bots that are in the server with the Server Members Intent. There is no compliant way to read a server you haven't added a bot to — and the non-compliant ways get accounts banned.

Can I get member emails or phone numbers? No. Discord's API never exposes those. Any tool claiming to is either fabricating data or breaking Discord ToS.

Why is my run failing with "SERVER MEMBERS INTENT is disabled"? You skipped step 3 above. Enable the intent in the Developer Portal, then re-run.

Large server (100k+ members)? Raise maxMembers. The actor paginates 1,000 at a time and respects rate limits; very large servers take a few minutes.

This actor uses Discord's official, documented Bot API and only accesses servers where you have added your own bot with the appropriate intent. You are responsible for ensuring your use complies with the Discord Developer Terms of Service, the Discord Community Guidelines, and applicable data-protection law (e.g. GDPR/CCPA) when handling member data. Do not use scraped member data for spam, harassment, or unsolicited DMs.