Reddit Buying Intent Finder avatar

Reddit Buying Intent Finder

Under maintenance

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Reddit Buying Intent Finder

Reddit Buying Intent Finder

Under maintenance

Find Reddit posts where users are actively asking for product/service recommendations in your niche. Give it a list of subreddits + intent keywords, get back warm leads with post URLs, scores, snippets, and match reason — perfect for service businesses, agencies, and SaaS.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

sky

sky

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Apify Actor — given a list of subreddits and (optionally) intent keywords, extract Reddit posts where users are actively asking for product/service recommendations. For service businesses, agencies, and SaaS doing Reddit-based lead generation.

What it does

  1. Subreddit scan — fetches the recent feed of each subreddit you provide (e.g. r/freelance, r/smallbusiness, r/webdev) via Reddit's public old.reddit.com/r/<sub>/search.json endpoint. No OAuth required.
  2. Intent filter — runs every post through a built-in buying-intent detector that matches phrases like:
    • "looking for" / "searching for"
    • "recommend me a…" / "anyone recommend…"
    • "best X for Y" / "best Y to use"
    • "anyone use / know / tried…"
    • "what do you use" / "what should I use"
    • "I need a…" / "need recommendations"
    • "alternative to…" / "switching from/to"
    • "X vs Y" You can also supply your own intent keywords; matching is case-insensitive substring across title (and optionally the post body).
  3. Output — emits a single Apify dataset record containing:
    • The matching posts (deduplicated, sorted newest-first, capped to maxPosts),
    • Per-subreddit match counts,
    • The original input echoed back for reference.

Each emitted post includes subreddit, postId, title, url, snippet, score, numComments, author, createdUtc, isSelf, flair, and intentMatches (which patterns fired).

Why

Many Apify Reddit scrapers exist but they are all "give me all posts in subreddit X." This one is opinionated: it returns only posts where a real person is shopping for what you sell. That's what you want when running a weekly lead-generation check before responding on Reddit.

Input

FieldTypeRequiredDefaultDescription
subredditsarray of stringsyesSubreddits to search, WITHOUT the r/ prefix. Example: ["fitness","webdev","smallbusiness"]. 1–10 recommended.
intentKeywordsarray of stringsno[]Optional extra intent patterns matched as case-insensitive substrings in title (and body, if matchBody=true). Example: ["crm","invoicing tool"].
timeframestring enumnomonthOne of hour, day, week, month, year, all. Mapped to Reddit's t= parameter.
maxPostsint 1–500no50Cap on matching posts in the output.
maxPostsPerSubint 1–100no100Posts scanned per subreddit (the intent filter runs on this pool). Reddit caps at 100/page; we hard-cap at 5 pages.
matchBodyboolnofalseIf true, intent patterns and intentKeywords are also matched against the post's selftext. Off by default to reduce false positives from off-topic bodies.
minScoreint ≥ 0no0If set, only posts with at least this many upvotes are returned.

Output shape

{
"generatedAt": "2026-07-05T18:40:00.000Z",
"inputSubreddits": ["freelance", "smallbusiness"],
"timeframe": "month",
"subSummaries": [
{ "subreddit": "freelance", "matchedCount": 7 },
{ "subreddit": "smallbusiness", "matchedCount": 3 }
],
"totalMatched": 10,
"returnedCount": 10,
"posts": [
{
"subreddit": "freelance",
"postId": "abc123",
"title": "Looking for a good invoicing tool for solo freelancers?",
"url": "https://www.reddit.com/r/freelance/comments/abc123/looking_for/",
"snippet": "I've tried Wave but it doesn't do X...",
"score": 14,
"numComments": 6,
"author": "alice",
"createdUtc": 1751300000,
"isSelf": true,
"flair": "Question",
"intentMatches": ["looking for", "custom:invoicing tool"]
}
]
}

Limits and known constraints

  • No login. We use Reddit's public JSON endpoint, which returns 200 anonymously. If Reddit rate-limits or returns HTML, posts on that page are skipped (the actor keeps going on the next page / subreddit).
  • 5 pages per subreddit max. Hard-coded internal ceiling so a single request that hits a rate-limit doesn't loop forever. Tunable in fetchSubredditPosts if you want more depth.
  • Public posts only. Posts in private/quarantined subreddits, or posts removed before our crawl, are not returned.
  • No comment threads. This actor returns posts only, not the replies. Useful as a lead list; you'd open the URL to see what people are saying.

Pricing model

Suggested on the Apify Store: PAY_PER_EVENT ~$0.002 / matching post (i.e. $0.002 × matchedCount). One actor run can return up to maxPosts results.

Local development

# 1. Install
npm install
# 2. Structural tests only (no network, fast)
npm test
# 3. Full test suite + live Reddit fetch
npm run test:live
# 4. Smoke test: fetch real data against one subreddit
node check_trends.js
# 5. End-to-end run locally with the bundled test input
# On Windows PowerShell:
$env:APIFY_LOCAL_INPUT_PATH='.\test_input.json'; node src/main.js
# On macOS/Linux:
APIFY_LOCAL_INPUT_PATH=./test_input.json node src/main.js

Local mode writes results to ./output.json. In Apify, results are pushed to the default dataset.

File map

reddit-buying-intent-finder/
├── .actor/
│ ├── actor.json # Apify actor manifest
│ └── input_schema.json # Apify input UI schema
├── src/
│ └── main.js # all logic (pure functions + run() + CLI entry)
├── test_input.json # sample input for local runs
├── test_local.js # structural + live integration tests
├── check_trends.js # quick smoke-check (live, one subreddit)
├── package.json
├── Dockerfile # apify/actor-node:18
├── .gitignore
└── README.md

Test coverage

  • 39 structural tests (no network): URL builder, intent patterns (positive + negative cases for each built-in pattern), matchBody toggle, minScore filter, input validation (subreddit normalisation, timeframe enum, ranges), extraKeywords substring matching, snippet truncation, de-dup contract via shapePost.
  • 2 live integration tests (network):
    • Real fetch against r/announcements, verifying the parser normalises whatever Reddit returns today.
    • Direct JSON fetch against r/fitness/search.json to confirm the endpoint is reachable.

Run npm run test:live to exercise both.