# Reddit Universal Scraper (No API/Cookies) (`dead00/reddit-universal-scraper-no-api-cookies`) Actor

A powerful and reliable Reddit scraper that extracts posts, comments, user profiles, and subreddit data **without requiring Reddit API keys**. Features intelligent sorting, time filtering, and built-in proxy support.

- **URL**: https://apify.com/dead00/reddit-universal-scraper-no-api-cookies.md
- **Developed by:** [Dead](https://apify.com/dead00) (community)
- **Categories:** Developer tools, Automation, Social media
- **Stats:** 19 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 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 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 Universal Scraper

## A powerful and reliable Reddit scraper that extracts posts, comments, user profiles, and subreddit data **without requiring Reddit API keys**. Features intelligent sorting, time filtering, and built-in proxy support.

### ✨ Features

- 🔥 **No API Keys Required**
- 📊 **Complete Data Extraction** - Posts, comments, user profiles, and subreddit metadata
- 🎯 **Multiple Sort Options** - Hot, New, Top, Rising, Controversial
- ⏰ **Time Filters** - Hour, Day, Week, Month, Year, All Time
- 🔄 **Pagination Support** - Scrape up to 1000+ posts per run
- 💬 **Nested Comments** - Extract full comment threads with reply depth
- 👤 **User Analysis** - Profile data including karma and account age
- 🔐 **Proxy Support** - Built-in Apify residential proxy integration
- 📦 **Organized Output** - Clean data structure with type identification
- 🚀 **Rate Limiting** - Smart delays to avoid Reddit blocking

***

### 🚀 Quick Start

#### Example 1: Scrape Hot Posts

```json
{
  "scrapeType": "subreddit",
  "subredditName": "python",
  "sortType": "hot",
  "maxPosts": 100
}
```

#### Example 2: Top Posts of the Week

```json
{
  "scrapeType": "subreddit",
  "subredditName": "AskReddit",
  "sortType": "top",
  "timeFilter": "week",
  "maxPosts": 50
}
```

#### Example 3: Scrape User Posts

```json
{
  "scrapeType": "user",
  "username": "spez",
  "sortType": "top",
  "timeFilter": "all",
  "maxPosts": 100,
  "getUserProfile": true
}
```

***

### 📋 Input Parameters

#### **Scrape Type**

| Value | Description |
|-------|-------------|
| `subreddit` | Scrape posts from a subreddit |
| `user` | Scrape posts from a user's profile |
| `both` | Scrape both subreddit and user |

#### **Required Fields**

- **`subredditName`** - Subreddit name without 'r/' (e.g., "python", "technology")
- **`username`** - Username without 'u/' (e.g., "spez", "gallowboob")

> **Note:** If `scrapeType` is "subreddit", only `subredditName` is required. If "user", only `username` is required. If "both", both are required.

#### **Sort Options**

| Sort Type | Description | Best For |
|-----------|-------------|----------|
| `hot` | Currently trending posts | Real-time popular content |
| `new` | Latest posts chronologically | Breaking news, monitoring |
| `top` | Most upvoted posts | Quality content, research |
| `rising` | Posts gaining traction | Early trend detection |
| `controversial` | Most debated posts | Controversial topics |

#### **Time Filters** (Top/Controversial only)

| Filter | Range |
|--------|-------|
| `hour` | Past hour |
| `day` | Today |
| `week` | This week |
| `month` | This month |
| `year` | This year |
| `all` | All time |

> ⚠️ **Important:** Time filters only work with `top` and `controversial` sorting.

#### **Limits**

| Parameter | Min | Max | Default | Description |
|-----------|-----|-----|---------|-------------|
| `maxPosts` | 1 | 1000 | 100 | Posts to scrape |
| `maxPostsForComments` | 1 | 100 | 10 | Posts to get comments from |
| `commentsPerPost` | 10 | 500 | 50 | Comments per post |

#### **Optional Features**

| Feature | Default | Description |
|---------|---------|-------------|
| `scrapeComments` | `false` | Extract comments (slower) |
| `getUserProfile` | `true` | Get user profile data |
| `getSubredditInfo` | `true` | Get subreddit metadata |
| `scrapeUserPosts` | `true` | Scrape user's posts |

#### **Proxy Configuration**

- **Enabled by default** - Uses Apify residential proxies
- Helps avoid Reddit rate limiting
- Free credits included with Apify

***

### 📊 Output Data Structure

All data is saved with a `data_type` field for easy filtering:

#### **Post Data** (`data_type: "post"` or `"user_post"`)

```json
{
  "data_type": "post",
  "id": "1jy1wdc",
  "title": "I made an n8n Cheat Sheet!",
  "author": "Superb_Net_7426",
  "subreddit": "n8n",
  "score": 2032,
  "upvote_ratio": 0.99,
  "num_comments": 81,
  "created_utc": "2025-04-13T07:06:07",
  "post_type": "image",
  "url": "https://i.redd.it/w4ult2xaxjue1.png",
  "full_link": "https://reddit.com/r/n8n/comments/1jy1wdc/...",
  "selftext": "",
  "domain": "i.redd.it",
  "link_flair_text": null,
  "thumbnail": "https://...",
  "media_url": "https://i.redd.it/w4ult2xaxjue1.png",
  "preview_images": ["https://..."],
  "is_video": false,
  "is_self": false,
  "over_18": false,
  "spoiler": false,
  "stickied": false,
  "locked": false,
  "gilded": 0,
  "total_awards_received": 0,
  "sort_type": "top",
  "time_filter": "all",
  "scraped_at": "2025-12-29T10:30:00"
}
```

#### **Comment Data** (`data_type: "comment"`)

```json
{
  "data_type": "comment",
  "comment_id": "abc123",
  "post_id": "1jy1wdc",
  "post_title": "I made an n8n Cheat Sheet!",
  "subreddit": "n8n",
  "author": "user123",
  "body": "This is amazing! Thanks for sharing.",
  "score": 45,
  "depth": 0,
  "parent_id": "",
  "created_utc": "2025-04-13T08:00:00",
  "post_permalink": "/r/n8n/comments/1jy1wdc/...",
  "post_full_link": "https://reddit.com/r/n8n/comments/1jy1wdc/...",
  "gilded": 0,
  "is_submitter": false,
  "scraped_at": "2025-12-29T10:30:00"
}
```

#### **User Profile** (`data_type: "user_profile"`)

```json
{
  "data_type": "user_profile",
  "username": "spez",
  "link_karma": 123456,
  "comment_karma": 789012,
  "total_karma": 912468,
  "created_utc": "2005-06-06T00:00:00",
  "account_age_days": 7146,
  "is_gold": true,
  "is_mod": true,
  "is_employee": true,
  "verified": true,
  "icon_img": "https://...",
  "scraped_at": "2025-12-29T10:30:00"
}
```

#### **Subreddit Info** (`data_type: "subreddit_info"`)

```json
{
  "data_type": "subreddit_info",
  "name": "n8n",
  "title": "n8n - Workflow Automation",
  "description": "n8n is a free and source-available workflow automation tool",
  "long_description": "Full description with rules...",
  "subscribers": 50000,
  "active_users": 500,
  "created_utc": "2019-06-01T00:00:00",
  "over_18": false,
  "url": "https://reddit.com/r/n8n",
  "icon_img": "https://...",
  "banner_img": "https://...",
  "scraped_at": "2025-12-29T10:30:00"
}
```

### 🎯 Common Use Cases

#### **1. News Monitoring**

```json
{
  "scrapeType": "subreddit",
  "subredditName": "worldnews",
  "sortType": "new",
  "maxPosts": 200,
  "scrapeComments": false
}
```

**Use:** Track breaking news in real-time

#### **2. Viral Content Discovery**

```json
{
  "scrapeType": "subreddit",
  "subredditName": "memes",
  "sortType": "top",
  "timeFilter": "day",
  "maxPosts": 50
}
```

**Use:** Find trending memes and viral content

#### **3. Market Research**

```json
{
  "scrapeType": "subreddit",
  "subredditName": "startups",
  "sortType": "top",
  "timeFilter": "month",
  "maxPosts": 100,
  "scrapeComments": true,
  "maxPostsForComments": 20
}
```

**Use:** Research startup trends and discussions

#### **4. Influencer Analysis**

```json
{
  "scrapeType": "user",
  "username": "influencer_name",
  "sortType": "top",
  "timeFilter": "year",
  "maxPosts": 200,
  "getUserProfile": true
}
```

**Use:** Analyze influencer activity and engagement

#### **5. Community Analysis**

```json
{
  "scrapeType": "subreddit",
  "subredditName": "your_community",
  "sortType": "controversial",
  "timeFilter": "week",
  "maxPosts": 50,
  "scrapeComments": true,
  "maxPostsForComments": 50
}
```

**Use:** Monitor community health and controversy

#### **6. Content Research**

```json
{
  "scrapeType": "subreddit",
  "subredditName": "writing",
  "sortType": "top",
  "timeFilter": "week",
  "maxPosts": 30,
  "scrapeComments": true
}
```

**Use:** Find content ideas and trending topics

***

### ⚙️ Performance & Limits

#### **Speed Estimates**

| Configuration | Approximate Time |
|--------------|------------------|
| 50 posts, no comments | 1-2 minutes |
| 100 posts, no comments | 2-3 minutes |
| 100 posts, 10 with comments | 5-7 minutes |
| 500 posts, no comments | 8-12 minutes |
| 100 posts, all with comments | 20-30 minutes |

#### **Reddit Limits**

- Maximum ~1000 posts available per subreddit/sort combination
- Stickied posts may appear in results
- Deleted/removed posts are excluded
- `[deleted]` indicates deleted user accounts

#### **Rate Limiting**

- Built-in delays (2-4 seconds between requests)
- Automatic retry on rate limit (429 errors)
- Proxy recommended for heavy scraping

***

### 💡 Pro Tips

#### **1. Fastest Scraping**

```json
{
  "maxPosts": 100,
  "scrapeComments": false,
  "getSubredditInfo": false
}
```

#### **2. Most Complete Data**

```json
{
  "maxPosts": 100,
  "scrapeComments": true,
  "maxPostsForComments": 20,
  "commentsPerPost": 100
}
```

#### **3. Real-time Monitoring**

```json
{
  "sortType": "new",
  "maxPosts": 50,
  "scrapeComments": false
}
```

#### **4. Quality Content Research**

```json
{
  "sortType": "top",
  "timeFilter": "month",
  "maxPosts": 100
}
```

#### **5. Early Trend Detection**

```json
{
  "sortType": "rising",
  "maxPosts": 50
}
```

### 🔐 Privacy & Ethics

- ✅ Scrapes only **public** Reddit data
- ✅ Respects Reddit's rate limits
- ✅ No authentication required
- ✅ Follows ethical scraping practices
- ⚠️ Always respect user privacy
- ⚠️ Use data responsibly
- ⚠️ Follow Reddit's [Content Policy](https://www.redditinc.com/policies/content-policy)

Need help? Here's how to get support:

1. **Review example inputs** in this README
2. **Contact via Apify Console** - Use the feedback button in your run
3. **Check logs** - Actor logs show detailed progress and errors

# Actor input Schema

## `scrapeType` (type: `string`):

Choose whether to scrape a subreddit, user profile, or both. Output will include a 'data\_type' field to help you filter results.

## `subredditName` (type: `string`):

Enter subreddit name WITHOUT 'r/' prefix (e.g., 'python', 'AskReddit', 'technology')

## `getSubredditInfo` (type: `boolean`):

For Subreddit/Both mode: Get subscriber count, description, etc.

## `maxSubredditPosts` (type: `integer`):

Number of posts to scrape from the subreddit. Reddit typically has 1000+ posts available per subreddit.

## `sortType` (type: `string`):

How to sort the posts

## `timeFilter` (type: `string`):

Time range for Top/Controversial sorting. This is IGNORED for Hot/New/Rising.

## `scrapeComments` (type: `boolean`):

Enable to scrape comments from posts. WARNING: This makes scraping MUCH slower!

## `maxPostsForComments` (type: `integer`):

Scrape comments from first N posts. Recommended: 10-20 to avoid timeout.

## `commentsPerPost` (type: `integer`):

Maximum comments to scrape per post (includes nested replies)

## `username` (type: `string`):

Enter username WITHOUT 'u/' prefix (e.g., 'spez', 'gallowboob')

## `getUserProfile` (type: `boolean`):

For User/Both mode: Get user's karma, account age, and badges

## `scrapeUserPosts` (type: `boolean`):

For User/Both mode: Scrape the user's submitted posts

## `maxUserPosts` (type: `integer`):

Number of posts to scrape from the user's profile. Only applies when scraping users.

## `scrapeUserComments` (type: `boolean`):

For User/Both mode: Scrape the user's comment history across all subreddits

## `maxUserComments` (type: `integer`):

Number of comments to scrape from the user's comment history. Only applies when scraping users.

## `proxyConfiguration` (type: `object`):

Select Residential proxy to avoid blocking. Apify provides free proxy credits!

## Actor input object example

```json
{
  "scrapeType": "subreddit",
  "subredditName": "python",
  "getSubredditInfo": true,
  "maxSubredditPosts": 100,
  "sortType": "hot",
  "timeFilter": "week",
  "scrapeComments": false,
  "maxPostsForComments": 10,
  "commentsPerPost": 50,
  "username": "spez",
  "getUserProfile": true,
  "scrapeUserPosts": true,
  "maxUserPosts": 100,
  "scrapeUserComments": false,
  "maxUserComments": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "subredditName": "python"
};

// Run the Actor and wait for it to finish
const run = await client.actor("dead00/reddit-universal-scraper-no-api-cookies").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 = { "subredditName": "python" }

# Run the Actor and wait for it to finish
run = client.actor("dead00/reddit-universal-scraper-no-api-cookies").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 '{
  "subredditName": "python"
}' |
apify call dead00/reddit-universal-scraper-no-api-cookies --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/XMwao9agLiRhtxRHQ/builds/Qtci4ihdUwYpnugwQ/openapi.json
