Search Subreddits and Communities by Topic
Search subreddits by name or topic, the Communities tab on reddit.com. Verified to match Reddit's UI rank order for SFW and NSFW queries, with pagination.
/api/reddit/search/communities$0.002 / callSearch subreddits. Mirrors the "Communities" tab on reddit.com search with the same rank order.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query |
nsfw | boolean | No | true to include NSFW communities |
limit | number | No | Number of communities to return, 1-100 (default 25) |
after | string | No | Pagination cursor. Pass back the after value from the previous response exactly as issued; it is opaque and carries your paging depth. See Pagination depth. |
Example
curl -H "Authorization: Bearer $TOKEN" \
"https://api.redditapis.com/api/reddit/search/communities?q=twitter"const response = await fetch(
"https://api.redditapis.com/api/reddit/search/communities?q=twitter",
{ headers: { Authorization: "Bearer TOKEN" } }
);import requests
response = requests.get(
"https://api.redditapis.com/api/reddit/search/communities",
params={"q": "twitter"},
headers={"Authorization": "Bearer TOKEN"},
)Response Shape
{
"communities": [
{
"name": "Twitter",
"display_name_prefixed": "r/Twitter",
"id": "2qh53",
"fullname": "t5_2qh53",
"title": "Twitter",
"public_description": "An unofficial Twitter subreddit...",
"description": "Full sidebar markdown here, or null.",
"subscribers": 1394851,
"url": "https://reddit.com/r/Twitter/",
"icon": "https://styles.redditmedia.com/t5_.../communityIcon_....jpg",
"banner_img": "https://styles.redditmedia.com/t5_.../bannerBackgroundImage_....png",
"subreddit_type": "public",
"lang": "en",
"quarantine": false,
"over_18": false,
"created_utc": 1205497696,
"created": "2008-03-14T12:34:56.000Z"
}
],
"after": "t5_xyz"
}Response Fields
| Field | Type | Notes |
|---|---|---|
name | string | Subreddit name (no r/ prefix) |
display_name_prefixed | string | e.g. r/Twitter |
id | string | Subreddit id without prefix |
fullname | string | t5_ prefixed id |
title | string | Display title |
public_description | string | null | Short one-line community blurb (shown in search results) |
description | string | null | Long-form sidebar markdown. null if the sub didn't set one. |
subscribers | number | Member count |
url | string | Full reddit.com URL |
icon | string | null | Community icon URL |
banner_img | string | null | Community banner background image URL |
subreddit_type | string | "public", "private", "restricted", etc. |
lang | string | null | Two-letter language code |
quarantine | boolean | True if Reddit has quarantined the sub |
over_18 | boolean | NSFW flag |
created_utc | number | Unix epoch seconds |
created | string | ISO-8601 of created_utc |
When after comes back empty
An empty cursor means there is no next page to ask for. It does not always mean
you have every community: Reddit often stops serving a busy listing long before it
runs out. Paging r/all on 2026-08-14 stopped after 400 posts covering about a
minute of a feed that plainly holds more.
The response tells you which happened. When after is null it also carries
listing_status, which reads complete, truncated or unknown. Only
complete means you have everything; treat the other two as a partial answer
and widen your search rather than stopping. The full field list and what to do
about each answer is in Pagination depth.
Independent third-party API for developers and researchers. Not affiliated with, endorsed by, or sponsored by Reddit, Inc.
Deep Comment Search
Genuine Reddit comment search. Returns the actual comments whose body matches your query, with body, score, author and permalink, not the parent posts.
Search Media
Search Reddit posts that carry an image, video, or gallery, with a kind filter and direct media URLs. Includes the pre-filter count so you can page accurately.
