# Reddit Scraper: Posts, Comments and Subreddits

> Reddit scraper: get posts and comments from subreddits, search, post links and user profiles. Score, comment count and thread IDs. No login or API key.

URL: https://cliqtomedia.com/actors/reddit-scraper/

Category: Social media & communities · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/reddit-scraper?fpr=cliqto

Get public Reddit posts and comments as clean rows. Use subreddits, search, post links or user names. No login and no Reddit API key.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `apify` in Subreddits. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Scrape public Reddit posts and comments from subreddits, Reddit search, post URLs and user profiles. You get one row per post or comment with its real score, comment count, clean text, author, links and thread IDs. No login and no Reddit API key.

- `subreddit` — posts from one or more subreddits (new, hot, top or rising);
- `search` — posts that match keywords, across all public subreddits;
- `post` — single posts by URL or ID, usually with their comments;
- `user` — posts submitted by a user.

### Good for

- Watch what people say about a brand, product or topic in a subreddit or in search.
- Collect posts and comment threads for market research or a text dataset (AI, RAG, sentiment).
- Export the posts of known users or a list of posts to a spreadsheet.

### Not a good fit

- Only public content. No login, no private, banned or quarantined subreddits, no private messages.
- In `user` mode only the user's posts are collected, not their comments.
- Reddit itself shows at most about 1,000 posts per listing or search, so one target returns up to about 970–995 posts.
- This is not the official Reddit API. Reddit can change its pages; the Actor reports missing text or score in the run summary when that happens.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.02 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Reddit post | $0.0015 (from $0.00125 on paid Apify plans) | One saved Reddit post with score, comment count, text, subreddit, URL and fetch time. |
| Reddit comment | $0.0008 (from $0.00065 on paid Apify plans) | One saved Reddit comment with author, score, text, parent ID and depth. |

- One result: about $0.02.
- 1,000 results: about $1.52.
- Every day 100 results, for 30 days: about $5.10 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/reddit-scraper?fpr=cliqto

## Questions

### Do I need Reddit API access?

No. The tool reads public pages without login, cookies or an API key.

### How many posts can I get from a subreddit?

Reddit shows about 1,000 posts per listing or search.

### Does user mode get comments too?

No. User mode collects the user's posts only.

### Do I need a Reddit account or API key?

No. The Actor reads public pages without login, cookies or an API key.

### Why are `upvoteRatio` and `postType` empty in search?

Reddit does not show them on search results and single post pages. They are filled in `subreddit` and `user` modes.

### Is the data fresh?

Yes. Each row is read at run time; `fetchedAt` shows when. Scores and comment counts change on Reddit after that.

### How does it read Reddit, and is it allowed?

The Actor reads only pages that anyone can open without an account. It uses a browser-like HTTP client and Apify residential proxies. It does not log in, does not use your cookies and does not solve CAPTCHAs or browser challenges; if Reddit asks for a login or shows a challenge, that target gets an `error` row.

## Data fields

- `type` (string): Row type: post, comment, or status (free row that explains a target without data).
- `id` (string): Reddit ID with prefix: t3_... for posts, t1_... for comments.
- `postId` (string): t3_ ID of the post (for a comment: the post it belongs to).
- `parentId` (string): Comments: t3_ post ID for a top-level comment, t1_ comment ID for a reply. Posts: null.
- `depth` (integer): Comments: 0 for top-level, 1 for a reply, and so on. Posts: null.
- `subreddit` (string): Subreddit name without r/.
- `title` (string): Post title. On comment rows, the title of the post the comment belongs to.
- `text` (string): Post body or comment text as plain text, HTML entities decoded. null for link, image and video posts without a body.
- `author` (string): Username of the author; null for deleted or removed authors.
- `authorId` (string): t2_ ID of the post author (posts only).
- `score` (integer): Score (upvotes minus downvotes) as Reddit shows it. null when Reddit hides it (for example, very new comments).
- `upvoteRatio` (number): Share of upvotes, 0–1 (posts only). Filled in subreddit and user modes; null in search and post modes, where Reddit does not show it.
- `numComments` (integer): Number of comments on the post (posts only).
- `url` (string): Link to the post or comment on reddit.com; null for a deleted comment that has no link.
- `linkUrl` (string): Link, image, video or gallery URL the post points to; null for text-only posts. A post can have both linkUrl and text (for example an image with a caption).
- `postType` (string): Post kind as Reddit reports it: text, link, image, video, gallery, multi_media and others. Filled in subreddit and user modes; null in search and post modes, where Reddit does not show it.
- `createdAt` (string): Time the post or comment was created, ISO 8601 UTC.
- `status` (string): Status rows only: not_found = post or subreddit does not exist, was removed, banned or is private; no_results = Reddit returned no posts (empty listing for these settings, user without posts, query without results); error = invalid input or source failure.
- `message` (string): Status rows only: what happened, in plain words.
- `errorCode` (string): Status rows only: machine code (INVALID_INPUT, SOURCE_BLOCKED, ...); null for not_found and no_results.
- `mode` (string): Mode of the run.
- `input` (string): Your subreddit, query, post URL or username as given.
- `source` (string): Data source: Reddit.
- `fetchedAt` (string): Time this row was read from Reddit, ISO 8601 UTC.

## Input settings

