# Reddit Scraper - Posts, Comments, Search + AI Analysis ✅ (`unseenuser/reddit-scraper`) Actor

Scrape any subreddit, search across all of Reddit, and pull complete comment threads with every reply intact. Also grabs video transcripts and subreddit profiles. Optional AI sentiment and pain-point analysis with your own key. No Reddit account, no login, no cookies, no run-start fee.

- **URL**: https://apify.com/unseenuser/reddit-scraper.md
- **Developed by:** [Unseen User](https://apify.com/unseenuser) (community)
- **Categories:** Developer tools, Social media, AI
- **Stats:** 20 total users, 7 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.50 / 1,000 reddit posts

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 Scraper - Posts, Comments, Search, Transcripts + AI Analysis

Scrape any subreddit, search across all of Reddit, pull complete comment threads with the reply structure intact, snapshot subreddit profiles, and get transcripts from Reddit videos. Optionally add AI sentiment and pain-point analysis using your own Claude key.

No Reddit account. No cookies. No login. No proxy to configure. **No run-start fee** - you pay for results, nothing else.

> **August 2026: Reddit ad data is gone.** Reddit shut down its public Ad Library and the upstream endpoints were permanently retired, so no tool can return Reddit ad data any more. The two ad modes have been removed. Everything else is unaffected, and the ad pricing events have been deleted rather than left to charge for something that cannot be delivered.

***

### What does this actor do?

Six jobs, one actor. Pick one, paste what you want to look at, run.

| Job | What you paste | What you get back |
|---|---|---|
| 📰 Subreddit posts | Subreddit names | Post rows, ranked and time-filtered |
| 🔎 Search all of Reddit | Search terms | Matching posts from anywhere on Reddit |
| 🔍 Search inside subreddits | Subreddit names + words | Matching posts, comments and media |
| 💬 Comments on a post | Reddit post links | The post, then one row per comment |
| ℹ️ Subreddit profile | Subreddit names | Active users, weekly posts, rules, description |
| 🎬 Video transcript | Reddit video links | Plain-text transcript from the captions |

#### What makes it different

**Comment threads arrive complete.** Replies are followed to the end and returned one row per comment, with `parentCommentId` and `depth` so the tree rebuilds. Most scrapers hand you top-level comments and stop.

**Video transcripts.** Comparing against the other Reddit scrapers published on Apify, none of them return transcripts of Reddit videos.

**Optional AI analysis with your own key.** Sentiment, intent, pain points, feature requests and buying signals, added to each row. You pay Anthropic for usage directly and this actor charges a small fee per analysed row.

**Every result you are billed for is a row you can see.** A 200-comment thread gives you 201 rows and bills 201 results.

#### How it works

Your input goes to this actor, which calls [Scrape Creators](https://scrapecreators.com) Reddit endpoints and returns the response as structured rows. The actor never touches Reddit's own HTML or its official Data API, which is why there is no account to create, no cookie jar to maintain, and nothing for Reddit to rate-limit you on.

***

### Which mode should I use?

Start from the question you are trying to answer.

**"What is r/SaaS talking about this week?"**
→ 📰 **Subreddit posts**. Paste the subreddit, pick a time window. This is the ranked feed.

**"Is anyone mentioning my brand anywhere on Reddit?"**
→ 🔎 **Reddit search**. Site-wide keyword search. Every row tells you which subreddit it came from.

**"What do people in r/MachineLearning say specifically about AI agents?"**
→ 🔍 **Subreddit search**. Same as above but scoped to the communities you name, which cuts the noise dramatically.

**"What did people actually reply to this post?"**
→ 💬 **Post comments**. Give it a post URL, get the thread with its structure intact.

**"Is this subreddit big enough to be worth targeting, and will they ban me for posting?"**
→ ℹ️ **Subreddit info**. Weekly active users, weekly post volume, the full rules and the description.

**"What is actually said in this Reddit video?"**
→ 🎬 **Video transcript**. Plain text from the caption track, when Reddit publishes one.

The two search modes are the ones people confuse. **Reddit search** looks across all of Reddit; **Subreddit search** looks only inside subreddits you name. Use the first for brand monitoring, the second for research inside a known community.

***

### What do I put in the input?

Four fields cover most runs. Three more appear only for the modes that need them.

#### The four core fields

**1. Mode** - which of the six jobs above.

**2. Paste your input here** - one universal box. What goes in it depends on your mode, and the mode dropdown tells you which:

| Mode | Paste |
|---|---|
| 📰 Subreddit posts | Subreddit names - `r/SaaS`, `/r/SaaS` or `SaaS` |
| 🔎 Reddit search | Search terms, one per line |
| 💬 Post comments | Full Reddit post URLs |
| 🔍 Subreddit search | Subreddit names (keywords go in the separate box) |
| ℹ️ Subreddit info | Subreddit names |

**3. What to fetch** - one dropdown covering both sort order and time window, so you are not matching two fields together and wondering why "top" and "hour" disagree.

**4. How many results (0 = all)** - one universal cap that applies to posts or comments depending on the mode. `0` means everything available.

#### The conditional fields

**Search terms** - only for 🔍 Subreddit search. These are the words you are searching *for*, inside the subreddits you pasted above.

**Reply depth (0 = all)** - only for 💬 Post comments. How many reply levels to follow.

#### Filters (all optional)

Leave the whole Filters section empty and you get everything, exactly as before. Every filter narrows what reaches the dataset, so **it also lowers what you pay** - filtered rows are never written and never billed.

| Filter | What it does |
|---|---|
| **Only posts after** | `2026-03-01`, or relative: `7d`, `24h`, `3mo`, `1y` |
| **Only posts before** | Same formats. Combine the two for an exact window. |
| **Include NSFW posts** | On by default. Turn off to drop over-18 content. |
| **Minimum upvotes** | Skip posts and comments below this score. |
| **Minimum comments** | Skip posts with little discussion. Not applied to comment rows. |
| **Keyword filter** + mode | Match against title and body, then either keep only matches or drop them. Case-insensitive. |

Date filtering runs client-side after each page is fetched, which is why it works on **every** mode and **every** sort order - Reddit's own listing endpoints only offer coarse relative windows and ignore them entirely for several sorts.

#### Legacy field names still work

If you built an integration against the older field names - `subreddits`, `postUrls`, `searchQueries`, `sortBy`, `timeFilter`, `maxPostsPerSubreddit`, `maxCommentsPerPost`, `maxCommentDepth` and the rest - they are still accepted and take precedence over the new ones. Nothing you built has broken.

***

### How do I scrape a subreddit?

Pick 📰 Subreddit posts, paste subreddit names, choose a ranking, set a limit.

Subreddit names work in any format. `r/SaaS`, `/r/SaaS`, and `SaaS` are all accepted.

**Input**

```json
{
  "mode": "subreddit_posts",
  "targets": ["r/SaaS", "r/Entrepreneur"],
  "timeRange": "top-this-week",
  "limit": 100
}
```

**Output row**

```json
{
  "_recordType": "post",
  "_sourceMode": "subreddit_posts",
  "postId": "1t4oetr",
  "title": "Left a $320k job for an unknown startup",
  "selftext": "18 months ago I left a well known startup...",
  "authorUsername": "Royal_Battle1913",
  "authorId": "t2_2b3jzspk0e",
  "subreddit": "SaaS",
  "subredditId": "t5_2qkq6",
  "postedAt": "2026-05-05T18:42:09.000Z",
  "scoreUpvotes": 29,
  "upvoteRatio": 0.74,
  "commentCount": 50,
  "isStickied": false,
  "isLocked": false,
  "isNsfw": false,
  "isSpoiler": false,
  "mediaType": "text",
  "domain": "self.SaaS",
  "permalink": "https://www.reddit.com/r/SaaS/comments/1t4oetr/...",
  "scrapedAt": "2026-07-30T09:14:22.108Z"
}
```

#### Ranking options

One dropdown covers both sort order and time window:

🔥 Hot right now · 🆕 Newest first · 📈 Rising · 🏆 Top of the past hour / today / this week / this month / this year / all time · 🌶️ Controversial today / of all time · 🎯 Most relevant · 💬 Most comments

Empty fields and empty arrays are stripped before the row is written, so you get compact JSON rather than a wall of nulls.

***

### How do I monitor my brand across Reddit?

Pick 🔎 Reddit search, paste your brand name, sort by newest, run it on a schedule.

**Input**

```json
{
  "mode": "reddit_search",
  "targets": ["your brand name", "yourbrand.com"],
  "timeRange": "newest",
  "limit": 200
}
```

Each search term runs as its own query, and every returned row carries `searchQuery` so you can tell which term matched.

You get `subreddit` on every row, so you can see instantly which communities are talking about you. `scoreUpvotes` and `commentCount` tell you whether a mention is spreading or sitting still. Feed the `title` and `selftext` into your own sentiment tooling.

To watch a competitor instead, put their name in `targets`. To narrow to one community, use 🔍 Subreddit search with the subreddits in `targets` and your terms in the **Search terms** box.

**Suggested schedule:** run daily with `timeRange: "newest"` and a limit around 100. At the current post rate that is a few cents a day.

***

### How do I get a full comment thread?

Pick 💬 Post comments and paste post URLs. You get the post plus its comment tree with the reply structure preserved.

**Input**

```json
{
  "mode": "post_comments",
  "targets": ["https://www.reddit.com/r/SaaS/comments/1t4oetr/..."],
  "timeRange": "top-all-time",
  "limit": 200,
  "commentDepth": 5
}
```

**Output** - one row for the post, then one row per comment

```json
{
  "_recordType": "post",
  "_sourceMode": "post_comments",
  "postId": "1t4oetr",
  "title": "Left a $320k job for an unknown startup",
  "subreddit": "SaaS",
  "scoreUpvotes": 29,
  "commentCount": 50
}
{
  "_recordType": "comment",
  "_sourceMode": "post_comments",
  "commentId": "n8x2k1p",
  "parentCommentId": null,
  "depth": 0,
  "replyCount": 1,
  "authorUsername": "some_user",
  "text": "The equity math here does not work the way you think.",
  "scoreUpvotes": 84,
  "isOP": false,
  "isDeleted": false,
  "isRemoved": false,
  "postedAt": "2026-05-05T19:02:11.000Z",
  "postId": "1t4oetr",
  "postTitle": "Left a $320k job for an unknown startup",
  "subreddit": "SaaS",
  "postUrl": "https://www.reddit.com/r/SaaS/comments/1t4oetr/..."
}
{
  "_recordType": "comment",
  "_sourceMode": "post_comments",
  "commentId": "n8x3f9d",
  "parentCommentId": "n8x2k1p",
  "depth": 1,
  "replyCount": 0,
  "authorUsername": "Royal_Battle1913",
  "text": "Fair, I cashed out 70% already.",
  "isOP": true,
  "postId": "1t4oetr",
  "postTitle": "Left a $320k job for an unknown startup",
  "subreddit": "SaaS"
}
```

#### Why one row per comment

Every result you are billed for is a row you can see. A 200-comment thread gives you 201 rows and bills 201 results - never 200 charges for a single row.

It also means comments sort, filter and export to CSV on their own. Rebuild the tree whenever you need it from `parentCommentId` and `depth`, or read the pre-assembled nested version from the key-value store under `thread-<postId>` at no extra charge.

Each comment row carries `postTitle`, `postUrl` and `subreddit`, so a CSV export makes sense without joining anything back.

Every comment carries `isOP` so you can separate the author's replies from everyone else's, and `isDeleted` / `isRemoved` so removed content keeps its place in the thread instead of silently vanishing. That means you can measure removal rates and moderator activity, not just read what survived.

**Both limits accept 0 for "everything":** `limit: 0` returns all comments, `commentDepth: 0` follows every reply level.

***

### What can I build with this data?

Concrete jobs people run this actor for.

**Voice-of-customer research.** Reddit is where people describe problems in their own words, before a vendor has reframed them. Pull 🔍 Subreddit search across the communities your buyers live in, using the words they would use for the problem rather than the words your marketing uses. The `selftext` and comment `text` fields are the raw material.

**Community sizing before you invest.** Run ℹ️ Subreddit info across candidate communities. `subscriberCount` and `activeUserCount` size the audience; `rules` tells you whether self-promotion will get you banned before you write a single post.

**Trend and virality tracking.** 📰 Subreddit posts with `timeRange: "top-today"` on a schedule. Compare `scoreUpvotes` against `postedAt` to see what accelerated.

**Support and bug triage.** 🔎 Reddit search on your product name plus words like "broken", "not working", or "how do I". Complaints reach Reddit long before they reach your helpdesk.

**Content research.** 🏆 Top of all time on a subreddit is a ranked list of what that audience has already voted as worth reading.

#### AI enrichment, with your own key

Every job above gets sharper when the rows arrive already classified. Tick any combination under 🤖 **AI enrichment** and each post and comment row gains:

| Enrichment | What lands on the row | Price per row |
|---|---|---|
| 😀 **Sentiment** | `label`, `score` (-1 to 1), `emotion` | $0.002 |
| 🎯 **Intent** | question / complaint / recommendation / announcement / discussion / comparison / other, with a confidence | $0.002 |
| 🔧 **Pain points** | verbatim spans describing a problem, each with a category and severity | $0.004 |
| 💡 **Feature requests** | verbatim spans asking for something | $0.004 |
| 💰 **Buying intent** | a post-level score and the signals behind it | $0.004 |

**You bring the key.** Paste a Claude API key from [console.anthropic.com](https://console.anthropic.com) and you pay Anthropic for usage directly. The fee above covers batching, prompting, quote verification and retries, not the inference, which is why it is a fraction of what a managed enrichment service charges.

Three models to pick from, cheapest first:

| Model | When to use it |
|---|---|
| **Haiku 4.5** (default) | Sentiment and intent on short Reddit text. Genuinely good enough, and the cheapest by a wide margin. Start here. |
| **Sonnet 5** | Pain-point and feature-request extraction where the quotes need to be sharper. |
| **Opus 5** | Nuanced or ambiguous material where accuracy matters more than cost. |

**How it behaves**

- **Opt-in only.** No enrichment selected, or no key supplied, means no LLM call and no charge. Scraping is unaffected.
- **It cannot break your run.** A missing key, an unparseable reply or a provider outage degrades to "no enrichment" and the scrape finishes normally.
- **You pay only for rows that came back enriched.** Enriched rows carry `enrichedAt`; rows without it cost nothing extra.
- **Filters run first**, so rows you filtered out never consume your tokens.
- **Quotes are verified.** Pain points and feature requests are checked against the source text and dropped if the model invented them.
- **One batched call** per group of rows, to keep your token bill down.
- **Reddit text is treated as data, not instructions.** Post bodies are passed inside delimiters with an explicit instruction to ignore any directives inside them, so a crafted post cannot steer the model.
- **Buying intent scores the post, not the person.** Person-level lead scoring is deliberately out of scope - it conflicts with Reddit's user agreement and with this actor's own terms.

***

### What fields do I get back?

Every row carries two routing fields so you can filter a mixed dataset cleanly:

- `_recordType` - `post`, `comment`, `subreddit_info`, or `ad`
- `_sourceMode` - which of the seven modes produced this row

Null values and empty arrays are stripped before writing, so a row only contains fields that actually have data.

#### Post fields

`postId` · `url` · `permalink` · `title` · `selftext` · `authorUsername` · `authorId` · `subreddit` · `subredditId` · `postedAt` · `scoreUpvotes` · `upvoteRatio` · `commentCount` · `awards` · `flair` · `isStickied` · `isLocked` · `isNsfw` · `isSpoiler` · `mediaType` · `mediaUrls` · `domain` · `sourceUrl` · `crossPostOf` · `searchQuery` · `searchSubreddit` · `scrapedAt`

`mediaType` is one of `text`, `image`, `video`, `link`, `gallery`, `crosspost`, `unknown`. `sourceUrl` is set whenever the post points somewhere other than its own permalink, so link posts and image posts both give you the destination.

#### Comment fields

`commentId` · `postId` · `parentCommentId` · `depth` · `replyCount` · `authorUsername` · `text` · `postedAt` · `scoreUpvotes` · `awards` · `isStickied` · `isOP` · `isDeleted` · `isRemoved` · `postTitle` · `postUrl` · `subreddit` · `scrapedAt`

One row per comment. Rebuild the thread from `parentCommentId` and `depth`, or read the pre-nested tree from the key-value store under `thread-<postId>`.

#### Subreddit fields

`subreddit` · `subredditId` · `displayName` · `description` · `subscriberCount` · `activeUserCount` · `weeklyContributions` · `createdAt` · `iconUrl` · `bannerUrl` · `advertiserCategory` · `submitText` · `rulesText` · `scrapedAt`

`rulesText` is the subreddit's rules as Reddit publishes them - a markdown string, not a structured list. `activeUserCount` is weekly active users and `weeklyContributions` is weekly post volume, which together tell you whether a community is actually alive.

#### Dataset views

Four preset views in the Apify UI: **🗂 Everything**, **📰 Posts**, **💬 Comments**, **🤖 AI analysis**. Switch between them in the dataset preview or pass `?view=posts` to the API. Every view leads with a Row type column, because a single dataset can hold posts, comments, media, subreddit profiles and transcripts together.

***

### How much does it cost?

You pay per result, and **every result you are billed for is a row you can see in the dataset.** There is **no run-start fee** - several actors in this category charge $0.02 to $0.10 just to press Start, which hurts most if you call the actor often with small requests. This one does not.

| Event | Price | Per 1,000 |
|---|---|---|
| Reddit post | $0.0015 | $1.50 |
| Subreddit search match | $0.0015 | $1.50 |
| Reddit search result | $0.0015 | $1.50 |
| Reddit comment | $0.001 | $1.00 |
| Subreddit profile | $0.004 | $4.00 |

**Worked costs**

- 100 posts from a subreddit: **$0.15**
- Daily brand monitoring, 100 results a day: **$0.15/day**, about $4.50 a month
- A 200-comment thread: **$0.20** for 201 rows
- 3 subreddit profiles with rules and activity stats: **$0.012**

At $1.50 per 1,000 posts this is cheaper than most Reddit scrapers on Apify, and there is no fee just to press Start.

#### Keeping the bill predictable

- `limit: 0` means "everything", but the actor still enforces internal ceilings so a broad query cannot run away with your budget.
- Any positive number is an exact cap.
- If you request more than the internal ceiling, the actor caps it, **warns you in the run log, and sets a warning on the run status**. It does not truncate silently.

***

### Will I get blocked or rate-limited?

The most common complaint about Reddit scrapers is 403s and blocks. This actor is built so that failure mode does not apply.

**No Reddit account.** No signup, no username, no password.

**No cookies, no login, no session to expire.** Nothing to refresh when Reddit rotates something.

**No proxy to configure and no proxy bill.** Several actors in this category require you to supply a proxy configuration. This one never connects to Reddit directly - requests go to the Scrape Creators API - so there is nothing to proxy.

**Reliability.** Across 176,512 runs of all UnseenUser actors, the failure rate is **0.20%**. That figure is portfolio-wide, not this actor alone.

**Retries.** Rate limits and server errors are retried with exponential backoff. Genuine client errors, like a malformed subreddit name, fail fast with the real message instead of burning four retries first.

***

### How do I call this from n8n, Make, or Python?

#### Synchronous - run and get rows in one call

```bash
curl -X POST "https://api.apify.com/v2/acts/unseenuser~Reddit-Scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "reddit_search",
    "targets": ["your brand"],
    "timeRange": "newest",
    "limit": 50
  }'
```

Add `&view=posts` to apply a dataset view, or `&format=csv` for CSV.

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")

run = client.actor("unseenuser/Reddit-Scraper").call(run_input={
    "mode": "subreddit_search",
    "targets": ["r/buildapc"],
    "keywords": ["cooling"],
    "limit": 30,
})

for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row.get("title") or row.get("text"))
```

#### n8n

Use the **Apify** node, action **Run an Actor and get dataset**. Set Actor to `unseenuser/Reddit-Scraper` and paste the same JSON into Custom Body. The synchronous endpoint means one node returns your rows - no polling loop needed.

#### Make.com

Apify module, **Run an Actor**, then **Get Dataset Items** against `defaultDatasetId` from the first step.

#### JavaScript

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

const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('unseenuser/Reddit-Scraper').call({
  mode: 'subreddit_posts',
  targets: ['r/SaaS'],
  timeRange: 'top-this-week',
  limit: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'posts');
```

An OpenAPI 3 description ships in [`.actor/openapi.json`](./.actor/openapi.json) if you want a generated client.

***

### Demo video

New to Apify? Schedule this Actor to run automatically:

[![How to schedule tasks to run automatically on the Apify platform](https://img.youtube.com/vi/GRFW_Loo2dk/hqdefault.jpg)](https://www.youtube.com/watch?v=GRFW_Loo2dk)

Connect this Actor to your stack:

[![Getting Started with Apify - Integrations](https://img.youtube.com/vi/bNACk1_S_6w/hqdefault.jpg)](https://www.youtube.com/watch?v=bNACk1_S_6w)

***

### What are the limitations?

Read this before you buy. These are real constraints, not disclaimers.

**Reddit ad data no longer exists anywhere.** Reddit removed its public Ad Library in 2026 and the upstream endpoints were retired, so this actor cannot return ad data and neither can anything else.

**Date filtering happens after fetching, not before.** `postedAfter` / `postedBefore` work on every mode and every sort order, but the actor still has to pull a page from Reddit before it can filter it. Narrowing to a two-day window inside a year of history means paging through a lot to find a little. Pair a tight date range with a matching `What to fetch` window where you can.

**Reddit's listing endpoints cap around 1,000 posts per sort order.** To go deeper into a subreddit's history, run the same subreddit across several sort orders and time windows rather than raising the limit.

**Deep comment threads are pruned.** Very deep reply chains are cut at the depth ceiling. Truncation markers are on the roadmap; today a pruned thread simply ends.

**AI analysis needs your own Claude key.** There is no managed option - if you do not supply a key, no enrichment runs. Enrichment is also probabilistic: sentiment on sarcasm-heavy subreddits is unreliable, and extraction quality tracks whichever model you point it at.

**NSFW is on by default.** Turn off `Include NSFW posts` in the Filters section to drop it, or filter downstream on the `isNsfw` flag.

**Usernames are pseudonymous, but treat them as personal data.** A Reddit username can be linked to a real identity through other signals. If you process EU, UK, California or Israeli residents' data, you are the data controller.

**Not affiliated with Reddit.** Reddit's Data API Terms restrict training commercial AI models on Reddit content. Extraction and analysis are one thing; training is another, and it needs a licence from Reddit directly.

***

### FAQ

**Q: Reddit's official API got expensive and restrictive. Does this still work?**
A: Yes. This actor never touches Reddit's official Data API. No Reddit account, no OAuth app, no API key from Reddit, and none of the rate limits that came with the 2023-2024 changes. Pushshift shutting down does not affect it either.

**Q: Why not just use Reddit's own API?**
A: Cost, restrictions and setup friction. Reddit charges per call above the free tier and commercial use can run into thousands a month. Their terms restrict AI training and several commercial uses. And you have to build and maintain an OAuth app with token rotation. This actor is one input box.

**Q: What is actually unique here versus other Reddit scrapers?**
A: Complete comment threads and video transcripts. Most Reddit scrapers return top-level comments and stop; this one follows replies to the end and gives you one row per comment with the parent link and depth intact. And comparing against the other Reddit scrapers published on Apify, none return transcripts of Reddit videos.

**Q: Can I still see what competitors advertise on Reddit?**
A: Not any more, and not through any tool. Reddit shut down its public Ad Library in 2026 and the endpoints that served it were permanently retired. If you need ad intelligence, the Meta, LinkedIn and Google ad libraries are all still live - see Related scrapers below.

**Q: Do I need a proxy?**
A: No, and there is no field for one. The actor never connects to Reddit directly.

**Q: Do I need cookies or a login?**
A: No. Worth noting honestly: most Reddit scrapers on Apify also do not require cookies, so this is a reassurance rather than a differentiator.

**Q: How do comment limits work?**
A: `limit` caps total comment nodes, `commentDepth` caps reply nesting. Both accept 0 for "no limit". Counting is depth-first, so you get complete top threads rather than a shallow slice of everything.

**Q: Are deleted and removed comments returned?**
A: Yes, with `isDeleted` and `isRemoved` flags and their position in the tree intact. That lets you measure removal rates without the thread structure collapsing.

**Q: Can I train an AI model on this output?**
A: Not without a licence from Reddit. Their Data API Terms restrict AI training on Reddit content regardless of how you obtained it, and Reddit has litigated this. Using the output for analysis, research and monitoring is a different question from using it as training data.

**Q: What happens if I ask for more than the internal cap?**
A: You get the cap, plus a warning in the run log and on the run status. Never a silent truncation.

**Q: Why do I sometimes get fewer results than my limit?**
A: Because the subreddit or query genuinely does not have that many matching posts in the window you chose. Widen `timeRange` - "top this week" on a small subreddit may only have a dozen posts.

**Q: How does pagination work?**
A: Each listing endpoint returns an `after` cursor and the actor follows it until your limit is met or the cursor runs out. You do not manage it.

**Q: Can I scrape NSFW or quarantined subreddits?**
A: They come through with `isNsfw` and `isQuarantined` flags set. There is no toggle to exclude them yet, so filter downstream for now.

**Q: How fast is it?**
A: Multiple subreddits, queries, post URLs and ad queries run concurrently, and dataset writes are batched per page rather than per row. Pagination within a single query is sequential because Reddit's cursor requires it.

**Q: Is this affiliated with Reddit?**
A: No.

**Q: Where do I report a problem?**
A: The Issues tab on the actor page. Issues are triaged within 24 hours.

***

### Support

**Issues are answered within 24 hours.** Open one on the actor's Issues tab.

Worth including when you do, because it usually gets me to an answer in one round trip instead of three:

- The **run ID** (it is in the URL of the run page)
- The **mode** you were using and what you pasted into the input
- What you expected versus what you got

If something is genuinely broken, say so plainly - a broken actor is my problem to fix, not yours to work around. If a subreddit or query returns less than you expected, check the [limitations](#what-are-the-limitations) section first; Reddit's own caps explain most of it.

Feature requests are welcome on the same tab. Several fields in the current output exist because somebody asked.

***

### Changelog

See [`CHANGELOG.md`](./CHANGELOG.md) for the full history. This actor is actively maintained.

- **1.0** - Seven modes, five dataset views, simplified four-field input, `0 = all` limit convention, batched writes and concurrent execution across targets.

***

### Related scrapers - build a full cross-platform intelligence suite

This actor is one of UnseenUser's social-listening and ad-library series. Combine them for coverage no single platform gives you:

- **[Meta Ad Library Scraper](https://apify.com/unseenuser/meta-ads)** - Facebook, Instagram, Threads, WhatsApp ads
- **[LinkedIn Ad Library Scraper](https://apify.com/unseenuser/LinkedIn-ads)** - B2B ad spy
- **[Google Ads Transparency Scraper](https://apify.com/unseenuser/Google-ads)** - Search, YouTube, Display, Shopping

[See all 16 scrapers by unseenuser →](https://apify.com/unseenuser)

**Bundle pitches:**

- **Cross-platform ad-spy:** Meta + LinkedIn + Google covers every paid channel a competitor is still buying. Reddit's own Ad Library was shut down by Reddit in 2026, so no tool covers that one any more.
- **Cross-platform brand monitoring:** Reddit + X/Twitter + YouTube comments = full text-social listening
- **Sentiment stack:** Reddit posts and comments are the highest-signal raw material for consumer sentiment work

***

### Example tasks

Pre-configured Saved Tasks you can run with one click. Each link goes live after the task is published.

- [Monitor Brand Mentions Across All of Reddit](https://apify.com/unseenuser/Reddit-Scraper/examples/rip-brand-mentions-reddit) - Site-wide weekly brand monitoring; returns every fresh post mentioning your search term.
- [Scrape Top Weekly Posts From Any Subreddit](https://apify.com/unseenuser/Reddit-Scraper/examples/rip-top-weekly-subreddit-posts) - Pull the top posts of the week from one or more subreddits for content and trend tracking.
- [Extract Full Comment Threads From a Reddit Post](https://apify.com/unseenuser/Reddit-Scraper/examples/rip-extract-comment-thread) - Get the complete nested comment tree of any Reddit post, ready for sentiment analysis pipelines.
- [Search Reddit Posts Inside Specific Subreddits](https://apify.com/unseenuser/Reddit-Scraper/examples/rip-keyword-search-in-subreddit) - Find posts about any keyword inside the subreddits you care about - niche customer-voice research.
- [Get Subreddit Subscriber Counts, Rules, and Metadata](https://apify.com/unseenuser/Reddit-Scraper/examples/rip-subreddit-info-snapshot) - Snapshot subreddit subscriber counts, weekly active users and rules for community sizing.

***

***

## 📜 Terms of Service

**By running this actor you accept these terms.** They are reproduced in full below.

### Master Terms of Service V4.0

**Version:** 4.0
**Effective Date:** May 5, 2026

***

### 0. ACCEPTANCE BY USE - IMPORTANT

**Read this section first.**

These Terms of Service ("Terms") form a binding legal agreement between you ("User," "you," "your") and **UnseenUser**, the Publisher of this Apify actor ("UnseenUser," "the Publisher," "we," "us," "our").

#### 0.1 How You Accept These Terms

You accept these Terms by any of the following actions, each of which constitutes a clear, affirmative act of acceptance:

- **(a) Running the Actor** - Initiating any execution of the Actor on the Apify platform
- **(b) Using any output returned by the Actor** for any purpose
- **(c) Continuing to access the Actor's listing or documentation** after these Terms are visible

#### 0.2 Continuing Acceptance

Each time you run the Actor or use its outputs, you reaffirm your acceptance of the then-current Terms. If you do not agree to these Terms or any subsequent update, you must stop using the Actor immediately.

#### 0.3 No Anonymous Acceptance

You cannot disclaim acceptance by:

- Failing to read these Terms before running the Actor
- Running the Actor through automated systems
- Sharing your Apify account with others who may not have read these Terms

By the act of running the Actor on Apify, you bind yourself, your organization (if applicable), and any individuals or systems acting on your behalf or under your authority.

#### 0.4 If You Do Not Accept

If you do not agree to these Terms, you must not run the Actor. No use is authorized without acceptance.

***

### PREAMBLE - UNDERSTANDING THE ARCHITECTURE

Before using the Actor, please understand the technical architecture of the service:

#### The Data Flow

```
You (User) → Apify Platform → Actor (software) → Third-Party API → Source Platform
                                                       ↓
You (User) ← Apify Platform ← Actor (software) ← Third-Party API
```

#### What Each Party Does

- **You (the User):** Run the Actor on the Apify platform with input parameters you choose
- **Apify:** Operates the cloud infrastructure that hosts and executes Actors. Apify is a Czech-incorporated company (Apify Technologies s.r.o.) governed by its own Terms of Service.
- **The Publisher (us):** Publishes software code (the Actor) on Apify's platform. The Actor is a thin wrapper that translates your input into requests to a third-party API and returns the API's responses to you. The Publisher does not operate scraping infrastructure. The Publisher does not store or retain data returned by the Actor. The Publisher does not see, log, or process the personal data of any individuals returned in the Actor's outputs beyond what is incidental to passing the data through.
- **Third-Party API Provider:** HarvestAPI (https://harvest-api.com) or Scrape Creators (https://scrapecreators.com). These are independent third-party companies that operate scraping infrastructure and return data from source platforms.
- **Source Platform:** LinkedIn, TikTok, YouTube, Reddit, Linktree, etc. These are the platforms whose publicly visible data is accessed by the Third-Party API Providers.

#### Why This Matters

Your relationship with the Publisher is that of a software user to a software vendor. The Publisher has the responsibilities of a software vendor (functional code, accurate documentation) and the limits of one (the Publisher is not responsible for how you use the data you obtain).

***

These Terms operate alongside but do not replace:

- Apify's Terms of Service and Acceptable Use Policy (governing your relationship with Apify)
- HarvestAPI Terms of Service and Scrape Creators Terms of Service (governing the underlying data infrastructure)
- Source Platform terms (LinkedIn, TikTok, etc.) governing the public data accessed
- Applicable law in your jurisdiction and the jurisdictions of data subjects

These Terms incorporate the actor-specific addendum published in each Actor's individual listing ("Addendum"). In the event of a conflict, the more restrictive provision applies.

***

### 1. NATURE OF THE SERVICE

#### 1.1 What the Actor Is

The Actor is a software program published on the Apify platform. Each Actor:

- (a) Accepts structured input from you on the Apify platform
- (b) Translates that input into HTTP requests to a third-party API operated by HarvestAPI or Scrape Creators
- (c) Receives HTTP responses from that third-party API
- (d) Returns the response data to you in a structured format on the Apify platform

The Actor's source code is hosted on Apify's infrastructure. The Actor runs in Apify's cloud, not on the Publisher's servers. The Publisher operates no servers running the Actor.

#### 1.2 What the Actor Is Not

The Actor is not:

- (a) A scraping tool - the Publisher does not operate scraping infrastructure, proxies, headless browsers, or fake accounts
- (b) A direct connection to any source platform - connections to source platforms are made by HarvestAPI / Scrape Creators
- (c) A data storage or data retention service - the Publisher does not maintain a database of any data the Actor returns
- (d) A licensed access channel to LinkedIn, TikTok, YouTube, Reddit, X (Twitter), Meta, Linktree, or any other source platform
- (e) Affiliated with, endorsed by, sponsored by, or authorized by any source platform

#### 1.3 The Publisher's Limited Role

The Publisher's role is limited to:

- (a) Designing and writing the Actor's source code
- (b) Publishing the Actor on the Apify Store
- (c) Maintaining the Actor (updating it when API providers change schemas)
- (d) Providing documentation and customer support via Apify's contact mechanism

The Publisher is a software vendor, similar to a developer who publishes an app on the Apple App Store or Google Play Store. The Publisher is not a data provider, data broker, data processor, or data controller for purposes of GDPR, CCPA, Israel's Privacy Protection Law, or equivalent.

#### 1.4 The Third-Party API Providers' Role

HarvestAPI (https://harvest-api.com) and Scrape Creators (https://scrapecreators.com) are independent third-party companies. They:

- (a) Operate the actual data scraping infrastructure
- (b) Maintain relationships with source platforms (or accept the operational risk of accessing public data without such relationships)
- (c) Are themselves Apify publishers (HarvestAPI publishes 9+ actors directly; Scrape Creators publishes 10+)
- (d) Provide their own Terms of Service governing their operations
- (e) Are responsible for compliance obligations relating to the data collection itself

The Publisher is a customer of these providers. The Publisher is not their agent, partner, or representative.

***

### 2. WHO MAY USE THE ACTOR

#### 2.1 Eligibility

You may use the Actor only if:

- (a) You are at least 18 years old or the age of majority in your jurisdiction
- (b) You have legal capacity to enter into binding contracts
- (c) You are not located in or resident of a country subject to comprehensive sanctions by the United States, European Union, United Kingdom, or Israel
- (d) You are not on any prohibited persons list

#### 2.2 User Representations

By using any Actor, you represent and warrant that:

- (a) **Truthful identity:** Information you provide about your identity and intended use is accurate
- (b) **Lawful intent:** Your intended use complies with applicable law in your jurisdiction
- (c) **Source platform compliance:** You will independently comply with the Terms of Service of any source platform whose data you obtain through the Actor
- (d) **Data subject rights:** Where Actor outputs include personal data, you will respect data subject rights under applicable law
- (e) **No prohibited use:** You will not use the Actor for any of the purposes prohibited in Section 4

These representations are continuous - they must remain true throughout your use.

***

### 3. PERMITTED USES

The Actor may be used for any lawful purpose, including:

- Market research and competitive analysis
- Academic research
- Journalism and investigative reporting
- Internal business intelligence
- Brand monitoring
- Recruitment research where consistent with applicable employment law
- Building products that further process publicly available information lawfully

Specific permitted uses for each Actor are described in that Actor's individual listing and Addendum.

***

### 4. PROHIBITED USES

You may not use the Actor for any of the following:

#### 4.1 Illegal Activity

Activity illegal under the law of your jurisdiction, the User's jurisdiction, or the jurisdiction of any data subjects.

#### 4.2 Harassment, Stalking, and Personal Targeting

- Compiling profiles for harassment, stalking, or doxxing
- Tracking individuals' movements or activities without their knowledge
- Building profiles of journalists, activists, dissidents, or vulnerable populations for retaliatory purposes

#### 4.3 Discrimination

- Using outputs for discriminatory employment, lending, housing, or insurance decisions based on protected characteristics
- Building lists for discriminatory purposes

#### 4.4 Spam and Unsolicited Commercial Communication

- Sending unsolicited marketing in violation of CAN-SPAM, CASL, GDPR, PECR, Israeli Anti-Spam Law (סעיף 30א לחוק התקשורת), or equivalent laws
- Building "lead lists" from scraped contacts without proper consent infrastructure
- Reselling contact data for spam purposes

#### 4.5 Fraud and Deception

- Identity theft or impersonation
- Generation of fake reviews, testimonials, or coordinated inauthentic behavior
- Election interference or political disinformation
- Securities fraud

#### 4.6 Source Platform Abuse

- Using outputs to circumvent technical protection measures of source platforms
- Creating fake accounts on source platforms based on Actor outputs
- Vote manipulation, engagement manipulation, or platform algorithm gaming
- Building services that competitively substitute for source platforms

#### 4.7 Reselling the Actor's Service

- Reselling raw Actor outputs as your own data product or scraping-as-a-service
- Sharing your Apify credentials to provide third parties indirect access
- Building competing API services using Actor outputs

#### 4.8 AI Training Without Authorization

- Using Actor outputs as training data for commercial AI/ML models without separate licensing authority from the source platform

#### 4.9 Sensitive Targeting

- Specifically targeting or profiling based on health conditions, sexual orientation, religious beliefs, political opinions, or other sensitive characteristics
- Targeting children under 16 (or local age of consent for data processing)

#### 4.10 Privacy Law Violations

- Processing personal data of EU/UK/California/Israeli residents without complying with applicable privacy law
- Failing to honor data subject access, deletion, or objection requests
- Processing data for purposes incompatible with its publication context

***

### 5. SOURCE PLATFORM TERMS - YOUR RESPONSIBILITY

#### 5.1 Acknowledgment

The Actor accesses publicly visible data on third-party platforms ("Source Platforms") through the Third-Party API Providers (HarvestAPI / Scrape Creators). Source Platforms include LinkedIn, TikTok, YouTube, Reddit, X (Twitter), Meta/Facebook, Linktree, Komi, Pillar, Linkbio, Linkme, and Amazon.

#### 5.2 Your Sole Responsibility

You acknowledge:

- (a) You are solely responsible for ensuring your downstream use of data obtained through the Actor complies with the Source Platform's Terms of Service
- (b) The Publisher makes no representation that any specific use is permitted under any Source Platform's terms
- (c) The Third-Party API Providers, not the Publisher, bear responsibility for the lawfulness of the data collection itself
- (d) You should review Source Platform terms before commercial use:
  - LinkedIn: https://www.linkedin.com/legal/user-agreement
  - TikTok: https://www.tiktok.com/legal/page/global/terms-of-service/en
  - YouTube: https://www.youtube.com/static?template=terms
  - X: https://twitter.com/en/tos
  - Reddit: https://www.redditinc.com/policies/user-agreement
  - Meta: https://www.facebook.com/legal/terms
  - Linktree: https://linktr.ee/s/terms/

#### 5.3 Cease-and-Desist Compliance

If you receive a cease-and-desist letter or other legal demand from a Source Platform regarding your use of Actor outputs, you must:

- (a) Cease the contested use immediately
- (b) Notify UnseenUser within 48 hours via UnseenUser's Apify profile contact form (https://apify.com/UnseenUser)
- (c) Cooperate with the Publisher as needed to mitigate
- (d) Not assert against the Publisher any claim arising from your inability to use the Actor for that Source Platform

***

### 6. DATA PROTECTION - REFLECTING ACTUAL ARCHITECTURE

#### 6.1 Roles Under Privacy Law

For purposes of GDPR, UK GDPR, CCPA, Israel's Privacy Protection Law (PPL) including Amendment 13, and equivalents:

- **You (the User) are the Data Controller** of any personal data you obtain through the Actor and subsequently process for your own purposes
- **HarvestAPI and Scrape Creators** are the entities that collect data from source platforms - they bear the responsibilities of data processors or controllers (depending on context) for the collection itself
- **The Publisher acts solely as a software vendor**, not as a data controller or processor, because the Publisher does not store, retain, or substantively process personal data - the Actor merely passes API responses through

#### 6.2 No Data Retention by the Publisher

The Publisher confirms:

- (a) The Publisher does not maintain a database of personal data obtained through the Actor
- (b) The Actor passes data from the Third-Party API directly to you on the Apify platform - data does not flow through the Publisher's infrastructure
- (c) Apify's standard execution and operational logging may include limited information about Actor runs (input parameters, run duration, data volume) - this is governed by Apify's own privacy practices
- (d) The Publisher does not access, view, or analyze your Actor outputs except as needed for technical support if you specifically share them with the Publisher

#### 6.3 Your Obligations as Data Controller

Where your use of the Actor involves processing personal data, you are responsible for:

- (a) Establishing a lawful basis for your processing (consent, legitimate interest with documented balancing test, contract, etc.)
- (b) Providing transparent notice to data subjects as required by applicable law
- (c) Honoring data subject access, rectification, erasure, restriction, and portability requests
- (d) Implementing appropriate security measures
- (e) Conducting Data Protection Impact Assessments where required
- (f) Appointing a Data Protection Officer if your operations require one
- (g) Registering databases with applicable supervisory authorities
- (h) Honoring opt-out requests for direct marketing
- (i) Cross-border transfer safeguards where data crosses borders

#### 6.4 Israel's Amendment 13 - User Compliance

If your use of the Actor involves Israeli residents' personal data, you must comply with the Privacy Protection Law as amended (Amendment 13, effective August 14, 2025). These obligations are yours as the data controller, not the Publisher's as the software vendor.

#### 6.5 Sensitive Data Targeting Restrictions

You will not use the Actor to specifically target, profile, or build datasets focused on:

- Health or medical conditions
- Religious beliefs
- Political opinions
- Sexual orientation or gender identity
- Genetic or biometric data
- Criminal history
- Children under 16

***

### 7. INTELLECTUAL PROPERTY

#### 7.1 Actor Code

The Actor's source code, schemas, documentation, and branding are owned by the Publisher. You receive a limited, non-exclusive, non-transferable, revocable license to use the Actor for permitted purposes during your active subscription/run with Apify.

#### 7.2 Output Data

The Publisher claims no ownership over the public data the Actor returns. Source Platforms may have copyright, database rights, or other rights in their data; data subjects may have copyright in user-generated content. Your use of output data must respect these rights independently.

#### 7.3 Restrictions

You may not reverse engineer, decompile, or reuse the Actor's code in a competing actor.

#### 7.4 Feedback

Feedback you provide may be used by the Publisher to improve products without compensation to you.

***

### 8. PRICING AND PAYMENT

#### 8.1 Apify Platform Billing

Pricing is administered through Apify's pricing models. Apify processes all payments. Apify's payment terms govern refunds and disputes.

#### 8.2 Pricing Changes

The Publisher may change Actor pricing with at least 14 days' notice via the Actor's Apify listing.

#### 8.3 No Refunds for Misuse

If your access is suspended or terminated for breach of these Terms, you forfeit any unused balance and are not entitled to refunds.

***

### 9. SERVICE AVAILABILITY AND CHANGES

#### 9.1 No Uptime Guarantee

The Actor depends on:

- (a) The Apify platform
- (b) Underlying API providers (HarvestAPI, Scrape Creators)
- (c) Source Platforms' continued public accessibility

Any of these may change behavior, restrict access, or become unavailable without notice. The Publisher makes no uptime guarantees.

#### 9.2 Service Discontinuation

The Publisher may discontinue any Actor at any time. Reasonable notice will be provided when feasible.

***

### 10. DISCLAIMERS

#### 10.1 "AS IS" Service

THE ACTOR IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR PURPOSE, NON-INFRINGEMENT, OR ACCURACY OF DATA.

#### 10.2 No Representation of Lawfulness

The Publisher makes no representation that your specific use of the Actor or the data it returns is lawful in your jurisdiction or under any Source Platform's terms. The burden of determining lawfulness for your use case is yours.

#### 10.3 No Endorsement of Source Content

Content returned by the Actor was created by third parties. The Publisher does not endorse, verify, or take responsibility for it.

***

### 11. LIMITATION OF LIABILITY

#### 11.1 Aggregate Liability Cap

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL THE AGGREGATE LIABILITY OF THE PUBLISHER FOR ALL CLAIMS RELATING TO THE ACTOR EXCEED THE GREATER OF:

- (a) ONE HUNDRED U.S. DOLLARS (US $100), OR
- (b) THE AMOUNTS YOU PAID THROUGH APIFY FOR USE OF THE ACTOR IN THE THREE (3) MONTHS IMMEDIATELY PRECEDING THE EVENT

#### 11.2 Excluded Damages

THE PUBLISHER IS NOT LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR FOR LOSS OF PROFITS, REVENUE, OR DATA, EVEN IF ADVISED OF THE POSSIBILITY.

#### 11.3 Time Limit

Any claim must be brought within one (1) year of the event.

***

### 12. INDEMNIFICATION

#### 12.1 Your Indemnification of the Publisher

You agree to defend, indemnify, and hold harmless the Publisher from any:

- Claims arising from your use of the Actor
- Claims arising from your violation of these Terms
- Claims arising from your violation of any law (including privacy law)
- Claims arising from your violation of any Source Platform's Terms of Service
- Claims arising from your processing of personal data obtained through the Actor
- Reasonable attorneys' fees and costs of defending such claims

#### 12.2 Defense

The Publisher may assume defense at your expense. You will cooperate with the Publisher's defense.

#### 12.3 Scope

The indemnification covers reasonable, foreseeable third-party claims arising from your use. It does not extend to:

- Claims arising from the Publisher's gross negligence or willful misconduct
- Claims regarding the Actor's source code itself (those are the Publisher's responsibility)
- Claims regarding the Third-Party API Provider's data collection (those are their responsibility)

***

### 13. SUSPENSION AND TERMINATION

#### 13.1 Termination by the Publisher

The Publisher may terminate your access for material breach, illegal use, breach of warranty, or upon credible legal demand.

#### 13.2 Effects of Termination

Your license ends, you must cease use, and applicable provisions survive.

#### 13.3 Termination by You

You may stop using the Actor at any time on Apify.

***

### 14. DISPUTE RESOLUTION

#### 14.1 Informal Resolution First

Send a detailed written description of the dispute via UnseenUser's Apify profile contact form (https://apify.com/UnseenUser) and wait 60 days for resolution attempt before any formal claim.

#### 14.2 Governing Law

These Terms are governed by the substantive laws of the State of Israel, without regard to conflict of law principles.

#### 14.3 Exclusive Jurisdiction

Any dispute shall be brought exclusively in the competent civil courts of Tel Aviv-Jaffa, Israel.

#### 14.4 No Class Actions

You agree to bring claims only in your individual capacity.

#### 14.5 Attorneys' Fees

The prevailing party recovers reasonable attorneys' fees.

***

### 15. MISCELLANEOUS

#### 15.1 Entire Agreement

These Terms (with Addendum and incorporated documents) are the entire agreement.

#### 15.2 Severability

Unenforceable provisions are reformed to the minimum extent or severed.

#### 15.3 Assignment

You may not assign without the Publisher's consent. The Publisher may assign to affiliates, successors, or acquirers.

#### 15.4 Force Majeure

Neither party is liable for failure due to events beyond reasonable control, including changes by Source Platforms or Third-Party API Providers, or actions by Apify.

#### 15.5 Third-Party Beneficiaries

Apify, HarvestAPI, and Scrape Creators are intended third-party beneficiaries of Sections 4 (Prohibited Uses), 5 (Source Platform Compliance), and 12 (Indemnification).

#### 15.6 Survival

Sections 0 (Acceptance), 4, 5, 6, 7, 10, 11, 12, 14, and 15 survive termination.

#### 15.7 Language

English controls. Translations are for convenience only.

#### 15.8 Publisher Identification for Legal Process

The Publisher operates on the Apify platform under the username **UnseenUser** (apify.com/UnseenUser). The Publisher is a registered legal entity. Upon receipt of valid legal process (subpoena, court order, or equivalent) directed through Apify's official channels, the Publisher's full legal identity may be disclosed as required by law. This Section ensures that you have a valid path to legal recourse if needed.

***

### 16. ACKNOWLEDGMENT

By using any Actor, you acknowledge that:

- (a) You have read these Terms
- (b) You understand the architecture: you are using software (the Actor) on Apify's platform that calls third-party APIs
- (c) You accept responsibility for your use, including for compliance with Source Platform terms
- (d) Your indemnification obligations cover third-party claims arising from your use
- (e) Disputes are resolved in Israeli courts
- (f) The Publisher's identity, while not publicly disclosed in this listing, can be obtained through valid legal process via Apify

For questions, use UnseenUser's Apify profile contact form (https://apify.com/UnseenUser) before running the Actor.

***

## 🛡️ Actor-Specific ToS Addendum - Reddit Intelligence Suite

This addendum supplements the Master Terms of Service V4.0. By running this Actor, you accept both the Master ToS and this addendum.

#### A. Architectural Disclosure

This Actor is a software wrapper. It accepts your input parameters, calls Scrape Creators' Reddit endpoints (subreddit, posts, comments, ad library, search), and returns the response data to you on the Apify platform. The Publisher does not store, log, or substantively process the data returned.

#### B. Nature of Data Returned

Subreddit data, posts (with usernames - pseudonymous), comments (with username attribution), search results, and video transcripts. Reddit usernames are typically pseudonymous but can be linked to real identities through other data points. **Treat usernames as personal data under privacy law in your downstream processing.**

#### C. Permitted Use Cases

Brand mention monitoring and reputation management, sentiment analysis and consumer research, academic research, journalism, anti-disinformation tools, subreddit moderator analytics.

#### D. Specifically Prohibited Uses

In addition to Master ToS Section 4 prohibitions, you may NOT:

- **De-anonymize users** - attempt to link Reddit usernames to real identities outside legitimate journalism with ethical review
- **Build harassment tools** for brigading or coordinated attacks
- **Train commercial AI/LLMs** on Reddit data without complying with Reddit's data licensing terms
- **Republish full posts/comments** in commercial products that compete with Reddit
- **Manipulate subreddit dynamics** - vote manipulation, fake account networks, astroturfing
- **Track individual users' activity** across subreddits without lawful purpose

#### E. Reddit Platform ToS Considerations

Reddit's Data API Terms have changed significantly in 2023-2024 to restrict AI training and commercial scraping. Reddit may consider commercial use - particularly AI training - to violate their Data API Terms. Reddit has actively pursued litigation against companies training AI on Reddit data without licensing (e.g., *Reddit v. Perplexity AI*). If you intend to train AI models on outputs, license data directly from Reddit instead.

#### F. Pseudonymity and Personal Data

Reddit usernames are pseudonymous but become personal data when combined with other identifiers, used in contexts where the user's real identity is known, or aggregated across enough posts to identify the individual.

#### G. Sensitive Subreddits

Reddit hosts subreddits dealing with sensitive topics (mental health, addiction, sexuality, politics, religion). Do not specifically target users from sensitive subreddits for marketing or use participation as basis for discrimination.

# Actor input Schema

## `mode` (type: `string`):

Choose the job. Whatever you pick here decides what to paste into the box below - the option text tells you which. Example: pick "Posts from a subreddit" and paste r/SaaS.

## `targets` (type: `array`):

The option you chose above tells you what belongs here. Subreddit names work with or without r/ (r/SaaS, /r/SaaS and SaaS are all fine). For comments and transcripts paste the full post link. Example: r/SaaS

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

Covers ranking and time window in one choice, so you never have to match two settings together. Example: "Top of this week" gives the week's best posts. Ignored where it makes no sense, such as subreddit profiles.

## `limit` (type: `integer`):

0 means no limit - you get everything Reddit will give. Any number is an exact cap. This is the main control on what you spend, so set a number if you are trying something out. Example: 50 for a first run. A safety ceiling still applies behind the scenes (10,000 posts or comments per search, 100 ads); go over it and the run tells you in the log rather than quietly cutting your results. That ceiling protects the shared data source and stops surprise bills - it is not a technical restriction.

## `keywords` (type: `array`):

Only used by "🔍 Search inside subreddits". These are the words you are hunting for, inside the subreddits you pasted above. Example: pricing

## `commentDepth` (type: `integer`):

Only used by "💬 Comments on a post". 0 follows every reply chain to the end. A number stops after that many levels. Example: 2 gives you top-level comments and their direct replies. A ceiling of 20 levels applies; Reddit threads deeper than that are almost never real conversation.

## `includeSearchComments` (type: `boolean`):

Only used by "🔍 Search inside subreddits". Reddit hands back matching comments alongside matching posts on the very same request, so leaving this on costs nothing extra at the source. Example: searching "pricing" in r/SaaS returns both posts and comments mentioning it.

## `includeSearchMedia` (type: `boolean`):

Only used by "🔍 Search inside subreddits". Adds matching image and video results with their dimensions. Off by default because most people want text. Example: turn on when you are researching visual content.

## `transcriptLanguage` (type: `string`):

Only used by "🎬 Video transcript". Pick the language the captions are in. Most Reddit videos are English. Example: choose German for a video from a German subreddit.

## `dateRange` (type: `string`):

The quick way to limit results by age. Example: choose "Last 7 days" for a weekly report. For an exact window like 1 March to 15 March, leave this on "Any time" and fill in the two boxes below instead.

## `postedAfter` (type: `string`):

Only needed for an exact window the dropdown above cannot express. Pick a day from the calendar. Leave empty unless you need a specific date. If you set this, it overrides the dropdown above.

## `postedBefore` (type: `string`):

Only needed for an exact window. Pick a day from the calendar. Pair it with the start date above to get exactly the first half of March, for example. Leave empty for no end date.

## `includeNSFW` (type: `boolean`):

On by default. Turn off to drop anything Reddit marks as over-18. Example: turn off when the results are going into a work report.

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

0 keeps everything, including brand new posts with no votes yet. A number skips anything below it, for both posts and comments. Example: 100 keeps only posts the community clearly agreed with.

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

0 keeps everything. A number skips quiet posts, which is the quickest way to find real discussion rather than drive-by links. Applies to posts only, never to individual comments. Example: 20 keeps only posts that started a conversation.

## `filterKeywords` (type: `array`):

Leave empty to skip this filter - and be careful with it, since it is the quickest way to end up with no results at all. Matches on the title and body text, ignoring capitals. Important: "🔍 Search inside subreddits" gets titles without post bodies from Reddit, so there the words have to appear in the title itself. Example: adding "fan" and "noise" will drop a post titled "Cooling advice needed" because neither word is in the title. Start without this filter, see what comes back, then add it.

## `filterKeywordMode` (type: `string`):

Ignored when the box above is empty. Example: choose "Throw away" and add "hiring" to strip job adverts out of your results.

## `cacheMaxAge` (type: `string`):

If we already collected this within the window you pick, that copy is returned instead of going out to Reddit again, which costs nothing at the source. Ideal for a daily report where data from this morning is fine. Example: pick "Up to 1 day old" for a scheduled daily run. Leave as "Always fetch fresh" when you need the very latest.

## `enrichments` (type: `array`):

Leave empty for no AI and no extra cost. Tick any combination and each post and comment comes back already analysed. Needs your own Claude API key in the next box - you pay Anthropic for usage directly, and this actor charges a small fee per analysed result. Example: tick "How they feel about it" and "Problems they mention" to find out what people dislike about a product and how strongly.

## `llmApiKey` (type: `string`):

Only needed if you ticked something above. Get one at console.anthropic.com. Your key is used for this run and never stored. Example: a key starting sk-ant-

## `llmModel` (type: `string`):

Haiku is the cheapest and is genuinely good enough for sentiment and intent on short Reddit text - start there. Step up only if you are extracting nuanced quotes and the results are not sharp enough. Example: leave on Haiku for a first run.

## Actor input object example

```json
{
  "mode": "subreddit_posts",
  "targets": [
    "r/SaaS"
  ],
  "timeRange": "top-this-week",
  "limit": 50,
  "keywords": [],
  "commentDepth": 0,
  "includeSearchComments": true,
  "includeSearchMedia": false,
  "transcriptLanguage": "en",
  "dateRange": "",
  "includeNSFW": true,
  "minScore": 0,
  "minComments": 0,
  "filterKeywords": [],
  "filterKeywordMode": "include",
  "cacheMaxAge": "",
  "enrichments": [],
  "llmModel": "claude-haiku-4-5-20251001"
}
```

# 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 = {
    "targets": [
        "r/SaaS"
    ],
    "limit": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("unseenuser/reddit-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 = {
    "targets": ["r/SaaS"],
    "limit": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("unseenuser/reddit-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 '{
  "targets": [
    "r/SaaS"
  ],
  "limit": 50
}' |
apify call unseenuser/reddit-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unseenuser/reddit-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/ed00PkJHx6dpAcxuJ/builds/KKwr1oGCrgzpBlql3/openapi.json
