Skip to content

Reddit lead generation: build a lead finder agent in 30 lines

Reddit lead generation with a 30-line agent: find intent-ranked posts, pull each thread for context, filter the noise and reply within subreddit rules.

Piyushh · October 14, 2026 · 5 min read

Reddit lead generation means finding posts where people ask for a recommendation, compare tools or complain about the one they use, then joining that conversation with something useful. The finding part takes about 30 lines of Python to automate: call an intent-ranked search, drop duplicates and low scores, pull each thread for context, and print a shortlist for a human to read. The replying part you should leave to a person.

This guide builds that agent against real API responses, shows how much of the output turned out to be noise, and covers how to reply without getting banned.

How the agent works

The agent makes two kinds of calls:

  1. GET /v1/reddit/leads finds candidates by searching recent Reddit posts and comments for buying language in your category. Each result carries an intent (asking_for_recommendation, comparing_tools or complaining about a tool), an intentScore from 0 to 1, and the matchedTerms that triggered it. Each page costs 4 credits.
  2. GET /v1/reddit/threads/{id} reads the thread. It returns the post with its comment tree, at 3 credits per page. A result isn't a lead until you've read what the person asked and what others already answered.

The leads call takes these useful parameters: competitors (up to 5 tools people might be switching from), exclude (up to 10 words that disqualify a result), time (day, week, month or year), minScore (default 0.3) and subreddit to stay in one community.

The 30-line Reddit lead generation script

import os, re, requests

KEY = os.environ["CHATTERAPI_KEY"]
API = "https://api.chatterapi.com/v1/reddit"
H = {"Authorization": f"Bearer {KEY}"}

def get(path, **params):
    r = requests.get(f"{API}/{path}", headers=H, params=params, timeout=30)
    r.raise_for_status()
    return r.json()["data"]

def thread_id(url):
    return re.search(r"/comments/([a-z0-9]+)/", url).group(1)

leads = get("leads", q="crm", competitors="hubspot,pipedrive",
            exclude="hire,hiring,acquire,services", minScore=0.6, time="week")

seen = set()
for lead in leads:
    tid, key = thread_id(lead["url"]), lead["text"][:60]
    if tid in seen or key in seen:          # same thread, or the same text cross-posted
        continue
    seen |= {tid, key}
    thread = get(f"threads/{tid}")
    post = thread["post"]
    if post["locked"]:
        continue
    print(f"{lead['intentScore']:.2f}  r/{lead['community']}  {lead['matchedTerms']}")
    print(f"      {post['title']}  ({post['numComments']} comments)")
    print(f"      {lead['url']}")

That's the whole agent. A run costs 4 credits for the leads page and 3 for each thread it opens, so ten leads with context come to 34 credits.

Most of the work happens in two filters. exclude drops service ads and "for hire" posts before they reach you. The dedupe step catches the same text cross-posted to several subreddits, which promotional posts do a lot.

What the output looks like

Here's the raw leads response for q=crm, recorded with a test key (which returns one real recorded response per endpoint for free) and trimmed to three of its 19 results:

curl "https://api.chatterapi.com/v1/reddit/leads?q=crm" \
  -H "Authorization: Bearer $CHATTERAPI_KEY"
{
  "data": [
    {
      "kind": "post",
      "community": "CRMSoftware",
      "text": "Is there a CRM that flags when customers stop buying certain products? ...",
      "url": "https://www.reddit.com/r/CRMSoftware/comments/1x56wgd/is_there_a_crm_that_flags_when_customers_stop/",
      "intent": "asking_for_recommendation",
      "intentScore": 0.82,
      "matchedTerms": ["is there a crm", "looking for"]
    },
    {
      "kind": "post",
      "community": "PakEntrepreneursHub",
      "text": "...Looking for a reliable business partner to bring your ideas to life? We’ve got you covered...",
      "intent": "asking_for_recommendation",
      "intentScore": 0.74,
      "matchedTerms": ["looking for a", "looking for", "need a"]
    },
    {
      "kind": "comment",
      "community": "CRMSoftware",
      "text": "I’m a coach and systems architect; I can tell you that you’re not looking for a CRM...",
      "url": "https://www.reddit.com/r/CRMSoftware/comments/1x4pfb9/i_just_need_a_crm_for_coaches_not_software_to_run/pghxwip/",
      "intentScore": 0.65,
      "matchedTerms": ["looking for a", "looking for"]
    }
  ],
  "page": { "nextCursor": "AT-HD9XwKoZg…", "hasMore": true }
}

The top result is the kind you want: someone in food distribution asking for a CRM that spots when a regular customer stops ordering one product. The second is a services ad that happens to open with "Looking for a reliable business partner." The third is a consultant's reply, but its URL points to a real buyer thread, "I just need a CRM for coaches."

Be honest about the noise

We read all 19 results from that call, at the default minScore of 0.3:

What it wasCount
Someone shopping for a CRM, or a reply inside a buyer's thread3 (pointing at 2 buyer threads)
Service ads, "for hire" posts, a SaaS listed for sale5
Off-topic advice or discussion that matched "looking for" or "vs"11

About one result in seven led somewhere useful. That's typical for keyword intent matching, and it's why the script raises minScore, excludes ad words and dedupes. On this sample a 0.6 cutoff keeps five results, two of them the same cross-posted ad, so the dedupe step matters as much as the score.

Use the scores to sort results. Read the text before you trust any lead.

Pulling the thread for context

The thread call is where you decide whether to say anything at all. Here's a recorded response for a busy buyer thread in r/CRM:

