# Discord Server Scraper (`parsebird/discord-server-scraper`) Actor

Scrape public Discord servers from the Discord server directory by keyword or category: names, descriptions, member and online counts, boosts, tags, categories, invite links, and images.

- **URL**: https://apify.com/parsebird/discord-server-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.49 / 1,000 discord servers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Discord Server Scraper

**Discord Server Scraper** extracts public Discord servers from the [Discord server directory](https://discord.com/servers) by keyword or category. You get each server's name, description, member and online counts, boosts, tags, categories, invite link, and images as clean JSON, CSV, or Excel.

<table><tr>
<td style="border-left:4px solid #5865F2;padding:12px 16px;font-weight:600">
Search Discord servers by any keyword or browse the Gaming, Entertainment, Education, Science &amp; Tech, and Music categories (the first 3,000 servers of each, often more), and get 30+ fields per server, including member counts, online counts, boosts, tags, language, verified and partnered status, and invite links.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/discord-server-scraper. Scrapes public Discord servers listed in the Discord server directory (discord.com/servers) by keyword or category. Call via ApifyClient: client.actor("parsebird/discord-server-scraper").call(run_input={"keywords": ["minecraft", "valorant"], "category": "Gaming", "maxResults": 200}). Inputs: keywords (array of strings, optional; each keyword is searched separately; leave empty to list the directory), category (string, optional, one of "Gaming", "Entertainment", "Education", "Science & Tech", "Music"; empty = all five), maxResults (integer, optional, total servers to save; empty = no limit), deepKeywordSearch (boolean, default false; also scans the first 3,000+ directory servers of each category for the keyword in name, description, or tags), includeServerDetails (boolean, default false; adds about, social_links, reasons_to_join), proxyConfiguration (object, default Apify Proxy). Output fields per server: id, name, description, url, invite_url, vanity_url_code, approximate_member_count, approximate_presence_count, premium_subscription_count, preferred_locale, primary_category_id, primary_category, categories, keywords (server tags), features, is_verified, is_partnered, is_published, auto_removed, created_at, icon, icon_url, banner, banner_url, splash, splash_url, discovery_splash, discovery_splash_url, objectID, about, social_links, reasons_to_join, search_keyword, search_category. Pricing: pay per server saved. Full API spec: https://apify.com/parsebird/discord-server-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What is Discord Server Scraper?

[Discord](https://discord.com) lists public communities in its server directory at [discord.com/servers](https://discord.com/servers). When we checked in October 2026, the directory listed about **53,000 servers**, from game communities and fan clubs to study groups and AI tools.

**Discord Server Scraper** turns that directory into a dataset. Enter keywords like `minecraft` or `study`, pick a category, or leave both empty to list the directory. It's a simple **Discord server search API alternative**: you don't need a Discord account, a bot token, or any code.

- 🔎 **Keyword search.** Uses Discord's own server search, the same one behind the search box on discord.com/servers, so results are ranked by relevance.
- 🗂️ **Category browsing.** Lists Gaming, Entertainment, Education, Science & Tech, and Music servers, about 3,000 or more per category.
- 🧭 **Deep keyword search.** Discord's search stops after a few dozen servers per keyword. Turn on deep search to also scan the directory and add every server whose name, description, or tags contain your keyword.
- 📊 **Server stats.** Member count, online count, boost count, language, and creation date for every server.
- 🏷️ **Tags and categories.** Server tags, primary category, and all subcategories, like Anime & Manga, LFG, or Programming.
- 🔗 **Invite links and images.** Vanity invite links, server page links, and direct URLs for the icon, banner, and splash images.
- 📝 **Server details.** Optionally adds the About text, social links, and "reasons to join" that servers show on their directory page.
- 📅 **Scheduling and monitoring.** Run the same search daily or weekly with [Apify Schedules](https://docs.apify.com/platform/schedules) to track member growth or spot new servers.
- 🔌 **API and integrations.** Get results from the [Apify API](https://docs.apify.com/api/v2), or send them to Google Sheets, Zapier, Make, Slack, or webhooks with [Apify integrations](https://docs.apify.com/platform/integrations).

### What data can you extract from Discord?

| Field | Description |
|-------|-------------|
| `id` / `objectID` | Discord server (guild) ID |
| `name` / `description` | Server name and short description |
| `url` | Server page on discord.com/servers |
| `invite_url` / `vanity_url_code` | Invite link (discord.gg) and custom invite code |
| `approximate_member_count` | Total members |
| `approximate_presence_count` | Members online when the data was read |
| `premium_subscription_count` | Number of server boosts |
| `preferred_locale` | Main server language, like `en-US` or `pt-BR` |
| `primary_category` / `categories` | Primary category and all directory categories, with IDs and names |
| `keywords` | Tags the server owners chose |
| `features` | Enabled Discord features, like `COMMUNITY`, `VERIFIED`, `PARTNERED`, `VANITY_URL` |
| `is_verified` / `is_partnered` | Verified and Discord Partner status |
| `created_at` | When the server was created (from its Discord ID) |
| `icon_url` / `banner_url` / `splash_url` / `discovery_splash_url` | Direct image links (plus the raw image hashes) |
| `about` / `social_links` / `reasons_to_join` | About text, social links, and reasons to join *(server details)* |
| `search_keyword` / `search_category` | The keyword and category that found this server |

### How to scrape Discord servers

1. Open [Discord Server Scraper](https://apify.com/parsebird/discord-server-scraper) on Apify Store and click **Try for free**.
2. In **Keywords**, enter one or more search words, like `minecraft` or `crypto`. Leave it empty to list the whole directory.
3. Optionally pick a **Category** to keep only Gaming, Entertainment, Education, Science & Tech, or Music servers.
4. Set **Max servers** to control how many servers you get.
5. Turn on **Deep keyword search** if you want more than Discord's top few dozen results per keyword.
6. Click **Start** and wait for the run to finish.
7. Download your Discord servers as JSON, CSV, Excel, XML, or HTML from the **Output** tab, or read them with the API.

### How much does it cost to scrape Discord servers?

Discord Server Scraper uses **pay-per-event** pricing. You pay for each server saved to the dataset. Compute and proxy costs are included in the event price.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| `server-scraped` (per server) | $0.00499 | $0.00449 | $0.00399 | $0.00349 |
| Per 1,000 servers | **$4.99** | **$4.49** | **$3.99** | **$3.49** |

For example, 200 servers cost about $1.00 on the Free plan, and 3,000 servers cost $14.97. Use **Max servers** to cap a run. You can set a maximum cost per run in Apify Console, and the Actor stops when it's reached. Server details and deep keyword search don't change the price per server.

### Input

All fields are optional. With no input, the Actor lists all five directory categories. See the [Input tab](https://apify.com/parsebird/discord-server-scraper/input-schema) for the full schema.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `keywords` | array | No | — | Words to search Discord servers for. Each keyword is searched separately. Empty = list the directory |
| `category` | string | No | all | `Gaming`, `Entertainment`, `Education`, `Science & Tech`, or `Music` |
| `maxResults` | integer | No | no limit | Total servers to save across all keywords and categories |
| `deepKeywordSearch` | boolean | No | `false` | Also scan the directory (the first 3,000+ servers of each category) for the keyword in names, descriptions, and tags |
| `includeServerDetails` | boolean | No | `false` | Add the About text, social links, and reasons to join. Keyword search results always include them |
| `proxyConfiguration` | object | No | Apify Proxy | Spreads requests over several IPs so large runs finish faster |

```json
{
    "keywords": ["minecraft", "valorant"],
    "category": "Gaming",
    "maxResults": 200
}
```

### Output example

Each server is one item in the dataset. Download it in JSON, CSV, Excel, XML, or HTML. Lists are shortened here.

```json
{
    "id": "143852930036924417",
    "name": "Wynncraft • MMORPG Minecraft Server",
    "description": "Full-Fat MMORPG Minecraft Server. No mods required! Join at (IP): play.wynncraft.com",
    "url": "https://discord.com/servers/wynncraft-mmorpg-minecraft-server-143852930036924417",
    "invite_url": "https://discord.gg/wynncraft",
    "vanity_url_code": "wynncraft",
    "approximate_member_count": 222463,
    "approximate_presence_count": 52376,
    "premium_subscription_count": 55,
    "preferred_locale": "en-US",
    "primary_category_id": 1,
    "primary_category": { "id": 1, "name": "Gaming", "is_primary": true },
    "categories": [
        { "id": 39, "name": "Fandom", "is_primary": false },
        { "id": 3, "name": "Entertainment", "is_primary": true },
        { "id": 1, "name": "Gaming", "is_primary": true }
    ],
    "keywords": ["minecraft", "minecraft mmorpg", "minecraft server", "mmorpg", "rpg"],
    "features": ["COMMUNITY", "DISCOVERABLE", "PARTNERED", "VANITY_URL", "WELCOME_SCREEN_ENABLED"],
    "is_verified": false,
    "is_partnered": true,
    "is_published": true,
    "auto_removed": false,
    "created_at": "2016-02-01T23:00:11.179000Z",
    "icon": "a_8f1e212da56e0f5b02ed58d65cdcf6cb",
    "icon_url": "https://cdn.discordapp.com/icons/143852930036924417/a_8f1e212da56e0f5b02ed58d65cdcf6cb.gif",
    "banner": "a_e9bb762b9c20ab5b83658671a70b3b28",
    "banner_url": "https://cdn.discordapp.com/banners/143852930036924417/a_e9bb762b9c20ab5b83658671a70b3b28.gif",
    "splash": "809d9f9e0a10d28c426aa440f2d9e514",
    "splash_url": "https://cdn.discordapp.com/splashes/143852930036924417/809d9f9e0a10d28c426aa440f2d9e514.png",
    "discovery_splash": "9de202132b04423ac657c9716a11d8b1",
    "discovery_splash_url": "https://cdn.discordapp.com/discovery-splashes/143852930036924417/9de202132b04423ac657c9716a11d8b1.png",
    "objectID": "143852930036924417",
    "about": "The official Discord community for Wynncraft. Discuss the game and more with thousands of others! ...",
    "social_links": ["https://reddit.com/r/Wynncraft", "https://twitter.com/Wynncraft", "https://youtube.com/WynncraftOfficial"],
    "reasons_to_join": [{ "reason": "Find groups to play with", "emoji_id": null, "emoji_name": "🤝" }],
    "search_keyword": "minecraft",
    "search_category": null
}
```

### Use the Discord Server Scraper API

Call the Actor from your own code with the [Apify API client](https://docs.apify.com/api/client/python). Find your token in [Apify Console → Settings → Integrations](https://console.apify.com/settings/integrations).

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/discord-server-scraper").call(run_input={
    "keywords": ["study", "math"],
    "category": "Education",
    "maxResults": 100,
})

for server in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(server["name"], server["approximate_member_count"], server["invite_url"])
```

**JavaScript**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/discord-server-scraper').call({
    category: 'Music',
    maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((server) => console.log(server.name, server.approximate_member_count));
```

You can also start runs over plain HTTP, see the [API tab](https://apify.com/parsebird/discord-server-scraper/api), or connect the Actor to AI agents through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

### Use cases

- **Community research.** Find the biggest servers for a game, topic, or language and compare their size and activity.
- **Influencer and partner outreach.** Build lists of servers with invite links for sponsorships, collaborations, or giveaways.
- **Market research.** See which games, AI tools, or crypto projects have the most active Discord communities.
- **Growth tracking.** Schedule weekly runs and track member and online counts over time.
- **Directory and listing sites.** Feed your own server list or search page with fresh directory data.
- **Lead generation.** Collect official servers and their social links for brands, creators, and developers.

### How it works

1. With keywords, the Actor runs Discord's directory search for each keyword (inside your category, if you pick one) and opens each server's directory page to get its full profile.
2. Without keywords, it pages through each selected category of the directory, which shows the first 3,000 servers per category. Because the directory order has ties and shifts over time, it pages again with a different page size where needed to fill the gaps.
3. With deep keyword search, it also scans the selected categories and keeps servers whose name, description, or tags contain your keyword.
4. Each server is saved once per run, even if it matches several keywords or categories.

### FAQ

**Do I need a Discord account or bot token?**
No. The Actor only reads the public server directory at discord.com/servers, which anyone can open without logging in.

**How many servers can I get per keyword?**
Discord's own search returns the few dozen most relevant servers per keyword. In our October 2026 tests, `anime` returned 49 servers, `roblox` returned 78, and `chess` returned 20. Turn on **Deep keyword search** to also add every matching server in the browsable directory. For example, `math` in Education went from 19 servers to 41.

**How many servers can I get without keywords?**
The Discord directory only lets anyone page through the first 3,000 servers of each category. Because Discord's ranking shifts while the Actor pages through it, a full run can collect more: in our October 2026 test, a full Gaming run returned 3,620 unique servers. Smaller categories return all of their servers, for example all 2,380 Music servers.

**How long does a run take?**
In our October 2026 tests on Apify, a keyword search for 50 servers took under 30 seconds, and a full Gaming category (3,620 servers) took under 3 minutes. Deep keyword search across all five categories took about 11 to 13 minutes. Pick a category to make it faster.

**Why do I get results for a misspelled keyword?**
Discord's search is typo-tolerant, so it returns servers with similar words. The Actor returns exactly what the Discord search box returns.

**Why are some fields empty for a few servers?**
Servers with a paid membership store page only publish a short profile, so tags, categories, and boosts can be `null` for them. Banners and splash images are `null` when a server hasn't set one.

**How fresh is the data?**
Every run reads the live directory. Member and online counts are Discord's own approximate numbers at the time of the run.

**Can I schedule runs or export to Google Sheets?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) for recurring runs and [integrations](https://docs.apify.com/platform/integrations) for Google Sheets, Zapier, Make, Slack, and webhooks.

**Something is missing or broken?**
Open an issue on the [Issues tab](https://apify.com/parsebird/discord-server-scraper/issues). Feedback and feature requests are welcome there too.

### Is it legal to scrape Discord servers?

The Actor collects only data that Discord publishes in its public server directory, which server owners choose to list there. It doesn't log in, join servers, or read messages. You are still responsible for how you use the data: follow Discord's [Terms of Service](https://discord.com/terms), and data protection laws like the GDPR when you process it. Read more in Apify's blog post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other community scrapers

| Actor | What it does |
|-------|--------------|
| [Reddit Search Scraper](https://apify.com/parsebird/reddit-search-scraper) | Search Reddit posts and comments by keyword |
| [Reddit Subreddit Posts Scraper](https://apify.com/parsebird/reddit-subreddit-posts-scraper) | Scrape posts from any subreddit feed, with optional comments |
| [Telegram Media Downloader](https://apify.com/parsebird/telegram-media-downloader) | Extract post media from public Telegram channels and groups |
| [Skool Community Scraper](https://apify.com/parsebird/skool-community-scraper) | Scrape Skool communities: pricing, member counts, owners, and courses |
| [Twitch Scraper](https://apify.com/parsebird/twitch-scraper) | Scrape Twitch channels, live streams, clips, games, and VODs |
| [Patreon Scraper](https://apify.com/parsebird/patreon-scraper) | Scrape Patreon creators, membership tiers, and posts |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/discord-server-scraper/changelog.md

# Actor input Schema

## `keywords` (type: `array`):

Enter words to search Discord servers for, like "minecraft" or "study". Each keyword is searched separately. Leave empty to list every server in the selected categories (Discord shows about the first 3,000 of each category).

## `category` (type: `string`):

Only return servers in this directory category. Leave empty to cover all five categories.

## `maxResults` (type: `integer`):

Stop after saving this many servers across all keywords and categories. Leave empty for no limit.

## `deepKeywordSearch` (type: `boolean`):

Discord's own search returns only the few dozen most relevant servers per keyword. Turn this on to also scan the directory (the first 3,000+ servers of each category) and add every server whose name, description, or tags contain the keyword. The scan adds a few minutes per category, so pick a category to keep runs short.

## `includeServerDetails` (type: `boolean`):

Open each server's directory page to add its About text, social links, and reasons to join. Keyword search results from Discord's own search always include them. Same price either way, but slower for large directory runs.

## `proxyConfiguration` (type: `object`):

Discord limits how fast one IP can page through the directory. A proxy spreads requests over several IPs so large runs finish faster.

## Actor input object example

```json
{
  "keywords": [
    "minecraft"
  ],
  "maxResults": 50,
  "deepKeywordSearch": false,
  "includeServerDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "keywords": [
        "minecraft"
    ],
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/discord-server-scraper").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 = {
    "keywords": ["minecraft"],
    "maxResults": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/discord-server-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "minecraft"
  ],
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parsebird/discord-server-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/discord-server-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xBOFkl8tnuIsNdWh3/builds/Y2H18AeIR5LW5Yq65/openapi.json
