Reddit Search and Thread Scraper
Pricing
from $1.28 / 1,000 post rows
Reddit Search and Thread Scraper
Search Reddit by keyword and subreddit, read subreddits, or read threads with comments. One row per post and comment: title, text, author, subreddit, date, link, and the search term it matched. No login, no Reddit API key. CSV or Clay ready.
Pricing
from $1.28 / 1,000 post rows
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Search Reddit by keyword, read the newest posts of a subreddit, or read a thread with its comments. You get one flat row per post and, when you ask for them, one row per comment: title, text, author, subreddit, publish date, the post link, the outbound link of a link post, and the search term the post matched. Rows export to CSV or drop into a Clay table, a CRM import, or a monitoring sheet.
Features
- Keyword search, across Reddit or inside subreddits. Each search term runs across all of Reddit, or inside each subreddit you list, sorted by new, relevance, top, most comments, or hot, inside Reddit's own time window.
- Only posts that contain your term. On by default: a result is kept only when your search term is in the post's title or text, so results Reddit returns for other reasons are dropped and not charged. Turn it off to keep every result.
- Subreddit reads. List subreddits with no search term and get their newest, hot, top, or rising posts.
- Threads with comments. Paste thread URLs and get the post plus its top comments, with reply depth you choose. Or turn on Include comments to get the comments of every post a search finds.
- Date limit. Only posts from the last N days, by publish date.
- Only new results. On a schedule, a post or comment an earlier run returned for the same query is skipped and not charged, so each run returns what is new.
- One summary row per query. A free row per search, subreddit, or thread says how many posts Reddit returned, how many were delivered, and how many were skipped and why.
- Cost guards. Max posts per query, max comments per thread, and a max charge per run.
How Reddit is read
The actor reads Reddit's public feeds (RSS), the same pages any feed reader opens, through the Apify proxy. No Reddit account, no login, and no Reddit API key are used, and no other developer's actor is called. The proxy pool rotates the address on every request; a request the pool cannot get through is retried on residential addresses.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
search_terms | array | Keywords to search for. With subreddits, each term runs inside each subreddit | |
subreddits | array | Subreddits to search in, or to read when there is no search term | |
thread_urls | array | Thread URLs to read with their comments, up to 200 | |
sort | string | new | Search order: new, relevance, top, comments, hot |
subreddit_sort | string | new | Subreddit read order: new, hot, top, rising |
time_window | string | month | Reddit's time filter: hour, day, week, month, year, all |
since_days | number | Drop posts older than this many days | |
max_posts_per_query | number | 50 | Posts per search or subreddit, up to 1,000. Results without your term do not count |
require_term_match | true or false | true | Keep a search result only when the term is in its title or text |
include_comments | true or false | false | Also return the comments of every post found |
max_comments_per_thread | number | 25 | Comments per thread, top first, up to 500 |
comment_depth | number | 3 | Reply levels under each top level comment, 1 to 10 |
only_new | true or false | false | Skip posts and comments an earlier run returned for the same query (free) |
state_key | string | Name for the only new results memory | |
max_charge_usd | string | Stop before a charge that would pass this amount | |
proxy_mode | string | auto | auto or residential. A reliability setting; it does not change what you pay |
Give at least one of search_terms, subreddits, or thread_urls. Up to 50 searches per run (search terms times subreddits).
Output
| Field | Type | Example |
|---|---|---|
row_type | string | post, comment, query_summary, or run_summary |
query_type | string | search, subreddit, or thread |
query | string | cold email in r/sales |
subreddit | string | sales |
post_id | string | 1xhlf4x |
comment_id | string | nq2k3ab (comment rows) |
title | string | the post title (on a comment row, the title of its post) |
body | string | the post or comment text, plain text, up to 20,000 characters |
author | string | salesguy42 |
author_url | string | https://www.reddit.com/user/salesguy42/ |
post_url | string | link to the post |
comment_url | string | link to the comment (comment rows) |
link_url | string | the page a link post links to |
published_at | string | 2026-10-27T14:03:11+00:00 |
updated_at | string | when Reddit last updated the entry |
matched_terms | array | ["cold email"] (search rows) |
comments_read | number | comment rows that follow this post |
is_new | true or false | true with Only new results on |
posts_found, rows_delivered, skipped_seen, skipped_unmatched | number | query summary counts |
row_status | string | ok, no_results, no_change, partial, blocked, or error |
error_reason | string | why a summary row is not ok |
billable_events_json | string | {"post-row":1}, or {} for a free row |
scraped_at | string | when the row was written |
Reddit's public feeds do not carry upvote scores or comment counts, so the rows do not either. comments_read counts the comment rows this run read for a post.
Pricing
Pay per event. You pay for post rows, comment rows, and the run start. Summary rows, a refused input, search results without your term, and rows already delivered with Only new results on are free.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
post-row, one Reddit post | $0.0015 | $0.001425 | $0.00135 | $0.001275 |
comment-row, one Reddit comment | $0.0015 | $0.001425 | $0.00135 | $0.001275 |
apify-actor-start, once per run (one per GB of memory; the default 256 MB is one) | $0.003144 | $0.003144 | $0.003144 | $0.003144 |
Per 1,000 posts: $1.50 on the free plan, $1.28 on Gold.
Free plan cap: 1.50 USD of evaluation a month, about 1000 post or comment rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your max_charge_usd.
Mamba Labs pays the platform costs of your run, Apify proxy traffic included.
Usage examples
Apify Console or API.
{"search_terms": ["cold email", "lead generation agency"],"subreddits": ["sales", "startups"],"sort": "new","since_days": 7,"max_posts_per_query": 100}
Read the rows with GET https://api.apify.com/v2/datasets/{datasetId}/items.
A thread with its comments.
{"thread_urls": ["https://www.reddit.com/r/sales/comments/1abc23/is_cold_email_dead/"],"max_comments_per_thread": 100}
Clay. Run the actor from a Clay HTTP column or the Apify integration and map the flat columns. Number and on or off inputs are text fields, which is what Clay sends: numbers as text and true or false. A list input takes a JSON list, so put the column inside a one item list.
MCP. The Mamba Labs MCP server @mambalabsdev/mcp-reddit-search-thread-scraper exposes the tool search_reddit to Claude and other MCP clients.
Error handling
| Case | What you get |
|---|---|
| No search term, subreddit, or thread URL, or a value the actor cannot read | One free row, row_type run_summary, error_reason starting input_invalid: with what to fix. The run ends successfully and charges nothing but the run start |
| A subreddit that does not exist, is private, or is banned | A free summary row, row_status no_results, saying so |
| A thread that was removed or is in a private subreddit | A free summary row, row_status no_results |
| Reddit refuses a request | Retried on a new address, then on residential addresses; if every route refuses, a free summary row with row_status blocked |
| No new posts with Only new results on | A free summary row, row_status no_change |
| The run is close to its timeout | The actor stops starting new queries 90 seconds before the timeout and delivers what it has |
Limitations
- Upvote scores, comment counts, awards, and flair are not in Reddit's public feeds, so the rows do not carry them.
- The actor reads at most 10 pages of 100 results per query. A narrow term with a strict match can return fewer posts than Max posts per query; the summary row says how many results were read and how many were dropped.
- Posts in private subreddits are not in Reddit's public feeds, so they are not returned.
- A deleted author reads
[deleted], and a removed post's text is empty. - Comments come top first. Very long threads return the top comments up to Max comments per thread, not every reply.
Mamba Labs actor suite
MCP servers for the suite are published under the npm scope @mambalabsdev.
Built by Mamba Labs.