Reddit Trend & Buyer Intent Radar
Pricing
from $0.50 / 1,000 analyzed rows
Reddit Trend & Buyer Intent Radar
Explainable buyer-intent, pain-point and trend analysis of Reddit discussion exports you are authorized to use (CSV, JSON, JSONL or an Apify dataset). Does not fetch Reddit.
Pricing
from $0.50 / 1,000 analyzed rows
Rating
0.0
(0)
Developer
PRIVATEX
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
Turn Reddit discussion data you are already authorized to use into a ranked, evidence-linked list of buyer intent, complaints, product comparisons, feature requests and rising terms. Every label shows the rule that produced it.
This Actor does not fetch, scrape or crawl Reddit. It analyses rows you provide: an Apify dataset in your account, or a CSV, TSV, JSON or JSONL file at an HTTPS URL. Reddit's Data API Terms require a separate agreement with Reddit for commercial use of its data. Make sure your agreement or licence covers this analysis before you run it on Reddit content.
Who needs it
- Product and research teams who hold Reddit data under their own Reddit Data API agreement or from a licensed data provider, and need to know what people complain about, ask for and compare.
- Agencies that receive discussion exports from clients and must hand back a short, defensible insight report with sources.
- Community and support teams analysing exports from communities they run. The input format is generic, so other forums' exports work too.
What it does
-
Reads your rows. It auto-detects common export field names (
id,title,body/selftext/text,created_utc/createdAt,subreddit/communityName,score/upVotes,permalink/url,dataType/kind). It also reads Reddit APIListingJSON. -
Cleans them. Duplicates (same id or link),
[deleted]/[removed]content and empty rows are dropped. Every rejected row is counted with its reason. -
Labels each row with one intent, using documented phrase rules:
REQUEST_FOR_RECOMMENDATIONCOMPARISONCOMPLAINTFEATURE_REQUESTPURCHASE_CONSIDERATIONGENERAL_DISCUSSIONUNCERTAIN
Each row lists the rules that fired (
matched_rules) and a heuristic confidence. -
Matches your keyword groups, for example
Battery: battery life, charging. Matching is whole-word and ignores case and accents. -
Builds a report:
- top pain points
- recommendation requests
- "X vs Y" and "alternative to X" comparisons
- feature requests and purchase-consideration themes
- an intent mix
- short "actionable opportunities", each backed by example links
-
Tracks change over time. Give the same monitor name on every run to see which rows are new and which terms are rising or new since the previous run.
What it does NOT do
- No live Reddit access, no scraping, no logins, no proxies. The connector for live Reddit data is disabled until the Actor owner holds a Reddit commercial agreement. The run summary reports this as
BLOCKED_PENDING_REDDIT_COMMERCIAL_AUTHORIZATION. - No posting, voting, commenting or messaging.
- No author profiling. Usernames are never output. An optional per-monitor pseudonymous hash only lets you count repeated posters.
- No AI model and no AI training on your data. The labels are deterministic rules. They can be wrong on sarcasm, irony and complex negation. The rules are English, so most non-English text is labelled
UNCERTAIN; no accuracy is claimed for other languages. - No sentiment score and no inference of sensitive traits.
Start in 60 seconds
- Click Start with the prefilled input. With no source given, the Actor runs a synthetic demo (no row or report charges): 22 hand-written, fictional discussions about invented products. Every row is labelled
SYNTHETIC_DEMO. It is not real Reddit content and not market evidence. - Open the Intent overview table and the Intent report (Markdown) output.
- For your own data, pick your dataset (or paste an HTTPS file URL), tick "I have the right to analyse this data", and optionally add keyword groups and a monitor name.
Example input
{"datasetId": "<your dataset>","dataRightsConfirmed": true,"dataSourceNote": "Reddit Data API under our agreement, export of 2026-10-28","keywordGroups": ["Battery: battery, battery life, charging", "Support: support, refund, customer service"],"dateFrom": "2026-10-01","monitorName": "robot-vacuum-weekly"}
Example output row (from the synthetic demo)
{"topic": "(ungrouped)","detected_intent": "COMPLAINT","confidence": 0.95,"matched_rules": ["cpl.negative_word", "cpl.stopped_working", "cpl.waste"],"intent_signals": ["COMPLAINT"],"content_type": "comment","community": "demo_robotvacuums","language": "en","source_timestamp": "2026-10-02T09:00:00.000Z","engagement_number": 18,"evidence_excerpt": "My AcmeVac Pro keeps disconnecting from wifi. Support was useless, total waste of money.","allowed_permalink": "https://example.invalid/demo/demo_robotvacuums/c1","source_reference": "row-id:demo_c1","is_new_since_last_run": null,"provenance": { "data_origin": "SYNTHETIC_DEMO", "source_type": "demo", "rights_confirmed_by_user": false }}
Example report lines (synthetic demo):
- Most repeated complaint theme: "battery life" in 2 complaint rows.- Most discussed comparison: zentro x2 vs acmevac pro (1 row).
Output
| Where | What |
|---|---|
| Dataset (default) | One row per analysed discussion item. Main columns: detected_intent, confidence, matched_rules, topic, matched_terms, community, source_timestamp, engagement_number, evidence_excerpt, allowed_permalink, is_new_since_last_run, provenance. |
REPORT / REPORT_MD | Aggregated report as JSON and Markdown. |
ROWS_CSV | Dataset rows as CSV with a UTF-8 BOM for Excel. Cells that start with =, +, - or @ are neutralised against spreadsheet formula injection. |
OUTPUT | Run summary: status, counts, rejected rows by reason, billing and connector status. |
Run statuses (in OUTPUT.status):
| Status | Meaning |
|---|---|
SUCCEEDED | The analysis completed. |
PARTIAL_RESULT | The run stopped at your spending limit or at maxRows. The report covers exactly the delivered rows. |
EMPTY_INPUT | The source had no rows. No charge. |
NO_MATCHING_ROWS | Every row was filtered out. No charge. |
FAILED | The run failed with an error code: INPUT_INVALID, RIGHTS_NOT_CONFIRMED, ACCESS_DENIED, NOT_FOUND, RATE_LIMITED, UPSTREAM_UNAVAILABLE, INPUT_TOO_LARGE, PARSE_ERROR or UNSUPPORTED_FORMAT. No charge. |
All times are ISO-8601 UTC. Ambiguous dates such as 03/04/2026 are left empty, not guessed. Scores are copied only when present in your data.
Pricing
Pay per event:
| Event | Price | When it is charged |
|---|---|---|
analyzed-row | $0.0005 | Once per row that passes your filters and is delivered to the dataset. |
analysis-report | $0.02 | Once per run, only when at least one row was delivered. |
Examples: 1,000 analysed rows cost $0.52; 10,000 rows cost $5.02. A tiny Apify start fee ($0.00005) also applies. Platform usage is included in these prices.
You are not charged for:
- rejected, duplicate or filtered-out rows;
- failed runs;
- demo runs (only Apify's automatic $0.00005 start event applies to every run);
- the same row twice, even if the run restarts.
The Actor respects your maximum cost per run. It reserves room for the report, analyses only as many rows as your limit allows, and finishes with PARTIAL_RESULT.
Limits
| Setting | Default | Range |
|---|---|---|
Rows read (maxRows) | 5,000 | up to 100,000 |
File size (maxFileSizeMb) | 25 MB | up to 100 MB |
Excerpt length (excerptChars) | 200 characters | 50–500 |
Typical runs need 256–512 MB of memory.
Privacy and security
- Usernames are dropped by default and never output.
- E-mail addresses and phone numbers inside excerpts are masked.
- Excerpts can be turned off (
includeExcerpts: false). - Monitor state stores only counts and hashed row keys, never text. It lives in a key-value store named
discussion-intent-radar-statein your Apify account. Delete it there to reset all monitors. - File URLs must be HTTPS. Private, internal, loopback and cloud-metadata addresses are refused, on the first request and after every redirect.
- Oversized and compressed-bomb downloads are cut off.
- Query strings (pre-signed tokens) are never written to logs.
- The Actor runs with limited permissions. It can read only the dataset you pick in the input.
API and scheduling
Run it through the Apify API, client libraries or integrations like any Actor. For weekly monitoring, schedule it with the same monitorName and a fresh export each week. The OUTPUT record tells your automation whether the run SUCCEEDED, PARTIAL_RESULT, EMPTY_INPUT and so on.
FAQ
Can it fetch Reddit for me? No. See "What it does NOT do".
Why is my non-English text UNCERTAIN?
The intent rules are English. Other languages pass through without a guessed label.
Is confidence a probability?
No. It is a heuristic score from the number and strength of the matched rules.
Support
Open an issue on this Actor's Issues tab in Apify Store.