# Reddit Search Scraper – Posts by Keyword (`chronometrica/reddit-search-scraper`) Actor

Search public Reddit posts by keyword across all Reddit or exact subreddits. Export clean post text, authors, scores, comment counts, URLs, source rank, and stable IDs—no Reddit login or API key.

- **URL**: https://apify.com/chronometrica/reddit-search-scraper.md
- **Developed by:** [Chronometrica](https://apify.com/chronometrica) (community)
- **Categories:** Social media, Agents, Automation
- **Stats:** 2 total users, 1 monthly users, 92.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.69 / 1,000 reddit search results

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/platform/actors/running/actors-in-store#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 – Posts by Keyword

### 🔎 What does Reddit Search Scraper do?

Reddit Search Scraper finds public posts by keyword. Search all of Reddit or
only the subreddits you name.

Use it for social listening, topic research, post discovery, lead research,
trend checks, and finding post URLs for a comment export.

Each dataset row is one unique Reddit post. It keeps the exact input query,
requested subreddit, result rank, stable post ID, canonical URL, title, body,
author, public counts, time, flair, links, and missing-field notes.

This Actor uses logged-out public Reddit data. It does not use Reddit accounts,
cookies, OAuth, private groups, or private user data.

With Reddit Search Scraper, you can:

- 🔍 Search one keyword or phrase per run.
- 🌐 Search all Reddit or a list of named subreddits.
- 🧭 Keep the query, search scope, and source rank for every post.
- 🆔 Export stable post IDs and clean post URLs.
- 📊 Collect public scores and comment counts when shown.
- 🚦 See clear status and missing-field notes when data is limited.
- 📦 Download JSON, JSONL, CSV, Excel, XML, RSS, or HTML.

### ✅ Why choose this Reddit search scraper?

- 🎯 **Check the scope:** every row keeps the query, requested subreddit,
  matched subreddit, and source rank.
- 🧾 **Get clean exports:** the stable dataset schema works in JSON, CSV,
  Excel, and data pipelines.
- 🚦 **See partial results clearly:** saved rows remain available if a later
  page stops, and the run summary explains why.
- 🔑 **Skip Reddit setup:** no Reddit account, OAuth app, API key, or proxy
  setting is required.

### 📦 What data can I extract?

| Data group | Example fields |
| --- | --- |
| 🔍 Search context | `inputQuery`, `requestedSubreddit`, `sort`, `time`, `rank` |
| 🔗 Post identity | `postId`, `canonicalPostUrl`, `matchedSubreddit` |
| 🧾 Post details | `title`, `body`, `authorName`, `createdAt`, `flair` |
| 📊 Public counts | `score`, `commentsCount`, count precision fields |
| 🖼️ Links | `thumbnailUrl`, `outboundUrl` |
| 🚦 Availability | `unavailableFields`, `status`, `statusReason` |

Missing public values stay `null`. The Actor does not guess them or turn them
into fake zeroes.

Rows are saved as each search page is finished. If a later page stops working,
rows from earlier pages stay in the dataset and the run summary says the result
is partial.

### ⚙️ Can I use this Actor through an API?

Yes. Run it in Apify Console or through the Apify API, SDKs, webhooks,
schedules, and integrations.

### 🎯 Common uses

| Use case | How the data helps |
| --- | --- |
| 🔥 Trend research | Find posts Reddit shows for a topic now. |
| 👂 Social listening | Watch public posts about a brand, product, or problem. |
| 🧑 Creator research | Find authors active in a public topic. |
| 🧱 Data pipelines | Seed a database or a second Actor with stable post URLs. |
| 💬 Comment research | Send found post URLs to a Reddit comment exporter. |

### 💵 Cost controls

You pay once for each unique post saved. Empty searches, duplicates, failed
requests, and run summaries are free. `maxResults` is the total saved-row cap
for the run, and the Actor stops
when it reaches the buyer's maximum charge.

Start with 10 to 25 rows. Larger caps can take more time and use more compute
and data traffic. A small start fee also applies as shown in the Store pricing
table.

### 🚀 How do I use it?

1. Open the Actor in Apify Console.
2. Enter one search query.
3. Optionally add subreddit names to narrow the search.
4. Set the result cap, sort order, and time window.
5. Click **Start**.
6. Open **Output** to view or download the rows.

### ⬇️ Input

Search inside named subreddits:

```json
{
    "query": "open source AI",
    "subreddits": ["LocalLLaMA"],
    "maxResults": 25,
    "sort": "relevance",
    "time": "month"
}
```

Search all Reddit:

```json
{
    "query": "small business AI tools",
    "maxResults": 50,
    "sort": "new",
    "time": "year"
}
```

#### 🎛️ Settings

| Setting | What it controls |
| --- | --- |
| `query` | One keyword or phrase. |
| `subreddits` | Optional. Leave empty for all Reddit, or add one to 20 subreddit names. |
| `maxResults` | Total unique post cap, from 1 to 10,000. |
| `sort` | Relevance, hot, top, new, or most comments. |
| `time` | All time, hour, day, week, month, or year. |

Connection recovery is automatic. You do not need to choose or supply a proxy.

### ⬆️ Output sample

```json
{
    "platform": "reddit",
    "inputQuery": "open source AI",
    "requestedSubreddit": "LocalLLaMA",
    "matchedSubreddit": "LocalLLaMA",
    "sort": "relevance",
    "time": "month",
    "rank": 1,
    "postId": "abc123",
    "canonicalPostUrl": "https://www.reddit.com/r/LocalLLaMA/comments/abc123/example/",
    "title": "Example public post",
    "body": null,
    "authorName": "example_user",
    "score": 42,
    "scorePrecision": "displayed",
    "commentsCount": 9,
    "commentsCountPrecision": "displayed",
    "unavailableFields": ["body"],
    "status": "ok",
    "statusReason": null,
    "observedAt": "2026-07-19T20:00:00.000Z"
}
```

### 🧾 Run summary

The `OUTPUT` record reports the query, searches planned and finished, candidates
found, rows saved, billable and free rows, duplicates skipped, the stop reason,
whether the run finished, and a result for each search.

### 🚦 Status and availability fields

- `ok`: the post row was read from public Reddit data.
- `partial`: some requested searches or later pages were unavailable.
- `valid_empty`: Reddit showed a valid empty search result.
- `failed`: the requested public search could not be read.
- `unavailableFields`: lists fields Reddit did not show for that row.

### 🔒 Source boundary

The Actor reads logged-out public Reddit data only. It does not log in, use user
cookies, solve account checks, read private subreddits, or collect private data.

### ⚠️ Limits

Reddit search results and ranks can change between runs. A cap is a maximum, not
a promise. Narrow queries may return fewer rows. Public counts can be missing or
change after collection. Some results can have fewer fields; check
`unavailableFields`.

### ❓ FAQ

#### Does it need a Reddit API key or account?

No.

#### Why did I get fewer rows than my cap?

Reddit may have fewer public matches, repeat the same posts, or stop showing
more pages. Check `OUTPUT.stopReason` and each search result.

#### How are duplicates removed?

The Actor keeps one row for each stable Reddit post ID across the whole run.

### 🛟 Support

Include the Apify run ID, a small input sample, what you expected, and what you
received.

# Actor input Schema

## `query` (type: `string`):

Enter one keyword or phrase.

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

Optional. Leave empty to search all Reddit, or add names such as LocalLLaMA without r/.

## `maxResults` (type: `integer`):

Maximum unique posts to save across the whole run. Default: 25.

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

Choose Reddit's public search order.

## `time` (type: `string`):

Used by Reddit search. It has the strongest effect with Top and Most comments.

## Actor input object example

```json
{
  "query": "open source AI",
  "maxResults": 25,
  "sort": "relevance",
  "time": "all"
}
```

# Actor output Schema

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

No description

## `output` (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 = {
    "query": "open source AI"
};

// Run the Actor and wait for it to finish
const run = await client.actor("chronometrica/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 = { "query": "open source AI" }

# Run the Actor and wait for it to finish
run = client.actor("chronometrica/reddit-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "open source AI"
}' |
apify call chronometrica/reddit-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=chronometrica/reddit-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/vwOCid7mnPXd0rMTz/builds/81SOoAhAWtfrivy7j/openapi.json
