Discord Server Stats — Member Count & Server Lookup | $1/1k avatar

Discord Server Stats — Member Count & Server Lookup | $1/1k

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Discord Server Stats — Member Count & Server Lookup | $1/1k

Discord Server Stats — Member Count & Server Lookup | $1/1k

Look up Discord servers by invite link, invite code or server ID: approximate member and online counts, boosts, verification level, features, vanity URL, icon and banner. One row per server, no login or bot token, no personal data. Export CSV, JSON or Excel.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Raffy

Raffy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

What does Discord Server Stats do?

Discord Server Stats turns Discord invite links, invite codes and server IDs into server statistics: approximate member count, how many members are online right now, Server Boost count and tier, verification level, feature flags (Partnered, Verified, Community, Discoverable), vanity URL, description, and icon, banner and splash image links. Paste https://discord.gg/python and a moment later you have one clean row per server as JSON, CSV or Excel.

It works as a Discord server lookup API without a bot, a token or a Discord account. The Actor reads the same public invite and widget endpoints that Discord's own invite pages use, one request per server, so it is fast and cheap.

Typical use cases:

  • Community growth tracking. Schedule a daily run over your server and your competitors' servers and chart memberCount and onlineCount over time.
  • Server discovery research. Enrich a list of invites from a directory, a spreadsheet or social posts with size, activity and verification, and drop dead or expired invites (not_found).
  • Brand and community benchmarking. Compare games, open-source projects, creators or crypto communities by members, online ratio and boosts.
  • Link hygiene. Check which invite links on your site, docs or ads still work and where they lead.

This is a server statistics tool. It never collects usernames, user IDs, avatars, member lists, messages or anything else about individual people.

Why use Discord Server Stats?

  • Fast. One HTTP request per server, no browser. The default run (6 large servers) finishes in about 4 seconds on Apify.
  • Cheap. $1 per 1,000 servers, with Apify platform usage included.
  • Honest results. Every row carries status (ok, not_found, error). An invalid or expired invite is a not_found row that you are never charged for, so an AI agent or a script can tell "this invite is dead" apart from "the lookup failed".
  • Every input form works. Full links, discord.gg short links, bare invite codes, vanity codes and numeric server IDs can be mixed in one list.
  • Polite to Discord. Two lookups at a time, automatic back-off on Discord's rate limit, and a clear error row instead of a silently missing server if throttling persists.

What data can Discord Server Stats extract?

FieldTypeDescription
serverIdstringDiscord server (guild) ID
serverNamestringServer name
descriptionstringServer description shown on the invite
memberCountintegerApproximate member count
onlineCountintegerApproximate number of members online right now
onlineRationumberonlineCount / memberCount, 0 to 1
boostCountintegerNumber of Server Boosts
boostTierintegerBoost level 0 to 3
verificationLevelintegerVerification level 0 to 4
verificationLevelLabelstringnone, low, medium, high or very_high
nsfwLevelintegerNSFW level 0 to 3
nsfwLevelLabelstringdefault, explicit, safe or age_restricted
isNsfwbooleanServer marked as NSFW
featuresarrayDiscord feature flags, e.g. COMMUNITY, PARTNERED, VERIFIED, DISCOVERABLE, VANITY_URL
featureCountintegerNumber of feature flags
isPartneredbooleanDiscord Partner server
isVerifiedbooleanVerified server
isCommunitybooleanCommunity server
isDiscoverablebooleanListed in Server Discovery
vanityUrlCodestringCustom invite code, as in discord.gg/<vanityUrlCode>
serverTagstringServer tag, when the server set one
inviteCodestringThe invite code that was resolved
inviteUrlstringShort invite link https://discord.gg/<inviteCode>
inviteChannelIdstringID of the channel the invite opens
inviteChannelNamestringName of that channel
inviteChannelTypeintegerDiscord channel type number of that channel
inviteChannelTypeLabelstringtext, voice, announcement, stage, forum, media, category or other
inviteExpiresAtstringWhen the invite expires (ISO 8601); absent for permanent invites
invitePermanentbooleantrue when the invite never expires
iconUrlstringServer icon image (Discord CDN)
bannerUrlstringServer banner image (Discord CDN)
splashUrlstringInvite background image (Discord CDN)
widgetEnabledbooleantrue when the server's public widget was read
widgetOnlineCountintegerOnline count reported by the widget
widgetInstantInvitestringInvite link the widget hands out
widgetChannelCountintegerNumber of channels the widget lists
widgetChannelsarrayChannels the widget lists (id, name, position), usually voice channels
widgetErrorstringWhy widget data is missing when Also read the server widget was on
inviteErrorstringWhy the full profile is missing on a server-ID row
urlstringPublic page of the row (invite page, or widget page for a server ID)
statusstringok, not_found or error (see below)
errorstringReason when status is not ok
scrapedAtstringISO 8601 time of the lookup

