# Reddit Search Scraper & Customer Question Finder (`sauliusautomatesit/reddit-customer-questions`) Actor

Search Reddit posts for customer questions, product complaints, recommendations and alternatives. Get source links, transparent phrase matches and repeat-run change detection. Platform costs included.

- **URL**: https://apify.com/sauliusautomatesit/reddit-customer-questions.md
- **Developed by:** [Saulius Saulenas](https://apify.com/sauliusautomatesit) (community)
- **Categories:** Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $34.00 / 1,000 completed search pages

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Reddit Search Scraper & Customer Question Finder

Find public Reddit discussions relevant to your market. Export posts and surface language about recommendations, alternatives, problems and budgets, with the phrase and source context that triggered each match.

**Quick start:** enter a query such as CRM recommendation, leave one page selected, and run. Open the Posts dataset for all collected posts or DISCUSSION-REPORT for the discussions containing question/problem signals.

### What you get

- Post title, body text, subreddit, publication time, score, comment count and source URL.
- Transparent phrase matches for recommendation requests, alternatives, problems and pricing/budget language.
- A discussion report sorted by the number of matched signal types, then recency.
- A portable snapshot for tracking newly observed posts and text edits across repeat runs.

Built for product research, content planning and market listening. A phrase match is a research lead for human review, not proof that someone wants to buy. This Actor does not contact authors, collect user profiles, post replies, collect comment bodies or access private communities.

### Example

```json
{"queries":["CRM recommendation","bookkeeping software"],"subreddits":["smallbusiness","SaaS"],"timeRange":"month","maxPagesPerQuery":2,"previousSnapshot":[],"onlyChanges":false}
```

You can supply 1–5 queries, optionally limited to up to 10 named subreddits. The search sorts newest first and requests 25 posts per page, up to five pages per query. Results are deduplicated across queries. Adult, promoted and visibly removed/deleted posts are excluded. Body text is capped at 30,000 characters with a textTruncated flag.

### Signals you can inspect

RECOMMENDATION matches phrases such as “looking for” or “recommendation”; ALTERNATIVE matches alternatives or switching; PROBLEM matches explicit difficulty language; PRICE\_OR\_BUDGET matches pricing/budget terms. Each output includes matchedPhrase and a surrounding excerpt. These are English phrase rules, not an AI sentiment or intent model. They can miss relevant discussions or flag irrelevant ones; read the linked source before acting. Non-English posts can be exported but may not receive signals.

### Pricing

**$0.04 per completed search page** before discounts, normally up to 25 posts. Reports, filtering, deduplication, compute and proxy usage during the run are included. One page plus one start event costs $0.04005 at the base tier.

Completed empty, fully filtered or unchanged checks are charged because the search was delivered. onlyChanges changes the exported rows, not the price. Failed or malformed searches have no search-page charge. Separate queries are checked and charged separately even where their results overlap.

Search-page prices: FREE $0.04, Bronze $0.038, Silver $0.036, Gold/Platinum/Diamond $0.034. Actor start (`apify-actor-start`) is **$0.00005**, once per allocated GB of memory, minimum one. Default memory is 1 GB. Set a maximum run cost to control spending. Downloads/storage after the run may incur ordinary Apify usage.

### Repeat checks and limits

Save SNAPSHOT only when SUMMARY.partial is false, then pass it as previousSnapshot next time. Use the same query/subreddit/time scope. onlyChanges exports new-to-sample or edited posts. Changes in votes or comment count alone do not create a text-edit event. An older post newly entering the search sample is not a newly published post.

The baseline retains up to 5,000 IDs and fingerprints. Reports cover the bounded search sample, not all Reddit conversations. Reddit's search ranking, availability and vote fuzzing affect results. Pagination follows returned cursors; repeated pages/cursors stop with explicit partial coverage. The Actor fails if every attempted search fails. No unbounded retries or account cookies are used.

Use the API/MCP tabs or the downloadable repeat-run workflow below. Source content remains subject to Reddit's and its authors' rights and applicable terms; this tool does not grant a data licence or permission to contact anyone.

### Download the repeat-run workflow

[Download the Python workflow and example watchlists (ZIP)](https://api.apify.com/v2/key-value-stores/NC097H6r9b5xqENAU/records/business-monitor-workflows-v1.zip?signature=YrU8NLIqwCcHeRTnacwH). Requires Python 3.10 or newer and your APIFY\_TOKEN. No additional Python packages are needed.

The workflow runs a watchlist, exports CSV and JSON, and saves the next baseline only after a complete run. It includes a per-run spending cap and a resume command for interrupted downloads. See the included README for setup. Schedule the command with your existing scheduler if you want recurring checks.

# Actor input Schema

## `queries` (type: `array`):

1–5 Reddit search queries. For example CRM recommendation or bookkeeping software.

## `subreddits` (type: `array`):

Optional names such as smallbusiness or SaaS, without r/. Leave empty to search across public Reddit.

## `timeRange` (type: `string`):

Search uses Reddit time filters and sorts newest first.

## `maxPagesPerQuery` (type: `integer`):

Each page requests up to 25 posts. Limit 1–5 pages per query.

## `previousSnapshot` (type: `array`):

Paste SNAPSHOT from your last complete run to identify new posts and text edits.

## `onlyChanges` (type: `boolean`):

Completed checks are charged even if nothing changed. Votes and comment counts alone do not count as text edits.

## Actor input object example

```json
{
  "queries": [
    "CRM recommendation"
  ],
  "subreddits": [],
  "timeRange": "month",
  "maxPagesPerQuery": 1,
  "previousSnapshot": [],
  "onlyChanges": false
}
```

# Actor output Schema

## `posts` (type: `string`):

No description

## `report` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `snapshot` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "CRM recommendation"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sauliusautomatesit/reddit-customer-questions").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": ["CRM recommendation"] }

# Run the Actor and wait for it to finish
run = client.actor("sauliusautomatesit/reddit-customer-questions").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "CRM recommendation"
  ]
}' |
apify call sauliusautomatesit/reddit-customer-questions --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sauliusautomatesit/reddit-customer-questions"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2gvIHRG3aHbQMlA4d/builds/nBah5iZNaBNrb4I5N/openapi.json
