Reddit Search Scraper API
Send a keyword query and our Reddit search API returns the matching results, posts pulled from across subreddits or scoped to one, as a clean ordered JSON list with sort and time filters.
Why Reddit Search data is hard to collect
Reaching Reddit search through the Data API means registering an OAuth app and staying inside the 100-queries-per-minute free ceiling Reddit set when it started charging on July 1, 2023, then billing $0.24 per 1,000 calls above it. The old shortcut of querying search.json is OAuth-gated and 403s for unauthenticated automated traffic, and Reddit's listing surface stops paginating at 1,000 results per query no matter how you sort it.
Call the Reddit Search Scraper API in one request
curl "https://api.redditscraperapi.com/api/v1/reddit/search?q=best%20mechanical%20keyboard&sort=top&t=year&limit=25&api_key=$API_KEY" import requests
resp = requests.get(
"https://api.redditscraperapi.com/api/v1/reddit/search",
params={
"q": "best mechanical keyboard",
"sort": "top",
"t": "year",
"limit": 25,
"api_key": "YOUR_API_KEY",
},
)
data = resp.json()
print(data["total_results"], "results for", data["query"])
for r in data["results"]:
print(f"{r['position']}. r/{r['subreddit']} - {r['title']}")
print(" ", r["permalink"]) Parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
q | required | - | The search query. Reddit's own query operators work, so terms like author:name, subreddit:name, self:yes, or a quoted phrase narrow the match. |
subreddit | optional | - | Restrict the search to one subreddit, without the leading r/. Omit it to search across all of Reddit. |
sort | optional | relevance | Result order: relevance, hot, top, new, or comments. Controls which posts come back first for the query. |
t | optional | - | Time window for the top, comments, and relevance sorts: hour, day, week, month, year, or all. Leave empty for the default window. |
limit | optional | 25 | How many results to return, from 1 to 25. The search feed caps a single request at 25 entries. |
Fields the Reddit Search Scraper API returns
{
"query": "best mechanical keyboard",
"subreddit": null,
"sort": "top",
"t": "year",
"total_results": 25,
"results": [
{
"position": 1,
"id": "t3_1a8b2cd",
"short_id": "1a8b2cd",
"result_type": "post",
"title": "What is the best mechanical keyboard you have owned?",
"author": "keeb_collector",
"author_url": "https://www.reddit.com/user/keeb_collector",
"subreddit": "MechanicalKeyboards",
"permalink": "https://www.reddit.com/r/MechanicalKeyboards/comments/1a8b2cd/",
"external_url": null,
"created": "2026-02-14T09:31:55+00:00",
"score": null,
"num_comments": null
},
{
"position": 2,
"id": "t3_19f4xy7",
"short_id": "19f4xy7",
"result_type": "post",
"title": "Budget board recommendations under $100?",
"author": "newtypist",
"author_url": "https://www.reddit.com/user/newtypist",
"subreddit": "budgetkeebs",
"permalink": "https://www.reddit.com/r/budgetkeebs/comments/19f4xy7/",
"external_url": null,
"created": "2026-01-28T17:04:12+00:00",
"score": null,
"num_comments": null
}
],
"_source": "rss"
} | Field | Type | Description |
|---|---|---|
query | string | The query you searched for, echoed back. |
subreddit | string or null | The subreddit the search was scoped to, or null for a site-wide search. |
sort | string | The sort order applied to the results (relevance, hot, top, new, or comments). |
t | string or null | The time window applied, or null when none was set. |
total_results | integer | How many results are in the results array for this request. |
results | array | The matching entries in ranked order, each with the fields below. |
results[].position | integer | 1-based rank of the result within this response. |
results[].id | string | Reddit fullname of the result, for example t3_1a8b2cd for a post. |
results[].short_id | string | The base-36 id without the type prefix, ready to pass to the post endpoint. |
results[].result_type | string | What the entry is: post, comment, or subreddit. |
results[].title | string | The result's title or, for a comment, its heading line. |
results[].author | string | Username of the post or comment author. |
results[].author_url | string (url) | Absolute link to the author's Reddit profile. |
results[].subreddit | string | The subreddit the result lives in, without the r/ prefix. |
results[].permalink | string (url) | Absolute www.reddit.com link to the result. |
results[].external_url | string or null | The outbound link for a link post, or null when the result points back to Reddit. |
results[].created | string or null | ISO-8601 timestamp of when the result was posted. |
What you can build with it
Keyword and brand monitoring
Lead and question discovery
Topic and trend research
Seed lists for deeper scraping
Market and competitor listening
Content and SEO ideation
Why developers pick our Reddit Search Scraper API
Our Reddit search API runs the proxied fetch, anti-bot handling, and parsing on our infrastructure, then returns the search feed as a ranked JSON array with each result's id, title, author, subreddit, permalink, and timestamp already extracted. One query goes in and the matching results come back in about 2.6 seconds, with no OAuth app to register and a free tier of 1,000 requests.
No OAuth app of your own
Sort and time filters
Site-wide or single subreddit
Anti-bot and proxy rotation
Chains into the post endpoint
Reddit Search Scraper API compared to the official Reddit API
| Factor | Our Reddit search API | DIY search.json scraping | Reddit Data API |
|---|---|---|---|
| Setup | One api_key | Proxies, headers, parser, retries | Registered OAuth app plus token |
| Rate limit | Plan request limit only | None, but you absorb the blocks | 100 queries per minute, OAuth-gated |
| Unauthenticated access | Not your problem | search.json 403s for automated traffic | OAuth required on every call |
| Query controls | sort, t window, subreddit scope | You build the query string | Same controls, behind OAuth |
| Result shape | Ranked flat JSON array | Whatever you parse from HTML | Nested Listing JSON |
| Anti-bot and proxies | Handled for you | You build and maintain it | Not applicable inside the API |
| Per-result vote counts | Null on the search feed | Null unless you refetch each post | Included while quota lasts |
Free to start, priced to scale
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
Send your keyword query in the q parameter to our reddit/search endpoint with your api_key. The response is a results array in ranked order, where each entry carries the post id, title, author, subreddit, permalink, and created timestamp. You can add sort and a time window to shape the results, and you do not register a Reddit OAuth app or run scraping infrastructure of your own.
No. Searching through Reddit's Data API means registering an OAuth app, and its free tier holds you to 100 queries per minute per client id, the ceiling Reddit put in place alongside the $0.24-per-1,000-calls charge that took effect on July 1, 2023. Our endpoint runs the query and parses the feed for you behind a single api_key, so there is no app to register and no client secret to rotate. You get 1,000 requests on the free plan to try it.
Yes. Pass sort as relevance, hot, top, new, or comments to set the result order, and t as hour, day, week, month, year, or all to set the time window for the top, comments, and relevance sorts. To search inside one community, set subreddit to its name without the r/ prefix; leave it empty to search across all of Reddit.
The search feed Reddit exposes does not carry vote or comment counts, so we return score and num_comments as null and leave it honest. When you need the real score, upvote ratio, and comment count for a result, take its short_id and call our reddit/post endpoint, which reads those numbers from Reddit's live markup. We never fabricate counts a surface does not provide.
A single request returns up to 25 results, set with the limit parameter. Reddit's own search stops paginating at roughly 1,000 results for any one query no matter how you sort or page it, so deep historical coverage comes from running tighter queries: narrow the wording, scope to a subreddit, or split a broad term across time windows with the t parameter.
Yes. Call the endpoint with the requests library, read resp.json(), and loop over data['results']. Each item gives you the title, author, subreddit, and permalink, so a few lines print or store the whole result set. The quickstart above is a complete working Python example, and any language that can make an HTTP GET request works the same way.