Discord API. Servers, games and apps as JSON.
Invites, public server pages, directory search, trending games, applications, templates, widgets and announcements. One envelope, typed lookup status, cursor paging.
- 17 routes
- Typed lookupStatus
- 1 credit per request
- Failed requests aren't charged
Teams running monitoring, research, and enrichment pipelines
Why Social Fetch
Discord data as JSON. You build the product.
Live Discord data in one response shape, with platform changes handled for you.
Discord, plus every other platform
One key and one response envelope for Discord and 56 more platforms.
Pricing you can reason about
One request, one credit. Know how far your balance will go before you run your next batch.
Live data on every request
Fetch public data when you ask for it.
Nothing to maintain
We handle platform changes and breakages.
Built for production jobs
Run concurrent workloads with explicit statuses and request IDs.
Regular jobs. Better rates.
Running lookups every month? Get lower per-credit rates with a monthly plan. For occasional projects, choose pay as you go.
What Discord data can you get?
17 endpoints, one API key. Every response comes back as live JSON in the same envelope.
Invites
- +1 more servers endpoints
Servers
Games
Applications
Templates
Announcements
Browse all 17 Discord endpoints
Invites
Servers
Games
Applications
Templates
Announcements
What teams build with Discord data
Monitoring, enrichment, research and content workflows on Discord data, on the same API as every other platform.
How it works
Your first request in three steps.
Use TypeScript or your automation tool of choice.
Sources
+ 51 more platforms
One request
GET/v1/tiktok/profiles/
x-api-key: sk_live_••••••••
Same JSON shape
{
"data": {
"lookupStatus": "found",
"profile": {
"platform": "tiktok",
"handle": "charlidamelio",
"displayName": "charli d’amelio",
"verified": true
},
"metrics": {
"followers": 160263648
}
}
}Step 1
Create your free account
Get an API key with 100 requests included.
Step 2
Choose an endpoint
Pass a username, URL, keyword, or post ID.
Step 3
Get clean JSON
Use the response immediately or send it into your pipeline.
Works with your stack
Code, automate, or connect your AI.
TypeScript
n8n
- Make
- Apify
- MCP
- AI clients
Pricing
Social data, priced simply.
Start with 100 free credits. Monthly plans give you predictable volume and lower per-request rates.
Starter
18,000credits
$1.61 per 1k · $0.00161 per request
- Top up from $1.61 / 1k if you run out
- Up to 25 monitors
Growth
50,000credits
$1.58 per 1k · $0.00158 per request
- Top up from $1.58 / 1k if you run out
- 5 team seats
- Up to 100 monitors
Scale
150,000credits
$1.50 per 1k · $0.00150 per request
- Top up from $1.50 / 1k if you run out
- 25 team seats
- Up to 250 monitors
- Cancel anytime
- 30-day money-back guarantee
- Price locked while you stay
Need 1M+ credits, invoicing, or volume rates? Talk to us
Trust signals
DevHunt
Product Hunt
Uneed
Customers
Teams building on Social Fetch.
“Our TikTok and Instagram scrapers broke constantly. Social Fetch took us off that rotation — we ship product again.”
“Transcripts at volume from one endpoint. No broken scrapers for our small team to maintain.”
“Live profile data on every request. We never flag accounts from a stale cache.”
“Heavy concurrent load, no rate limits to negotiate. The rare API I haven't wrapped in retries.”
Discord API: common questions
Is there a Discord API for public server data?
Yes. Social Fetch has seventeen routes under /v1/discord: invite, server page, server widget, directory browse, directory search, server index, game index, application index, announcement index, trending games, game page, application, similar applications, application collections, template, announcement channel, and announcement post. Authenticate with your Social Fetch API key in x-api-key.
How do I look up an invite?
Call GET /v1/discord/invites/{code} with the code from a discord.gg link. Vanity codes are case-insensitive; temporary codes are case-sensitive. A found response includes the invite type, expiry, the landing channel, and the server with its live members and online counts, boosts, tag and traits.
What does lookupStatus mean?
found means the item was returned. not_found means Discord says it does not exist, or the id has no public page. restricted means the item exists but is not public, which is the normal answer for a server widget that its owner has switched off. HTTP 200 only means the request finished, so always branch on lookupStatus.
How deep can I page the directory and search?
Browse returns 12 servers a page and stops at the directory's 3,000-row depth, with limitReached true when the walk reaches it. The directory reorders between requests, so numbered pages can repeat servers; follow page.nextCursor to skip ones already returned. Search returns up to 12 results a page on pages 1 to 6, and limitReached is true on page 6 when more rows were reported than those pages returned. A numbered page past 6 is a 400. Follow page.nextCursor while page.hasMore is true.
How do I enumerate every server id?
Call GET /v1/discord/servers/index. It returns 500 ids and their slugs a page, up to 200 pages, and reports generatedAt, totalIds and limitReached. Game and application ids come from GET /v1/discord/games/index and GET /v1/discord/applications/index, and announcement channel and post ids from GET /v1/discord/announcements/index.
Why is a widget restricted?
A server owner can switch the public widget off. The widget route then returns lookupStatus restricted with that server id, not an error. The server route accepts include=widget to add the same summary, and a disabled widget is reported there as enabled false.
Can I get every announcement from a channel?
GET /v1/discord/announcement-channels/{channelId} returns the latest public posts, newest first, with text, attachments and reactions. The page carries truncated: true because no working cursor was found, so use the single-post route with a message id when you need a specific post.
What game and application data is available?
The trending route lists ten games for a published week, optionally by category. A game page carries genres, platforms, publishers, links, media, trailers, review scores and the official server. Application records include tags, verification, the install link, slug, subscription SKU, the bot user with its banner, and, when the app is in the directory, its categories, install count and support server.
How do I page similar applications?
Add page, or follow page.nextCursor while page.hasMore is true. The response also reports numPages, so you can see how many pages Discord reports. Use the collections route for curated groups of applications.
Can I use the Discord routes from agents or MCP?
Yes. Every Discord route is a typed MCP tool and is reachable through Ask (POST /v1/ask) in plain English. Use the typed routes for production jobs.
The Discord API in detailHow the Discord routes work, what they cost, and how they differ from the official API.
Why teams use Social Fetch for Discord
Social Fetch exposes seventeen routes under /v1/discord. They cover an invite and the server behind it, a server's public directory page or subscription store page, directory browse and search, server, game and announcement indexes, a server's public widget, weekly trending games, a game page, application records with the app directory's similar and curated lists, guild templates, and public announcement channels and posts.
Every response uses the { data, meta } envelope with data.lookupStatus. A missing invite, server, game, application, template, channel or post comes back as a typed not_found, and a widget its owner has switched off comes back as restricted, so you branch on a field instead of parsing error pages. Lists page with an opaque page.nextCursor.
The routes report their real depth. Directory browse stops at 3,000 rows, server search stops at six pages, the server index returns 500 ids and slugs a page up to 200 pages, and the similar-applications route pages with page and a cursor. Announcement channels return their latest public posts with truncated: true because older posts are not available.
How to call the Discord API
1. Create an API key
Sign up at Social Fetch and copy a key (
sfk_...). New accounts get 100 free credits, enough to try every Discord route.2. Pick a route and start with an id
Use a real invite code or server id, for example
GET /v1/discord/invites/pythonorGET /v1/discord/servers/267624335836053506. Sendx-api-keyon every request.3. Branch on lookupStatus, then page
Check
data.lookupStatusbefore you store a row. For a list, keep sending the returnedpage.nextCursorwhilepage.hasMoreis true, and bill frommeta.creditsCharged.
What each Discord route returns
- Resolve an invite code to the server behind it, with live
membersandonlinecounts, boosts, vanity code, tag and games. - Read a public server page by id, including its directory details, categories, keywords, reasons to join, social links, about text and announcement channels, or its subscription store tiers.
- Browse the server directory by category or search it by relevance, both cursor-paged.
- Enumerate server ids and slugs from the public directory list when browse depth is not enough, and game and application ids from their own catalogues.
- List the ten weekly trending games and the published week list, read a game page, and get application records, paged similar applications and curated app collections.
- Read guild templates with their serialized roles and channels, and public announcement channels and single posts.
How much does the Discord API cost?
Each Discord route charges 1 credit per completed request, shown on every endpoint page. Each page of a list is its own request. Credits never expire on pay-as-you-go packs, and meta.creditsCharged on every response is the billing source of truth.
Social Fetch vs the official Discord API
Public server, directory, app and announcement data comes in different shapes, each with its own fields and paging rules. Social Fetch returns one JSON envelope and one pagination contract across all seventeen routes: typed lookupStatus values, page.nextCursor, stable field names, and one credit per request. That makes it practical to join a server page, its widget, its games and its applications in one pipeline.
Pull your first Discord data.
Run a live Discord request in the playground. 100 free credits, no card, JSON back in seconds.
No credit cardSign up in 30 seconds withGoogleGitHub