# Reddit Search Scraper (`apt_marble/reddit-search-scraper`) Actor

🔍 Search Reddit by keyword and extract posts, comments, communities, users, and media with scores, engagement metrics, exact timestamps, and rich metadata. Get clean, structured JSON for research, monitoring, analytics, and AI workflows.

- **URL**: https://apify.com/apt\_marble/reddit-search-scraper.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Categories:** Social media, News, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 🔍

Search Reddit by keyword and get back **posts, comments, communities, users and media** — with the same sorting and date filters as reddit.com. Every result comes with scores, comment counts and exact timestamps. Clean structured JSON, ready for analysis.

### ✨ What you get

One record per result. Posts and media:

| Field | Description |
|---|---|
| `id` / `url` / `title` / `text` | The post itself |
| `type` | `post` or `media` |
| `link` / `domain` / `thumbnail` / `mediaUrl` | Linked or embedded content |
| `score` / `upvoteRatio` / `numComments` | Engagement as real numbers |
| `createdAt` | Exact ISO timestamp |
| `community` / `communityId` | Where it was posted |
| `author` / `authorId` | Who posted it |
| `flair` / `over18` / `spoiler` / `locked` / `stickied` | Content flags |
| `position` / `searchTerm` / `searchUrl` / `scrapedAt` | Provenance |

Comments add `postId` / `postTitle` / `postUrl`; communities include `members` and `description`; users include `karma`, `linkKarma` and `commentKarma`.

### ⚙️ Options

- **Search terms** — any number of keywords; each gets its own result quota.
- **Result types** — toggle posts, comments, communities, users and media independently, each with its own per-term limit.
- **Community** — restrict the search to a single community (e.g. `programming`).
- **Sorting** — Relevance, Hot, Top, New, Rising or Comments, exactly like reddit.com.
- **Date filter** — last hour, day, week, month, year or all time.
- **NSFW** — excluded by default, opt in if you need it.

### 🚀 Example

Input:

