GuildRegister

API & data

Everything here is measured from Discord's public API. Free to use, CORS-open, no key. Please cache and be reasonable.

JSON

GET /api/guild/{id}
Full record for one server: measured members/online, verified/partner, boosts, categories, legitimacy score, measured-at.
GET /api/servers?sort=members|online|boosted&limit=N
Ranked list of servers. Add ?tag=<category> to scope to a category.

CSV

GET /api/servers?format=csv&tag=<category>
Same list as above, as a CSV download (id,name,members,online,verified,partnered,boosts,vanity).

API v2

Versioned, paginated and rate-limited. Same data and the same exclusions as v1 (removed servers are left out of lists and feeds; owner-claim details and internal review signals are never exposed). v1 above is unchanged.

GET /api/v2/guild/{id}?days=90
One server: the v1 record plus a daily-downsampled members/online history (history.points, last reading per UTC day; ?days= 1-365, default 90; history.baseline is the last reading before the window), and the latest 50 status-change events with human labels. 400 for a malformed id, 404 for an unknown server. categories, legitimacy_score and the emoji/sticker counts are best-effort: they can come back null or empty if that lookup is briefly unavailable.
GET /api/v2/servers?sort=members|online&tag=&min_members=&limit=&cursor=
Ranked list, keyset-paginated. sort is members (default) or online; tag scopes to a category; min_members is a minimum member count; limit 1-200 (default 50). Add &format=csv for CSV (id,name,members,online,verified,partnered,community,nsfw,boosts,vanity,created,url).
GET /api/v2/events?since=&kind=&limit=&cursor=
Global status-change feed (verified, partnered, community, discovery, vanity, clan tag, verification level, ...), newest first. since is an ISO 8601 date or timestamp (2015 onward, UTC offset within 14:00; no zone means UTC); kind is one event kind such as verified_gained, partnered_lost, verification_raised or icon_changed (an unknown kind returns 400 listing the valid ones); limit 1-500 (default 100). icon_changed events are left out unless you ask for kind=icon_changed. Add &format=csv for CSV (id,ts,guild_id,guild_name,kind,label,detail,url).
GET /api/v2/movers?dir=up|down&limit=
Biggest 7-day member-count gainers (up) or losers (down), from the precomputed movers table (refreshed every few hours). limit 1-100 (default 50). Not paginated.

Envelope. JSON responses are { "data": …, "next_cursor": string|null, "meta": { "api": "v2", "generated_at", "source", "docs" } }. Errors are { "error": { "code", "message" } } with a matching HTTP status (400 bad parameter or cursor, 404 unknown server, 429 rate limited, 503 temporarily unavailable).

Pagination. Pass the previous response's next_cursor as ?cursor= with the same other parameters to get the next page; null means you have the last page. Cursors are opaque and bound to the filters that issued them (sort, tag and min_members for servers; since and kind for events): changing a filter and reusing a cursor returns 400 bad_cursor. limit and format may change between pages. For CSV, the cursor is in the X-Next-Cursor response header (and a Link: rel="next" header).

Rate limit. 60 requests per minute per client IP, with a burst of 30. Every v2 response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (unix seconds); over the limit you get a 429 with Retry-After (seconds). Responses are CORS-open (Access-Control-Allow-Origin: *) and cacheable for a few minutes, so please cache on your side too.

Example: curl "https://guildregister.com/api/v2/servers?sort=online&limit=100", then curl "https://guildregister.com/api/v2/servers?sort=online&limit=100&cursor=<next_cursor>".

Embeddable badge

GET /badge/{id}.svg
A live SVG badge (members + legitimacy score, coloured by health) you can drop on your site.

example badge  <img src="https://guildregister.com/badge/<id>.svg">

RSS

GET /feed/{category}
RSS of servers recently added to a category, e.g. /feed/anime.

Sitemap & AI

GET /sitemap.xml · /llms.txt · /llms-full.txt
Sitemap index and machine-readable site guidance for crawlers and LLMs.

Counts are Discord's own approximate figures, measured over time. Not affiliated with Discord.