← Blog

How to Search Reddit by Keyword with an API

By Nikhil Kumar. Last updated August 2026.

Reddit’s own search bar is famously bad. The API version is the same search, with a hard cap most people find out about the wrong way.

To search Reddit by keyword with an API, you call a search endpoint with your query and read the matching posts back as JSON. The official route is PRAW’s subreddit.search() or a site-wide search on r/all; a third-party data API gives you a /reddit/search endpoint instead. Both hit Reddit’s real constraint: a single query returns at most about 1,000 results, so anything bigger means time-slicing.

How to search Reddit by keyword with an API: one query, the 1,000-result cap, and how to get past it.

This is the third post in the Reddit set, after what the API costs and how to scrape Reddit. This one is about finding the right posts, not pulling all of them.

How do you search Reddit by keyword with an API?

You send a keyword to a search endpoint and get matching posts back. With Reddit’s official API you use PRAW: reddit.subreddit("all").search("your keyword") searches the whole site, and reddit.subreddit("python").search(...) scopes it to one community. With a data API, you send the keyword to a /reddit/search endpoint and read a JSON array. Both let you sort and filter by time; both stop at roughly 1,000 results per query.

“reddit search api” and “reddit api search” each pull about 140 US searches a month, according to DataforSEO keyword data pulled in August 2026. Most of the people searching want brand mentions, lead signals, or research data, and they want more than 1,000 rows.

Bar chart of monthly US searches: reddit api 5,400; reddit search api 140; reddit api search 140. Search is a small slice of the larger cluster.
Keyword search is a small but distinct slice of the reddit api cluster. Source: DataforSEO, August 2026.

Reddit caps any single search at about 1,000 results, because its listing pagination stops after 10 pages of 100 items. Once you page 1,000 results deep, the after token runs out and the listing ends, no matter how many real matches exist. This is the single most important fact about searching Reddit, and the one most tutorials skip. It is a hard cap, not a rate limit you can wait out.

This is not a rumor. PRAW’s own documentation says you get at most 1,000 results from any listing, returned 100 at a time, and calls it an upstream Reddit limit with no workaround in the library.

Reddit search cap: pages of 100 results, up to page 10, then the listing ends at about 1,000 results regardless of how many real matches exist.
Reddit's listing wall. Search ends at ~1,000 results, then stops.

The trap is that a broad query looks like it is returning everything. You get a thousand rows, the loop ends cleanly, and you assume that was all of it. It was just the cap doing its job.

The way around it is time-slicing, which I cover below. No parameter lifts it.

How do you search Reddit with PRAW?

PRAW is the official Python wrapper, and its search() method is the correct official way to query by keyword. You call .search() on a subreddit or on r/all, pass the query, and choose a sort and a time window. It respects Reddit’s rate limits automatically and returns submission objects you iterate.

import praw
reddit = praw.Reddit(client_id="...", client_secret="...",
user_agent="my-app/1.0 by u/you")
for post in reddit.subreddit("all").search("your keyword", sort="new",
time_filter="week", limit=1000):
print(post.title, post.subreddit, post.created_utc)

The PRAW docs list the sort options: relevance, hot, top, new, and comments. The time_filter accepts hour, day, week, month, year, and all. Sort and time are the only real levers you get, and they are how you slice past the cap.

The two levers on a Reddit keyword search: sort by relevance, hot, top, new, or comments; and a time filter of hour, day, week, month, year, or all.
The only two controls Reddit search gives you. Time is how you slice past 1,000.

PRAW search is strong for recent content and weak for old content. Reddit’s index favors the last few weeks, so a time_filter="all" relevance search still misses most of the deep history.

How do you search Reddit comments by keyword?

Reddit’s native search barely touches comment bodies, so keyword search across comments is unreliable on the official API. Search matches post titles and self-text well, but a comment that mentions your keyword rarely surfaces unless the post does too. To search comments directly, you either pull every comment from candidate posts and filter them yourself, or you query an archive index that stores comment text.

The archive route is PullPush, the community-run successor to Pushshift. It exposes /reddit/search/comment/ with q, subreddit, before, and after parameters, so you can search comment text across time.

The self-filter route is simpler but noisier: search for posts, pull each post’s comments, and grep the comment text locally. It works, but you pay for every comment you fetch and discard.

How do you search old Reddit posts?

Deep historical search needs an archive, because Reddit’s live search caps at 1,000 and skews recent. When Pushshift lost public access in 2023, the research community rebuilt it as PullPush, which indexes submissions and comments with date-range parameters. It is the practical way to search Reddit content from years ago by keyword.

PullPush is free and community-maintained, which means no uptime guarantee. For a one-time historical study, it is the right tool. For a production feature, plan for it to be flaky and cache aggressively.

Reddit’s own API will not do this. A time_filter="all" search still bottoms out at the 1,000-result cap, so it is fine for “what’s been said this month” and useless for “everything ever said.”

How do you get past the 1,000-result cap?