```json
{
    "searchTerms": ["world cup 2026"],
    "searchForPosts": true,
    "searchForCommunities": true,
    "sortSearch": "top",
    "filterByDate": "month",
    "maxPostsPerTerm": 10,
    "maxCommunitiesPerTerm": 3
}
````

One record from the output:

```json
{
    "type": "post",
    "id": "1t0vadj",
    "url": "https://www.reddit.com/r/worldcup/comments/1t0vadj/i_was_in_south_africa_for_the_2010_world_cup_im/",
    "title": "I was in South Africa for the 2010 World Cup. I'm in the USA for the 2026 World Cup. I can't believe the difference…",
    "text": "2010 was all folks talked about for years. The whole country was united in purpose, tickets were hard to get…",
    "link": "https://www.reddit.com/r/worldcup/comments/1t0vadj/i_was_in_south_africa_for_the_2010_world_cup_im/",
    "community": "r/worldcup",
    "communityId": "t5_2rdrs",
    "author": "Lucky_Mongoose_4834",
    "authorId": "t2_94yy1hvu",
    "score": 3208,
    "upvoteRatio": 0.97,
    "numComments": 1744,
    "createdAt": "2026-05-01T14:38:39.000Z",
    "over18": false,
    "spoiler": false,
    "locked": false,
    "stickied": false,
    "flair": null,
    "domain": "self.worldcup",
    "postHint": null,
    "isVideo": false,
    "isGallery": false,
    "thumbnail": "",
    "mediaUrl": "",
    "position": 1,
    "searchTerm": "world cup 2026",
    "searchUrl": "https://www.reddit.com/search/?q=world+cup+2026",
    "scrapedAt": "2026-06-12T11:40:12.694Z"
}
```

### 💡 Use cases

- **Brand monitoring** — track what Reddit says about any product or company.
- **Trend research** — find the top posts on any topic, filtered by time window.
- **Community discovery** — map the subreddits and power users in your niche.
- **Sentiment analysis** — pull comments mentioning your keywords for NLP pipelines.

### 💳 Pricing

You pay per result scraped — no subscriptions, no hidden compute costs.

### ❓ FAQ

**Why did I get fewer results than my limit?** Reddit returns at most a few hundred results per search — when the listing runs out, the actor stops. That's Reddit's ceiling, not an error.

**Does the date filter apply to everything?** It is most reliable for posts (same as on reddit.com, where the date filter shows under the Posts tab).

**Are the timestamps exact?** Yes — every result includes the exact UTC creation time, not just "5 days ago".

**Can I search inside one community?** Yes — set the Community field. Posts, comments and media are then searched only there; community and user searches stay global.

# Actor input Schema

## `searchTerms` (type: `array`):

One or more keywords to search Reddit for.

## `searchCommunityName` (type: `string`):

If provided, the search will be performed only inside this community (e.g., 'programming'). Applies to posts, comments and media — community and user searches are always global.

## `searchForPosts` (type: `boolean`):

Scrape posts matching the search terms.

## `searchForComments` (type: `boolean`):

Scrape comments matching the search terms.

## `searchForCommunities` (type: `boolean`):

Scrape communities (subreddits) matching the search terms.

## `searchForUsers` (type: `boolean`):

Scrape user profiles matching the search terms.

## `searchForMedia` (type: `boolean`):

Scrape media posts (images, videos, galleries) matching the search terms.

## `sortSearch` (type: `string`):

How Reddit ranks the results.

## `filterByDate` (type: `string`):

Only include results from this time window.

## `maxPostsPerTerm` (type: `integer`):

How many posts to scrape for each search term.

## `maxCommentsPerTerm` (type: `integer`):

How many comments to scrape for each search term.

## `maxCommunitiesPerTerm` (type: `integer`):

How many communities to scrape for each search term.

## `maxUsersPerTerm` (type: `integer`):

How many users to scrape for each search term.

## `maxMediaPerTerm` (type: `integer`):

How many media posts to scrape for each search term.

## `includeNsfw` (type: `boolean`):

Include results marked 18+. Off by default.

## `maxConcurrency` (type: `integer`):

How many search terms to process in parallel.

## Actor input object example

```json
{
  "searchTerms": [
    "artificial intelligence"
  ],
  "searchCommunityName": "",
  "searchForPosts": true,
  "searchForComments": false,
  "searchForCommunities": false,
  "searchForUsers": false,
  "searchForMedia": false,
  "sortSearch": "",
  "filterByDate": "",
  "maxPostsPerTerm": 10,
  "maxCommentsPerTerm": 10,
  "maxCommunitiesPerTerm": 5,
  "maxUsersPerTerm": 5,
  "maxMediaPerTerm": 5,
  "includeNsfw": false,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchTerms": [
        "artificial intelligence"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/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 = { "searchTerms": ["artificial intelligence"] }

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Reddit Search Scraper",
        "description": "🔍 Search Reddit by keyword and extract posts, comments, communities, users, and media with scores, engagement metrics, exact timestamps, and rich metadata. Get clean, structured JSON for research, monitoring, analytics, and AI workflows.",
        "version": "0.0",
        "x-build-id": "ClYtfNPPFEdkAaZrF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apt_marble~reddit-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apt_marble-reddit-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/apt_marble~reddit-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apt_marble-reddit-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/apt_marble~reddit-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apt_marble-reddit-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "One or more keywords to search Reddit for.",
                        "default": [
                            "artificial intelligence"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchCommunityName": {
                        "title": "Community (optional)",
                        "type": "string",
                        "description": "If provided, the search will be performed only inside this community (e.g., 'programming'). Applies to posts, comments and media — community and user searches are always global.",
                        "default": ""
                    },
                    "searchForPosts": {
                        "title": "Search for posts",
                        "type": "boolean",
                        "description": "Scrape posts matching the search terms.",
                        "default": true
                    },
                    "searchForComments": {
                        "title": "Search for comments",
                        "type": "boolean",
                        "description": "Scrape comments matching the search terms.",
                        "default": false
                    },
                    "searchForCommunities": {
                        "title": "Search for communities",
                        "type": "boolean",
                        "description": "Scrape communities (subreddits) matching the search terms.",
                        "default": false
                    },
                    "searchForUsers": {
                        "title": "Search for users",
                        "type": "boolean",
                        "description": "Scrape user profiles matching the search terms.",
                        "default": false
                    },
                    "searchForMedia": {
                        "title": "Search for media",
                        "type": "boolean",
                        "description": "Scrape media posts (images, videos, galleries) matching the search terms.",
                        "default": false
                    },
                    "sortSearch": {
                        "title": "Sort search",
                        "enum": [
                            "",
                            "relevance",
                            "hot",
                            "top",
                            "new",
                            "rising",
                            "comments"
                        ],
                        "type": "string",
                        "description": "How Reddit ranks the results.",
                        "default": ""
                    },
                    "filterByDate": {
                        "title": "Filter by date (Posts only)",
                        "enum": [
                            "",
                            "hour",
                            "day",
                            "week",
                            "month",
                            "year"
                        ],
                        "type": "string",
                        "description": "Only include results from this time window.",
                        "default": ""
                    },
                    "maxPostsPerTerm": {
                        "title": "Maximum posts per search term",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many posts to scrape for each search term.",
                        "default": 10
                    },
                    "maxCommentsPerTerm": {
                        "title": "Maximum comments per search term",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many comments to scrape for each search term.",
                        "default": 10
                    },
                    "maxCommunitiesPerTerm": {
                        "title": "Maximum communities per search term",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many communities to scrape for each search term.",
                        "default": 5
                    },
                    "maxUsersPerTerm": {
                        "title": "Maximum users per search term",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many users to scrape for each search term.",
                        "default": 5
                    },
                    "maxMediaPerTerm": {
                        "title": "Maximum media posts per search term",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many media posts to scrape for each search term.",
                        "default": 5
                    },
                    "includeNsfw": {
                        "title": "Include NSFW results (advanced)",
                        "type": "boolean",
                        "description": "Include results marked 18+. Off by default.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many search terms to process in parallel.",
                        "default": 3
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
