# Reddit Search Scraper - Threads by Keyword, Date & Subreddit (`seemuapps/reddit-search-scraper`) Actor

Search Reddit by keyword and scrape matching threads with their comments - filter by past day, week, month or year, sort by relevance, new or top, within any subreddit.

- **URL**: https://apify.com/seemuapps/reddit-search-scraper.md
- **Developed by:** [Andrew](https://apify.com/seemuapps) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 thread returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 - Threads by Keyword, Date & Subreddit

Search Reddit for any keyword or question and get back the matching threads with their comments - filtered to the past hour, day, week, month or year, sorted by relevance, newest, top score or most comments, across all of Reddit or inside a single subreddit. No login, no Reddit API key, no rate-limit headaches.

Type "best VPN for Australia", pick **Past month**, and you get every relevant thread from the last 30 days together with what Redditors actually said in the comments - ready to export to JSON, CSV, Excel or Google Sheets.

### What you get

One row per thread:

- **title**, **url**, **subreddit**, **author**, **selftext** (the post body) and **linkUrl** for link posts
- **score**, **upvoteRatio**, **numComments**, **createdAt**, **flair**
- **isSelfPost**, **isVideo**, **over18**, **spoiler**, **locked**, **archived**
- **comments** - a flattened comment tree: `id`, `parentId`, `depth`, `author`, `body`, `score`, `createdAt`, `permalink`
- **commentsFetched** - how many comments were attached
- **query** - which of your search terms surfaced the thread

Results are de-duplicated across all queries in a run.

### Use cases

- **Market and product research** - find out what people recommend, complain about or compare in your niche ("best vpn australia", "is X worth it")
- **Brand and competitor monitoring** - track every thread that mentions your product, a competitor or your category this week
- **Content and SEO ideation** - mine real questions and pain points, then write the guide Reddit is asking for
- **Lead generation** - spot people actively asking for a recommendation you can answer
- **Sentiment and trend analysis** - feed thread bodies and comments into your own analysis or an LLM
- **Dataset building** - collect labelled Reddit discussions on any topic and time window

### How to use

1. Enter one or more **Search queries**, one per line.
2. Optionally enter a **Subreddit** (for example `australia`) to search only inside it.
3. Choose **Posted within** (past hour, 24 hours, week, month, year or all time) and **Sort by** (relevance, newest, top or most comments).
4. Set **Max threads per query** (default 50, `0` for everything Reddit returns).
5. Leave **Include comments** on to attach the comment tree to each thread. **Comment pages per thread** controls how deep to go - each page is roughly 10 top-level comments with their nested replies.
6. Optionally set **Minimum score** or **Minimum comment count** to skip low-engagement threads.
7. Run the actor - threads stream into the **Dataset** tab as they are found.

### Output format

Each dataset record:

```json
{
  "query": "best vpn australia",
  "postId": "1vzngan",
  "title": "Which VPN has the cleanest IPs in 2026?",
  "url": "https://www.reddit.com/r/VPN/comments/1vzngan/which_vpn_has_the_cleanest_ips_in_2026/",
  "linkUrl": null,
  "subreddit": "VPN",
  "author": "throwaway_au",
  "selftext": "Looking for something that works with Australian streaming services...",
  "score": 142,
  "upvoteRatio": 0.96,
  "numComments": 87,
  "createdAt": "2026-08-27T07:49:11.000Z",
  "flair": "Discussion",
  "isSelfPost": true,
  "isVideo": false,
  "over18": false,
  "spoiler": false,
  "locked": false,
  "archived": false,
  "commentsFetched": 34,
  "comments": [
    {
      "id": "p66515n",
      "parentId": "1vzngan",
      "depth": 0,
      "author": "ScarlettGrotesque",
      "body": "Mullvad has been rock solid for me from Sydney.",
      "score": 61,
      "createdAt": "2026-08-27T07:51:37.000Z",
      "permalink": "https://www.reddit.com/r/VPN/comments/1vzngan/comment/p66515n/"
    }
  ]
}
```

`depth` is 0 for top-level comments, 1 for replies to them, and so on. `parentId` is the post ID for top-level comments and the parent comment ID for replies.

### Pricing

Three small events: one per search page fetched (about 7 threads), one per thread returned, and one per page of comments fetched. A typical thread with its top comments costs about $0.015; turn off **Include comments** for a posts-only search at roughly $0.003 per thread.

### Tips

- **Past week + Newest** is the best combination for monitoring a topic on a schedule; **Past month + Relevance** for research.
- Reddit's search returns the most relevant threads first and thins out quickly for niche queries - several shorter queries usually beat one long one.
- Long threads keep going past the first comment page. Raise **Comment pages per thread** to 3-5 when you need the full discussion.
- The **Past hour** window is applied client-side when searching all of Reddit, so very fresh threads may still take a few minutes to appear in search.

### FAQ

**Do I need Reddit API credentials?**
No. Everything runs without a login or API key.

**Are deleted or removed comments included?**
Comments Reddit still serves are included; their author shows as `[deleted]` when the account is gone.

**Can I get comments replying to a specific comment?**
Replies are nested under their parent via `parentId` and `depth`. Collapsed "load more replies" branches deep inside a thread are not expanded.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords or phrases to search Reddit for, one per line. Each query is searched separately and results are de-duplicated across the run.

## `subreddit` (type: `string`):

Restrict the search to one subreddit, e.g. 'australia' or 'r/australia'. Leave empty to search all of Reddit.

## `timeframe` (type: `string`):

Only return threads created inside this window.

## `sort` (type: `string`):

Order in which Reddit returns matching threads.

## `maxPostsPerQuery` (type: `integer`):

Maximum threads to return for each search query. 0 = keep paginating until Reddit runs out of results or the run times out.

## `includeComments` (type: `boolean`):

Fetch the comment tree for every thread and attach it to the record. Turn off for a cheaper posts-only search.

## `maxCommentPagesPerPost` (type: `integer`):

Each page returns roughly 10 top-level comments with their nested replies. 1 = the top comments only; raise it for long threads.

## `minScore` (type: `integer`):

Skip threads whose upvote score is below this value.

## `minComments` (type: `integer`):

Skip threads with fewer comments than this.

## Actor input object example

```json
{
  "searchQueries": [
    "best vpn australia"
  ],
  "timeframe": "month",
  "sort": "relevance",
  "maxPostsPerQuery": 50,
  "includeComments": true,
  "maxCommentPagesPerPost": 1,
  "minScore": 0,
  "minComments": 0
}
```

# Actor output Schema

## `results` (type: `string`):

One record per thread: query, postId, title, url, linkUrl, subreddit, author, selftext, score, upvoteRatio, numComments, createdAt, flair, flags, commentsFetched and a flattened comments array (id, parentId, depth, author, body, score, createdAt, permalink).

# 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 = {
    "searchQueries": [
        "best vpn australia"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/reddit-search-scraper").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 = { "searchQueries": ["best vpn australia"] }

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/reddit-search-scraper").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 '{
  "searchQueries": [
    "best vpn australia"
  ]
}' |
apify call seemuapps/reddit-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/LrAVymhzvALOe9NtO/builds/p1KkznfjfABLONuAH/openapi.json