Fields are omitted when Discord does not publish them for a server (for example bannerUrl for a server without a banner).

Result status (tri-state output)

statusMeaningBilled?
okDiscord returned the server.Yes
not_foundDiscord says the invite or server does not exist: an invalid or expired invite ("Unknown Invite"), an unknown server ID, or an invite to a group chat rather than a server. The row's url contains the code you sent.No
errorThe lookup failed: a server ID whose widget is switched off (HTTP 403), an input that is not an invite or server ID, or Discord kept rate-limiting after all retries. error says why.No

How to use the Discord server lookup

  1. Open the Actor in Apify Console.
  2. Paste invite links, invite codes or server IDs into Discord invites or server IDs, one per line.
  3. Optional: switch on Also read the server widget to add the widget's voice channels and instant invite.
  4. Click Start. The default input (6 servers) takes a few seconds.
  5. Open the Output tab, or Export the dataset as JSON, CSV, Excel, XML or HTML.

To automate it, use the API tab (Node.js, Python, curl examples), connect it to Google Sheets, Slack, Make or Zapier, or add a Schedule to record member counts every day.

  • Invite link or code (https://discord.gg/python, discord.com/invite/python, python, krBZDURK): returns the full server profile, including member and online counts. This works for any valid invite.
  • Server ID (267624335836053506): Discord only answers for servers whose owner has switched the server widget on. The widget gives the name, online count and, if the owner picked an invite channel, an invite that the Actor then follows for the full profile. A server with the widget switched off comes back as an error row that says HTTP 403.

How much does it cost to look up Discord servers?

This Actor uses pay-per-event pricing. Apify platform usage is included in these prices.

EventPrice
Actor start$0.005 per run
Result (status: ok row)$0.001 per server

Example: 1,000 servers in one run cost $1.005 ($1.00 for the rows plus $0.005 for the start). Rows with status not_found or error are never billed, and Also read the server widget does not change the price. You can cap spending per run with Maximum results and with the run's Max total charge option.

Input

See the Input tab for the full schema. The main options:

FieldTypeDefaultDescription
startUrlsarray of strings6 large public communitiesInvite links, invite codes or server IDs
includeWidgetbooleanfalseAlso read each server's public widget (listed channels, instant invite)
maxItemsinteger20Stop after this many rows
proxyConfigurationobjectApify Proxy offOptional; only for very large runs

Example input:

{
"startUrls": [
"https://discord.gg/python",
"discord.com/invite/csharp",
"reactiflux",
"267624335836053506"
],
"includeWidget": true,
"maxItems": 50
}

Called with no input at all (for example by an AI agent), the Actor looks up its six sample communities and returns data.

Output

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. Example rows from a run on the Apify platform (one ok row with features shortened from 49 flags, and the not_found row a dead invite produces):

[
{
"url": "https://discord.com/invite/python",
"status": "ok",
"scrapedAt": "2026-09-27T01:51:23.511Z",
"serverId": "267624335836053506",
"serverName": "Python",
"description": "We're a large community focused around the Python programming language. We believe that anyone can learn to code.",
"memberCount": 431890,
"onlineCount": 34650,
"onlineRatio": 0.0802,
"boostCount": 28,
"boostTier": 3,
"verificationLevel": 2,
"verificationLevelLabel": "medium",
"nsfwLevel": 0,
"nsfwLevelLabel": "default",
"isNsfw": false,
"features": ["ANIMATED_BANNER", "ANIMATED_ICON", "BANNER", "COMMUNITY", "DISCOVERABLE", "NEWS", "VANITY_URL", "WELCOME_SCREEN_ENABLED"],
"featureCount": 49,
"isPartnered": false,
"isVerified": false,
"isCommunity": true,
"isDiscoverable": true,
"vanityUrlCode": "python",
"serverTag": "snek",
"inviteCode": "python",
"inviteUrl": "https://discord.gg/python",
"inviteChannelId": "267631170882240512",
"inviteChannelName": "welcome",
"inviteChannelType": 0,
"inviteChannelTypeLabel": "text",
"invitePermanent": true,
"iconUrl": "https://cdn.discordapp.com/icons/267624335836053506/95a69567efa60a48b8d9840cb38b106b.png?size=512",
"bannerUrl": "https://cdn.discordapp.com/banners/267624335836053506/ed3be5b67371fe219d7006152087afdb.png?size=1024",
"splashUrl": "https://cdn.discordapp.com/splashes/267624335836053506/b7099fe221153a7faff76048dc2e63ef.png?size=1024"
},
{
"url": "https://discord.com/api/v10/invites/zzqq-not-a-real-invite-9x?with_counts=true&with_expiration=true",
"status": "not_found",
"error": "HTTP 404: page does not exist",
"scrapedAt": "2026-09-27T01:55:56.571Z"
}
]

Tips

  • Put many invites into one run instead of many one-invite runs; you pay the start fee once.
  • To track growth, schedule the same list daily and compare memberCount and onlineCount by serverId across runs.
  • Prefer permanent invites (vanity codes or invites set to never expire); temporary invites turn into not_found rows once they expire.

Limitations

  • Counts are approximate. memberCount and onlineCount are Discord's own approximate numbers, and Discord caches invite answers for up to 5 minutes.
  • No keyword search. Discord has no public search for servers without logging in, so you supply the invites or server IDs.
  • Server IDs need the widget. A server ID only answers when the owner has switched on the server widget; otherwise the row is an error with HTTP 403. Invites always work.
  • Widget channels are partial. The widget lists only the channels the owner chose to show, usually voice channels.
  • Rate limits. Discord throttles lookups from one IP address after a few dozen quick requests (HTTP 429). The Actor runs two lookups at a time, waits and retries up to five times (3 to 60 seconds), and only a server still throttled after that becomes an error row. In a 50-invite test on Apify every lookup finished, in about a minute. Big lists therefore run at roughly one server per second; if you still see error rows mentioning 429, split the list or enable Apify Proxy (datacenter).
  • Results reflect Discord at the time of the run. If Discord changes these endpoints, rows come back as error and the Actor is updated (report it in the Issues tab).

FAQ

Do I need a Discord account, bot or token?

No. The Actor uses Discord's public invite and widget endpoints, which answer without logging in.

Can it list a server's members or usernames?

No, by design. Discord Server Stats is a server statistics tool. It never reads usernames, user IDs, avatars, member lists or messages, even where a Discord response contains them (for example the widget's member list or the person who created an invite).

How do I track a server's member count over time?

Create a Schedule in Apify Console that runs the Actor daily with your list of invites, then compare memberCount, onlineCount and onlineRatio across runs. Each row has scrapedAt.

Why is my invite not_found?

Discord answered "Unknown Invite": the code is mistyped (random codes are case-sensitive), the invite expired or was deleted, the vanity URL was removed, or the invite points to a group chat instead of a server. Such rows are never charged.

Why does a server ID come back as an error with HTTP 403?

That server keeps its widget switched off, and the widget is the only public way to look up a server by ID. Use an invite link for that server instead.

Can I use this Actor from an AI agent or MCP client?

Yes. Called with no arguments it returns sample data; every row is self-describing (status + error), inputs are plain strings, and results can be fetched via the dataset API or the Apify MCP server.

How fast is it?

The first few dozen servers go at several per second; after that Discord's rate limit sets the pace, roughly one server per second. The six default servers take about 4 seconds on Apify, and a 50-invite list took about a minute.

This Actor collects only public, server-level statistics that Discord shows to anyone who opens an invite link or a server widget. It does not collect personal data: no usernames, user IDs, avatars, member lists, profile data or message content, and it does not log in or get around any access control. Server names and descriptions are written by server owners; review them before republishing. Personal data is protected by the GDPR in the European Union and by other regulations around the world; you are responsible for complying with Discord's terms and applicable law when using the results.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Discord Inc. "Discord" is a trademark of Discord Inc. and is used here only to describe the data source.