curl "https://api.chatterapi.com/v1/reddit/threads/1wdihhj" \
  -H "Authorization: Bearer $CHATTERAPI_KEY"
{
  "data": {
    "post": {
      "title": "What CRM should a small business use?",
      "subreddit": "CRM",
      "score": 52,
      "numComments": 186,
      "locked": false
    },
    "comments": [
      {
        "author": "New_Dimension_5894",
        "score": 8,
        "body": "Since you're a small B2B team I’d seriously consider Monaco as an AI native CRM..."
      },
      {
        "author": "OstrichSome3412",
        "score": 6,
        "body": "Just a FYI, don’t buy for the company you imagine having in 5 years. Buy for the next 12 or 18 months and make sure exporting your data isn’t painful if you eventually need something heavier."
      }
    ]
  }
}

The top reply already names a product, so if yours would be the 187th comment saying "try us," skip the thread. The second comment is the kind that earns upvotes: specific advice that doesn't depend on buying anything. If you reply, write a comment like that one.

Run it as an MCP agent

The hosted MCP server exposes the same two endpoints as tools (reddit_leads and reddit_thread), so you can hand the job to Claude Code, Cursor or any MCP client. Add the server once:

claude mcp add --transport http chatterapi https://api.chatterapi.com/mcp \
  --header "Authorization: Bearer $CHATTERAPI_KEY"

Then give it a prompt with the guardrails written in:

Find Reddit leads for "crm" from the past week with reddit_leads (minScore 0.6,
competitors hubspot,pipedrive, exclude hire,hiring,acquire,services).
Skip duplicates and anything that is an ad or a job post.
For each remaining lead, read the thread with reddit_thread and call
reddit_subreddit to check the community's rules on self-promotion.
Give me a table: subreddit, what the person needs, what's already been answered,
whether the rules allow a mention, and a draft reply that answers the question
first and discloses that I work on the product. Do not post or message anyone.

ChatterAPI's Reddit endpoints are read-only. The agent can't post to Reddit even if it tries. You read the drafts and decide what to do with them.

The case against Reddit lead generation tools

The strongest argument against this whole category comes from someone who built one. In r/SaaS, the founder of a Reddit lead tool wrote a post titled "I'm pivoting my SaaS after realizing Reddit lead gen tools (including mine) are all lying to you." After 90 days of testing with four paying clients, they found "most 'qualified leads' weren't qualified at all," and that "Reddit is anonymous... Your only option is a cold DM on Reddit" (u/No-Common1466). Later in the thread they put their reply rate at "basically 1%" (reply). Those are one founder's numbers, not a benchmark. They do match the noise table above.

The founder is right about the outreach model. Treating Reddit posters as a cold list fails, and it breaks rules too. r/SaaS's own rules, in our subreddit stats sample, say "Do not post or comment to sell services, "cold DM" members, or solicit clients."

We disagree on what the leads are for. Another commenter in that thread put it as "Sentiment analysis hell yeah. Lead generation hell no" (u/fazdaspaz). In a separate thread, a founder said "Reddit works better when I stop thinking about leads at all," and described replying only "when I actually have something useful to add" (u/Happy_Ad_9464).

The version of Reddit lead generation that holds up is a feed of people with a live problem. A human reads it, sometimes answers in public, and uses the rest as research. For the research side, see finding customer pain points on Reddit with Claude.

How to reply without getting banned

  • Read each subreddit's rules before you post. Call reddit.subreddit or use subreddit stats. Many communities cap self-promotion or ban it outright.
  • Answer the question first and give the advice up front. Mention your product only if it fits and the rules allow it, and say that you work on it.
  • Reply in public and never send bulk DMs. A post asking for recommendations is not an invitation to a private sales pitch.
  • Don't automate replies. Reddit now asks that allowed automation run on labeled app accounts, and some subs, r/SaaS among them, remove AI-generated text. Reddit's rules ban spam outright.
  • Skip crowded threads. If ten vendors have already replied, an eleventh reply won't help anyone.
  • Keep an eye on your own account. If your replies stop getting responses, check for a Reddit shadowban.

If you'd rather have someone run Reddit as a marketing channel for you, use done-for-you Reddit marketing instead of a script.

Find your first leads

Run the free Reddit lead finder on your category, then point the script at the communities it turns up. If you need to pick those communities first, see how to find subreddits for any topic. Our Reddit API guide covers authentication, pagination and errors.

ChatterAPI gives your code and your agents Reddit and X data through one key, over REST or MCP, and you don't have to apply for a developer account. Sign up with Google to get 100 free credits without a card. Plans start at $19/month for 25,000 credits.

FAQ

Does Reddit lead generation work?
It's useful for finding people who are asking for what you sell, and for researching how they describe the problem. As a cold outreach channel it works badly. Expect only a small share of results to be real buyers. Reply publicly and helpfully within each subreddit's rules, and never DM people in bulk.
What is the best Reddit lead generation tool?
Pick a tool that shows why each result was picked, so you can judge it yourself. An intent score and the matched phrases make noise quick to filter out. Whatever you use, a human should read every lead and write every reply, because automated replies break most subreddits' rules.
Is it against Reddit's rules to look for leads?
Reading public posts is not. The rules apply to what you do next. Reddit's rules ban spam, and many subreddits ban selling, soliciting and cold DMs to members. Read each community's rules, disclose who you are when you mention your product, and answer the question that was asked.
How do I find people asking for recommendations on Reddit?
Search posts and comments for phrases like looking for, any recommendations, alternative to and switching from, combined with your category. An intent-ranked endpoint such as GET /v1/reddit/leads does this for you, returning a score and the matched terms for each result.

More from the blog

Make your first call on 100 free credits.

Sign up with Google, no card. One key for Reddit and X, over REST or MCP.