- `mode` (string, required): subreddit: posts from each subreddit in Subreddits. search: posts for each query in Search queries. post: one row per post URL, plus its comments. user: posts submitted by each user in Usernames.
- `subreddits` (array): Subreddit mode: up to 50 subreddit names (apify, r/apify) or URLs (https://www.reddit.com/r/apify/). Private, banned or quarantined subreddits are not read.
- `searchQueries` (array): Search mode: up to 50 keywords or phrases, searched across all public subreddits (for example: web scraping).
- `postUrls` (array): Post mode: up to 50 Reddit post URLs (https://www.reddit.com/r/apify/comments/1x64f49/...) or post IDs (1x64f49). Share links (/s/...) are not supported; open them and copy the full URL.
- `usernames` (array): User mode: up to 50 Reddit usernames (spez, u/spez) or profile URLs. Only posts are collected, not the user's comments.
- `maxPosts` (integer): Max posts for each subreddit, search query or user. Reddit itself may show fewer (for example, top posts of a quiet week). Ignored in post mode.
- `maxCommentsPerPost` (integer): 0 = posts only. Otherwise up to this many comments (with replies) for each post. In post mode, set it above 0 to get the comments. Each comment is one row and one paid result.
- `sort` (string): Order of posts. Subreddits: new, hot, top, rising. Search: relevance, new, top, comments. Users: new, hot, top. Another choice falls back to the nearest one (shown in the run summary).
- `timeFilter` (string): Time range for Top sort and for search. Other sorts ignore it.
- `commentSort` (string): Order of comments when Max comments per post is above 0.
- `proxy` (object): Reddit blocks datacenter IPs, so residential Apify Proxy (US) is the default. Change only if you have your own residential proxies.

## Step by step on Apify

1. Open the Input tab.
2. Keep Mode = `Posts from subreddits` and type a subreddit in Subreddits, for example `apify`.
3. Keep Max posts per target = 10 and Max comments per post = 0 (the prefill).
4. Click Start.
5. Open the Output tab and check `title`, `score` and `numComments` of the first rows.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Brand or topic monitoring | `mode: search`, `searchQueries`, `sort: new` | post | `title`, `text`, `subreddit`, `score`, `createdAt` | schedule the run, export CSV |
| Community research | `mode: subreddit`, `subreddits`, `sort: top`, `timeFilter: month` | post + comment | `score`, `numComments`, `text`, `parentId` | spreadsheet or BI tool |
| Discussion analysis | `mode: post`, `postUrls`, `maxCommentsPerPost` | post + comment | `text`, `depth`, `parentId`, `score` | sentiment or AI pipeline |
| Author research | `mode: user`, `usernames` | post | `subreddit`, `title`, `score`, `createdAt` | spreadsheet |

## Tips

- Use top with a time range to find the best posts of a month.
- Use parent IDs to rebuild comment threads.
- Set a maximum cost per run in the run options.

## Limits



- `status` rows (`not_found`, `no_results`, `error`) are free.
- The start event is charged once per run up to 1 GB of memory. The Actor picks 256–1024 MB itself; if you set 2048 MB, the start is charged twice.
- Set Maximum cost per run in run options to cap spending. When the cap is reached, the run stops, keeps the saved rows and ends as SUCCEEDED with `partial` in `RUN_SUMMARY`.
- Up to 50 subreddits, queries, posts or users per run; up to 1,000 posts per target and 500 comments per post.
- Reddit shows at most about 1,000 posts per listing or search (970–995 in our tests); the run summary warns when it lists fewer than `maxPosts`.
- Large searches can take several minutes. The default run timeout is 1 hour; the Actor stops 20 seconds before the timeout and keeps all saved rows.

## Sample result

```json
{
  "type": "post",
  "id": "t3_1x64f49",
  "postId": "t3_1x64f49",
  "parentId": null,
  "depth": null,
  "subreddit": "apify",
  "title": "Weekly: job board",
  "text": "Are you expanding your team or looking to hire a freelancer for a project? ...",
  "author": "<username>",
  "score": 1,
  "upvoteRatio": 1,
  "numComments": 0,
  "url": "https://www.reddit.com/r/apify/comments/1x64f49/weekly_job_board/",
  "linkUrl": null,
  "postType": "text",
  "createdAt": "2026-10-14T22:00:47.863Z",
  "mode": "subreddit",
  "input": "apify",
  "source": "Reddit",
  "fetchedAt": "2026-10-15T04:02:10.190Z"
}
```

## Use it from code

Actor ID: `cliqtomedia/reddit-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/reddit-scraper").call(run_input={
    "mode": "subreddit",
    "subreddits": [
        "apify"
    ]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~reddit-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "subreddit", "subreddits": ["apify"]}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/reddit-scraper")
result = tool.invoke({"run_input": {"mode": "subreddit", "subreddits": ["apify"]}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [Hear what people say about you](https://cliqtomedia.com/actors/use-cases/social-listening/): Find what people say about your brand and your topic on Bluesky, Hacker News, YouTube and more.

## Similar tools

- [Substack Newsletter Scraper](https://cliqtomedia.com/actors/substack-newsletter-scraper/)
- [Hacker News Stories & Comments Scraper](https://cliqtomedia.com/actors/hacker-news-stories-comments-scraper/)
- [Bilibili Scraper: Videos, Comments & Creators, No Login](https://cliqtomedia.com/actors/bilibili-scraper/)
- [Bluesky Scraper — Posts, Profiles, Feeds & Threads, No Login](https://cliqtomedia.com/actors/bluesky-scraper/)
- [Medium Article Scraper: Tags, Authors & Publications](https://cliqtomedia.com/actors/medium-articles-scraper/)
- [Pinterest Search Scraper: Pins & Boards, No Login](https://cliqtomedia.com/actors/pinterest-search-scraper/)
