Reddit Leads Scraper
Pricing
from $1.40 / 1,000 post scanneds
Reddit Leads Scraper
Scan the newest posts in subreddits you choose for buying-intent leads. Returns title, snippet, author, post URL, matched phrases, a rule-based 0-100 intent score, hot/warm/cold tier and a reply angle. Reads about 25 posts per subreddit and feed, up to 20 subreddits. No login.
Pricing
from $1.40 / 1,000 post scanneds
Rating
0.0
(0)
Developer
Axiom Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Returns: one row per Reddit post with title, body, author, post_url, published_at, matched_keywords, intent_score and intent_tier.
Input: {"subreddits": ["SaaS", "https://www.reddit.com/r/smallbusiness/"], "keywords": ["CRM"], "maxAgeHours": 48, "excludeKeywords": ["hiring"]}
Best for: finding buying-intent threads for lead lists, monitoring subreddits for new leads on a schedule, and spotting product-comparison discussions.
{"post_id": "t3_1x4edkl","subreddit": "SaaS","title": "Founders with data in Stripe/CRM/other tools, do you actually know how to pull insight out of it, or does it just sit there?","author": "SnooOpinions1809","published_at": "2026-10-12T21:22:05+00:00","intent_score": 67,"intent_tier": "warm"}
What does Reddit Leads Scraper do?
Reddit Leads Scraper scans the newest posts in the subreddits you choose and returns posts that contain your keywords together with buying-intent wording such as asking for a recommendation, comparing tools, or weighing a purchase. Each Reddit post becomes one lead with an intent score from 0 to 100, a tier (hot, warm or cold), the phrases that matched, and a suggested reply angle.
The score_breakdown explains the ranking rather than hiding it behind an AI label. The optional postTypes filter focuses review on text discussions or other feed-supported formats. The body field keeps the available context beyond the short snippet, which helps manual review and downstream analysis.
What data can you get?
One dataset item is returned per matched Reddit post, highest intent score first.
| Field | Description | Example |
|---|---|---|
id | Stable post ID, same as post_id | t3_1wtsth5 |
sourceUrl | Post permalink the lead came from | https://www.reddit.com/r/smallbusiness/comments/1wtsth5/... |
post_id | Reddit post ID in the form t3_id | t3_1wtekx2 |
post_url | Permalink of the Reddit post | https://www.reddit.com/r/smallbusiness/comments/1wtekx2/... |
subreddit | Subreddit name without the r/ prefix | smallbusiness |
title | Post title | Looking for a CRM recommendation |
body | Complete cleaned text provided by the RSS feed, or null when empty; no additional page fetch | Looking for recommendations... |
snippet | First 300 characters of the post body as plain text | A delivery app refused our evidence... |
author | Reddit username without the u/ prefix (may be empty or [deleted]) | example_user |
published_at | ISO 8601 publish time | 2026-09-29T16:21:04+00:00 |
matched_keywords | Your keywords or built-in phrases that matched | ["CRM", "recommend"] |
matched_in | Where the match was found: title, body or both | ["title"] |
intent_score | Buying-intent score from 0 to 100 | 92 |
intent_tier | hot (70 and above), warm (40 to 69) or cold (below 40) | hot |
score_breakdown | Points per component: keyword_strength (max 45), recency (max 30), question_signal (max 15), author_heuristic (max 10), self_promo (0 or -30), total | {"keyword_strength": 45, "recency": 25, ...} |
suggested_reply_angle | An ethical outreach approach for this type of lead | Teach first, mention second... |
scraped_at | Time of the run that produced the lead | 2026-09-29T18:48:07+00:00 |
Reddit's RSS feeds carry no upvote or comment counts, so those are not part of the output.
How to use Reddit Leads Scraper
- Open Reddit Leads Scraper in Apify Console and go to the Input tab.
- Enter the subreddits to mine, for example
SaaSandsmallbusiness, without the r/ prefix. - Add your product or category keywords, for example
CRMoremail marketing tool. Leave built-in buying-intent phrases on if you also want generic signals. - Optionally set a minimum intent score, for example 40 to keep only warm and hot leads, and a maximum number of leads.
- Leave the proxy setting on the prefilled residential Apify Proxy and click Start.
- When the run finishes, open the Output tab, use the Leads overview, Outreach or Scoring view, and export the dataset as JSON, CSV or Excel.
Input
| Field | Type | Default / prefill | Description |
|---|---|---|---|
subreddits | array of strings | prefill ["SaaS", "smallbusiness", "Entrepreneur"] | Subreddit names or URLs, for example SaaS, r/SaaS or https://www.reddit.com/r/SaaS/. Max 20 per run. Each subreddit and feed scans about 25 of the newest posts. |
keywords | array of strings | prefill ["CRM", "software", "tool"] | Your product or category terms, matched against post titles and bodies. Optional if built-in phrases are on. |
useBuiltInIntentPhrases | boolean | true | Also match generic buying signals such as "looking for", "recommend", "alternative to" and "worth it". |
feeds | array of strings | prefill ["new"] | Listing feeds to scan per subreddit: new, hot, rising. Each extra feed scans about 25 more posts per subreddit and adds to the posts scanned. |
requireKeywordMatch | boolean | true | Only return posts that contain at least one of your keywords. Built-in buying-intent phrases then raise the score but never qualify a post alone. |
excludeKeywords | array of strings | [] | Skip posts whose title or body contains any of these words or phrases, for example "hiring" or "crypto". |
maxAgeHours | integer | empty | Only consider posts published within this many hours. Empty means no age limit. |
skipSeenPosts | boolean | false | When true, posts already returned in earlier runs are skipped (ids are kept in a named key-value store), so scheduled runs deliver only new leads. |
postTypes | array | [] | Keep only text, link, image or video posts. Empty keeps all. Classification is based on the feed link, not a detail page. Scanned posts still count toward billing. |
maxItems | integer 1 to 500 | omitted | Override maxResults with a shared lead limit across all subreddits and feeds. |
minScore | integer 0 to 100 | 0 | Only return leads scoring at least this. Use 40 for warm and hot leads only. |
maxResults | integer 1 to 500 | default 100, prefill 10 | Cap on leads returned per run, highest scores first. Billing is per post scanned (about 25 per subreddit per feed), not per lead returned, so this does not cap cost; fewer subreddits and feeds do. |
requestDelayMs | integer 500 to 10000 | default 2000, prefill 1500 | Delay between feed fetches in milliseconds. Reddit rate-limits aggressively, so keep it conservative. |
proxyConfiguration | object | prefill residential Apify Proxy | Proxy settings. Reddit blocks datacenter IPs, so the RESIDENTIAL group is recommended. |
subreddits is required and needs at least one valid name; an empty list stops the run immediately with a clear message.
Example input:
{"subreddits": ["SaaS", "smallbusiness", "Entrepreneur"],"keywords": ["CRM", "software", "tool"],"useBuiltInIntentPhrases": true,"feeds": ["new"],"requireKeywordMatch": true,"minScore": 0,"maxResults": 10,"requestDelayMs": 1500,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Output
Below is a real item extracted locally from the public r/SaaS feed on 2026-10-13. The snippet remains short; body contains the complete cleaned text supplied by that feed.
[{"id": "t3_1x4edkl","sourceUrl": "https://www.reddit.com/r/SaaS/comments/1x4edkl/founders_with_data_in_stripecrmother_tools_do_you/","post_id": "t3_1x4edkl","post_url": "https://www.reddit.com/r/SaaS/comments/1x4edkl/founders_with_data_in_stripecrmother_tools_do_you/","subreddit": "SaaS","title": "Founders with data in Stripe/CRM/other tools, do you actually know how to pull insight out of it, or does it just sit there?","snippet": "Genuine question, not a pitch. I’m trying to understand something before I build anything around it. I work with enterprise-scale data day to day (BI/analytics background), and I keep wondering if the same problem shows up at the early-stage level. You’ve got real data, like Stripe, a CRM, maybe a…","body": "Genuine question, not a pitch. I’m trying to understand something before I build anything around it. I work with enterprise-scale data day to day (BI/analytics background), and I keep wondering if the same problem shows up at the early-stage level. You’ve got real data, like Stripe, a CRM, maybe a spreadsheet or two, but no time, team, or know-how to actually turn it into something you’d act on. Not “we need a dashboard,” more like “we have the data and have no idea what it’s actually telling us.” Curious how common that actually is: Do you have data sitting in tools you know isn’t being used well? If so, is it a “haven’t gotten to it yet” problem, a “don’t know how” problem, or a “can’t justify the cost of a data person” problem? Would you ever pay someone to just look at what you’ve already got and tell you what matters? Not build you a tool, just read it and tell you. Not selling anything here. I’m trying to work out whether this is a real gap or something people already have covered another way.","author": "SnooOpinions1809","published_at": "2026-10-12T21:22:05+00:00","matched_keywords": ["tool","CRM"],"matched_in": ["body","title"],"intent_score": 67,"intent_tier": "warm","score_breakdown": {"keyword_strength": 20,"recency": 25,"question_signal": 15,"author_heuristic": 7,"self_promo": 0,"total": 67},"suggested_reply_angle": "Add value before mentioning anything of yours. Read the subreddit's self-promo rules first — most buying-intent subs ban undisclosed promotion.","scraped_at": "2026-10-13T00:06:18.745739+00:00","post_type": "text","external_url": null,"thumbnail_url": null,"updated_at": "2026-10-12T21:22:05+00:00"}]
Run statistics (posts_scanned, posts_matched, feeds_ok, feeds_failed, feeds_blocked, failures) are saved to the default key-value store under run-stats.
How much does it cost?
This existing Actor charges the post-scanned event per scanned post; consult the Pricing tab for the current terms. A returned lead is not a separate scan. The run stops at the available scan budget and reports the maximum cost limit instead of asking for a rating when that limit is reached. This billing contract is unchanged by the new body field or post-type filter.
Reddit Leads Scraper uses pay-per-event pricing and charges per post scanned, not per lead returned. Tighter keywords lower your lead count but not the number of posts scanned. The number of posts scanned is driven by how many subreddits and feeds you choose, at about 25 posts per feed.
Apify's free plan credit covers small runs, so you can try a few subreddits at no cost. See the Pricing tab of this Actor for the exact price per event on each plan. You are never charged for a run that scanned nothing, and the Actor stops scanning before it would exceed the maximum charge you set for the run. Apify Proxy traffic is billed separately by your Apify plan.
Use with AI agents (MCP)
Reddit Leads Scraper can be called by AI assistants such as Claude, ChatGPT and Cursor through the Apify MCP server at https://mcp.apify.com. The server exposes the tools search-actors and call-actor, and this Actor's typed input and output schemas let an agent fill in the fields and read the results without guessing.
To load this Actor directly, add it to your MCP client configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=axiomworks/reddit-lead-miner"}}}
Example prompts you can type into your agent:
"Find buying-intent Reddit posts in r/SaaS and r/smallbusiness that mention CRM and show me the five hottest leads." "Scan the newest posts in r/Entrepreneur for people asking for an alternative to a project management tool, and suggest how to reply." "Run Reddit Leads Scraper on r/webdev with minScore 40 and summarize what people are asking for."
Integrations and API
Run Reddit Leads Scraper from code. Set your Apify API token in the APIFY_TOKEN environment variable.
Python:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("axiomworks/reddit-lead-miner").call(run_input={"subreddits": ["SaaS", "smallbusiness"],"keywords": ["CRM"],"minScore": 40,"maxResults": 20,})for lead in client.dataset(run["defaultDatasetId"]).iterate_items():print(lead["intent_score"], lead["title"], lead["post_url"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('axiomworks/reddit-lead-miner').call({subreddits: ['SaaS', 'smallbusiness'],keywords: ['CRM'],minScore: 40,maxResults: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();process.stdout.write(JSON.stringify(items, null, 2));
cURL:
curl -X POST "https://api.apify.com/v2/acts/axiomworks~reddit-lead-miner/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"subreddits": ["SaaS", "smallbusiness"], "keywords": ["CRM"], "maxResults": 20}'
Connect Reddit Leads Scraper to Zapier, Make, n8n, Google Sheets, Slack and other tools through Apify integrations, or use webhooks to trigger your own workflow when a run finishes. Schedule it every few hours in Apify Console to keep a steady stream of fresh leads.
FAQ
How do I focus on discussion posts?
Set postTypes to ["text"]. Leave it empty to retain all supported types. This narrows the returned leads after scanning; it does not reduce the number of posts fetched or billed. Image, video and link types are inferred from feed URLs. The body is the text Reddit supplies in the RSS feed, which may be empty or incomplete; the Actor does not visit linked websites or fetch comments to fill it.
What happens when a feed is blocked?
Each feed has a bounded deadline including queueing and retries. Failed feeds are recorded in run-stats while other feeds continue. If none is accessible, the run ends successfully with no dataset rows and a message explaining which target or proxy setting to change. A missing required subreddit input still fails validation.
Do I need a proxy to scrape Reddit? Reddit can block direct connections. Apify Proxy is prefilled with RESIDENTIAL and defaults to it on Apify when omitted. Failed feeds are skipped; no posts scanned means no scan events charged.
How far back does it look? Each feed returns roughly the 25 newest posts, so this is a fresh-intent radar and not a historical search. Schedule it, for example every few hours, to keep coverage and catch new posts while they are still actionable.
Why did I get no leads?
Lower the minimum intent score, add more keywords, or turn on the built-in buying-intent phrases. Also check the run-stats record in the key-value store to confirm feeds were fetched.
Why are some subreddits skipped?
Private, banned or misspelled subreddits return HTTP 403 or 404. They are logged in run-stats and the run continues with the rest.
Why no upvotes or comment counts? Reddit's RSS feeds do not include them, so engagement is not scored. Recency stands in for how actionable a lead is.
Does it contact anyone? No. Outreach is your job. Read each subreddit's self-promotion rules first, because undisclosed promotion can get accounts banned.
Is it legal to scrape Reddit?
This Actor reads only the public RSS feeds that Reddit publishes for syndication, and it collects public post data. It does not log in, and it does not access private content. You are responsible for how you use the data. Follow privacy law such as GDPR and CCPA when you store or process personal data like usernames, respect each subreddit's rules and Reddit's terms, keep request volume modest, and do not use the output for spam. Reddit can change or block these feeds at any time. This Actor is not affiliated with or endorsed by Reddit. This is general information, not legal advice.
Feedback
Found a bug or want a new field? Open an issue in the Issues tab of this Actor and it will be looked at. Feature requests and examples of runs that behaved unexpectedly are welcome.