Reddit Trend & Buyer Intent Radar avatar

Reddit Trend & Buyer Intent Radar

Pricing

from $0.50 / 1,000 analyzed rows

Go to Apify Store
Reddit Trend & Buyer Intent Radar

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

PRIVATEX

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Security

Limited permissions

Share

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

  1. 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 API Listing JSON.

  2. Cleans them. Duplicates (same id or link), [deleted]/[removed] content and empty rows are dropped. Every rejected row is counted with its reason.

  3. Labels each row with one intent, using documented phrase rules:

    • REQUEST_FOR_RECOMMENDATION
    • COMPARISON
    • COMPLAINT
    • FEATURE_REQUEST
    • PURCHASE_CONSIDERATION
    • GENERAL_DISCUSSION
    • UNCERTAIN

    Each row lists the rules that fired (matched_rules) and a heuristic confidence.

  4. Matches your keyword groups, for example Battery: battery life, charging. Matching is whole-word and ignores case and accents.

  5. 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
  6. 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

  1. 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.
  2. Open the Intent overview table and the Intent report (Markdown) output.
  3. 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

WhereWhat
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_MDAggregated report as JSON and Markdown.
ROWS_CSVDataset rows as CSV with a UTF-8 BOM for Excel. Cells that start with =, +, - or @ are neutralised against spreadsheet formula injection.
OUTPUTRun summary: status, counts, rejected rows by reason, billing and connector status.

Run statuses (in OUTPUT.status):

StatusMeaning
SUCCEEDEDThe analysis completed.
PARTIAL_RESULTThe run stopped at your spending limit or at maxRows. The report covers exactly the delivered rows.
EMPTY_INPUTThe source had no rows. No charge.
NO_MATCHING_ROWSEvery row was filtered out. No charge.
FAILEDThe 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:

EventPriceWhen it is charged
analyzed-row$0.0005Once per row that passes your filters and is delivered to the dataset.
analysis-report$0.02Once 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

SettingDefaultRange
Rows read (maxRows)5,000up to 100,000
File size (maxFileSizeMb)25 MBup to 100 MB
Excerpt length (excerptChars)200 characters50–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-state in 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.