Reddit search API: search posts and comments by keyword
How the Reddit search API works: operators, sort and time filters, searching within a subreddit, comment search and cursor pagination, with tested examples.
Piyushh · October 14, 2026 · 6 min read
The Reddit search API finds posts by keyword, either across all of Reddit or inside one subreddit. Reddit's official endpoint is GET /search (or /r/{subreddit}/search). It takes q, sort, t, restrict_sr, limit and after parameters and needs an approved OAuth app. Reddit's public API has no comment search at all. This guide covers the search syntax that works (we tested it on October 14, 2026), sort and time filters, subreddit search, comment search and pagination, with working calls you can copy.
For the wider picture (OAuth, rate limits, comment trees), start with our Reddit API guide. This post covers search only, in depth.
What the Reddit search API does
Reddit's API reference documents one endpoint for searching posts. It takes:
| Parameter | What it does |
|---|---|
q | The query, up to 512 characters, with operators |
sort | relevance, hot, top, new or comments |
t | Time window: hour, day, week, month, year or all |
restrict_sr | With /r/{subreddit}/search, keeps results inside that subreddit |
limit, after | Page size (up to 100) and the fullname of the last item seen |
Calling it requires an OAuth token, and since November 2025 getting one means Reddit's explicit approval. Reddit stops accepting new public API requests on October 31, 2026. Our guide to getting a Reddit API key walks through that process.
ChatterAPI exposes the same search as GET /v1/reddit/search, and you don't need a Reddit developer account. It is independent and not affiliated with Reddit:
curl "https://api.chatterapi.com/v1/reddit/search?q=best+crm+for+small+business&sort=relevance&time=year" \
-H "Authorization: Bearer $CHATTERAPI_KEY"
{
"data": [
{
"id": "1wdihhj",
"fullname": "t3_1wdihhj",
"title": "What CRM should a small business use?",
"author": "NotedWhisky",
"subreddit": "CRM",
"score": 51,
"numComments": 186,
"createdAt": "2026-09-11T14:52:16.000Z",
"url": "https://www.reddit.com/r/CRM/comments/1wdihhj/what_crm_should_a_small_business_use/"
},
{
"id": "1vmy4xb",
"fullname": "t3_1vmy4xb",
"title": "If You Had to Pick the Best CRM for Small Business Today, What Would It Be?",
"author": "Living_Dependent242",
"subreddit": "CRMSoftware",
"score": 10,
"numComments": 56,
"createdAt": "2026-08-13T02:25:31.000Z",
"url": "https://www.reddit.com/r/CRMSoftware/comments/1vmy4xb/if_you_had_to_pick_the_best_crm_for_small/"
}
],
"page": { "nextCursor": "AX-vad045wfn…", "hasMore": true },
"credits": { "charged": 0, "remaining": 719 }
}
That response is a recorded sample from a test key, trimmed to two posts. Test keys return one real response per endpoint at no cost. On a live key, each page of up to 25 posts costs 2 credits. The parameters are q, subreddit, sort (relevance, new, hot, top, comments), time (hour through all), limit and cursor.
Reddit search operators that work
Reddit's search syntax goes inside q, in both the official API and ChatterAPI. Old help pages repeat the same lists, so on October 14, 2026 we ran each operator against Reddit's search and checked the first 25 results.
| Query | What we checked | Result |
|---|---|---|
"reddit scraper" | Posts containing the exact phrase | 25 of 25 |
reddit scraper (no quotes) | Same check | 5 of 25 |
praw author:bboe | Every result by u/bboe | Yes, all 25 |
scraper subreddit:webscraping | Every result in r/webscraping | Yes, all 10 |
scraper NOT python (in r/webscraping) | Results mentioning "python" | 0 of 25 |
praw self:no (in r/redditdev) | Link posts only | All 21 were link posts |
praw OR asyncpraw (in r/redditdev) | Results match either term | Yes |
title:praw | PRAW posts | Mostly Polish posts, where "praw" means "rights" |
Three takeaways:
Quote your phrases. Without quotes, Reddit matches the words anywhere and leans on popularity. The unquoted reddit scraper search opened with two copies of a news story about a scraper's court win, and the first six results included a crypto thread and a mushroom gummy recipe. With quotes, every result was about Reddit scrapers.
Field operators are reliable. author:, subreddit:, self: and NOT all filtered exactly as expected.
Words collide across languages and topics. title:praw did what it says and still returned posts from r/Polska. When your term is short, add a subreddit or a second keyword.
Sort and time filters
sort decides the order and time (t in Reddit's API) decides the window. The two interact more than most docs admit.
sort=relevance (the default) ranks by text match, while sort=top ranks by score inside the time window. For research and monitoring, use relevance or new, because top favours popular posts over on-topic ones.
We saw this directly. For the unquoted query reddit scraper with time=year, sort=top returned a mushroom gummy recipe, an archaeology post and a free cookie giveaway in its first eight results. Those posts had thousands of upvotes and happened to contain both words somewhere. sort=relevance with the same window was noisy too, but it put the r/webscraping post about an open-source Reddit scraper at position seven. Quoting the phrase fixed both.
Relevance doesn't stay the same over time either. In July 2025, an r/redditdev user reported that sort=relevance "seems to have changed": searches for cheese recommendations started returning "pizza with anchovies, just because those posts mention cheese." In 2021, another poster asked how relevance works and was told "Search just looks for text in titles or body text". Treat relevance as a text match rather than a semantic one, and filter on your side.
For monitoring, use sort=new. It returns the freshest posts first, so you can stop paging once you hit something you've already seen.
How to search within a subreddit
You can search within a subreddit three ways, depending on where you are:
- On reddit.com, open the subreddit and use its search box, or type
subreddit:SaaS your keywordsin the main search. - In Reddit's API, call
GET /r/SaaS/search?q=...&restrict_sr=1. Withoutrestrict_sr, that path searches all of Reddit. - In ChatterAPI, add
subreddit=SaaS.
curl "https://api.chatterapi.com/v1/reddit/search?q=%22cold+email%22&subreddit=SaaS&sort=new" \
-H "Authorization: Bearer $CHATTERAPI_KEY"
To browse a subreddit's feed without a keyword (hot, new, top this week), use GET /v1/reddit/subreddits/{name}/posts instead. The free subreddit posts tool does the same in a browser.
Searching comments
This is the biggest gap in Reddit's official search. The public API searches posts only. When someone in r/redditdev asked for a way to search all comments containing a word, the top answer was "Comment search isn't currently supported on Reddit's public API". Reddit's website does have comment search, and in 2025 u/Lil_SpazJoekp explained that "Comment search is locked behind graphql so even if you reverse engineer it, third party clients won't be able to utilize it."
Comments are where people recommend tools and complain about them, so this gap matters. ChatterAPI has a separate endpoint for comment search, GET /v1/reddit/comments/search:
curl "https://api.chatterapi.com/v1/reddit/comments/search?q=gummysearch+alternative&sort=new" \
-H "Authorization: Bearer $CHATTERAPI_KEY"
{
"data": [
{
"fullname": "t1_l2el6m4",
"postId": "1cjab4x",
"postTitle": "How to run developer market research quickly (no product/users/audience needed)?",
"author": "its_Brad",
"body": "https://gummysearch.com/ is a good tool for doing this kind of research. Can also be combined with https://www.notikey.com/ for monitoring...",
"score": 1,
"subreddit": "SaaS",
"createdAt": "2024-05-03T14:47:30.000Z"
}
],
"page": { "nextCursor": "AUodzdFc2SUt…", "hasMore": true },
"credits": { "charged": 0, "remaining": 719 }
}
This is also a recorded test-key sample, trimmed. Comment search takes q, sort (relevance, new or top), author, limit and cursor, and costs 2 credits per page. Comments have no time filter. For monitoring, use sort=new and stop paging once results are older than you need. The free Reddit comment search tool runs the same query in a browser.
Pagination with cursors
Reddit's API paginates with after. You pass the fullname of the last item (t3_...) to get the next page. Developers have reported for years that listings stop at around 1,000 items; this 2023 r/redditdev thread about saved items is one example. Reddit doesn't document the cap, so treat it as reported behaviour, and narrow your query or time window rather than paging forever.
ChatterAPI uses an opaque cursor. Every list response includes page.nextCursor and page.hasMore. Pass nextCursor back as cursor and stop when hasMore is false. Don't parse or build cursors yourself. They're encrypted and look like "AX-vad045wfn…". Dedupe on fullname, since a post can move between pages while you're paging through them.
A keyword monitor in 30 lines
The monitor below checks new comments that mention your keyword and prints anything it hasn't seen. It stops paging once it reaches items it already knows:
import json
import os
import pathlib
import requests
BASE = "https://api.chatterapi.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['CHATTERAPI_KEY']}"}
SEEN = pathlib.Path("seen.json")
seen = set(json.loads(SEEN.read_text())) if SEEN.exists() else set()
def new_comments(query, max_pages=4):
cursor = None
for _ in range(max_pages):
params = {"q": query, "sort": "new"}
if cursor:
params["cursor"] = cursor
r = requests.get(f"{BASE}/reddit/comments/search", headers=HEADERS, params=params, timeout=30)
r.raise_for_status()
body = r.json()
fresh = [c for c in body["data"] if c["fullname"] not in seen]
yield from fresh
if len(fresh) < len(body["data"]) or not body["page"]["hasMore"]:
return # reached comments we already have
cursor = body["page"]["nextCursor"]
for c in new_comments('"gummysearch alternative"'):
seen.add(c["fullname"])
print(f'r/{c["subreddit"]} u/{c["author"]}: {c["body"][:120]}\n {c["url"]}')
SEEN.write_text(json.dumps(sorted(seen)))
Run it on a schedule. Polling one query every 15 minutes, one page per run, comes to 96 calls a day, or 192 credits. For posts, swap the path to /reddit/search and keep sort=new. GET /v1/mentions combines post search, comment search and X search, so you can watch Reddit and X in one call. Agents can call the same endpoints as reddit_search and reddit_search_comments on the MCP server at https://api.chatterapi.com/mcp.
Search Reddit from your code today
Start with a quoted phrase, sort=new and one subreddit, then widen from there. Sign up with Google for 100 free credits, enough for 50 search pages, with no card required. Plans start at $19 a month for 25,000 credits. Once search finds the threads you want, how to export Reddit comments covers pulling them in full.