You split one query into many by time window, then merge and dedupe. Instead of one search that dies at 1,000, you run a search per day or per week using the before and after bounds, collect up to 1,000 from each slice, and stitch the slices together. A busy keyword that returns 1,000 in a week can return tens of thousands across a year of weekly slices.

Two lanes: recent live search via PRAW or a data API for the last weeks, capped at 1,000 per query; historical via a time-sliced archive like PullPush for deep coverage.
Recent versus historical. Live search for now, time-sliced archive for the backlog.

The mechanics are the same whichever tool you use:

  1. Pick a slice size small enough that no single window exceeds 1,000 matches.
  2. Search each window with before and after set to its bounds.
  3. Merge and dedupe by post id, because windows overlap at the edges.
  4. Store as you go, so a failed run resumes instead of restarting.

This is tedious and it is the only thing that works. No API removes Reddit’s per-query cap; they just make the slicing loop easier to run.

How do you search Reddit through a data API?

You send your keyword to one endpoint and get paginated results without OAuth or rate-limit code. A data API wraps Reddit’s search, handles the authentication and throttling, and returns a clean JSON array on the same request shape as every other call. You still live under Reddit’s 1,000-per-query cap, but the auth, retries, and pagination are handled for you.

With ScraperSocial, keyword search is one call:

Data API search flow: send a keyword to /reddit/search, the service handles OAuth, rate limits, and pagination, and returns a clean JSON array of matching posts.
Keyword in, matching posts out. The service owns the auth and the paging.
import requests
r = requests.get(
"https://api.scrapersocial.com/v1/reddit/search",
params={"query": "your keyword", "limit": 100},
headers={"Authorization": "Bearer sk_live_..."},
)
print(r.json()["data"])

Search results are 2 credits each. Credits are $0.005 on the monthly plan and $0.0045 on annual, so a result is about a cent, and the 100 free signup credits cover roughly 50 to test with. For depth past 1,000, you still time-slice, but you do it with one endpoint instead of an OAuth app.

How do you monitor Reddit for keyword mentions?

You run a keyword search on a schedule and alert on anything new. Poll the search endpoint every few minutes, sort by new, and compare each result’s id against the ones you have already seen. Anything unseen is a fresh mention worth a notification. This is exactly what brand-monitoring tools like F5Bot do under the hood, and it is a small loop once the search itself is handled.

JobReddit’s own APIData API
Search one keywordPRAW search(), OAuth app/reddit/search, API key
Result cap per query~1,000~1,000 (same cap)
Comment full-textWeakWeak (use an archive)
Historical depthNoTime-slice or archive
EffortOAuth + rate limitsOne call

The honest summary: for live keyword search and monitoring, either route works and a data API is less setup. For everything ever posted, you need an archive, and you accept it is best-effort.

Start with one keyword and one week

Run a single keyword through search with time_filter="week" and see how close you get to 1,000 results. If you hit the cap, that keyword needs time-slicing; if you do not, a plain search covers you. Either way, decide up front whether you need recent mentions or the full history, because the tool is different for each.

Frequently asked questions

How do I search Reddit by keyword?

Call a search endpoint with your keyword. Reddit’s official API exposes search through PRAW’s subreddit.search() or a site-wide search on r/all, and third-party data APIs expose a /reddit/search endpoint you hit with a query string. Both return matching posts as JSON. Reddit caps any single query at about 1,000 results, so plan to time-slice for more.

What is the limit on Reddit search?

Reddit caps any listing, including search, at roughly 1,000 items per query, because pagination stops after 10 pages of 100. There is no way to page past it on a single query. To collect more than 1,000 matches you split the search into time windows with the time filter and merge the results, or pull from an archive index.

How do I search Reddit comments by keyword?

Reddit’s native search mostly matches post titles and body text, not comment bodies, so keyword search across comments is weak on the official API. For comment-level full-text search you use an archive index like PullPush, the community successor to Pushshift, or you pull comments per post and filter them yourself after fetching.

How do I search old Reddit posts?

Reddit’s live search skews to recent content and caps at 1,000 results, so deep historical search needs an archive. PullPush (pullpush.io) rebuilt Pushshift’s index and exposes submission and comment search with before and after date parameters. It is community-run with no SLA, so treat it as best-effort for historical pulls.

How do I monitor Reddit for keyword mentions?

Run a keyword search on a schedule and diff the new results against what you have seen. Poll the search endpoint every few minutes, sort by new, and alert on anything unseen. Tools like F5Bot do exactly this. A data API removes the OAuth and rate-limit work so your monitor is a small loop, not an infrastructure project.

Is there a free Reddit search API?

Reddit’s own API has a free tier of 100 queries per minute with OAuth, which covers small search jobs. PullPush is free for historical search with no SLA. Managed data APIs are paid but bill per result. For a hobby monitor, Reddit’s free tier plus PRAW is the cheapest official route; for hands-off search at scale, a data API is less work.

Keep reading

Try it on your own URLs

100 trial credits on signup, no card. Enough to run a real batch before you decide.