ParseForge · README preview
ParseForge's Reddit Posts Scraper is a focused Reddit scraper for collecting public post-level data from subreddit feeds, keyword searches, and Reddit search URLs. Filter posts by score, comment count, flair, domain, author, sort order, or time window, then export one structured row per post. No Reddit login or Reddit API key is required.
| Sources Subreddits, keyword searches, and Reddit search URLs |
Filters Score, comments, flair, domain, author, sort, and time |
| Output One row per post with text, engagement, links, flags, and timestamps |
Delivery JSON, CSV, Excel, API, schedules, webhooks, and MCP |
This Actor collects posts. It does not return comment trees or profile records. For those jobs, use Reddit Posts & Comments Scraper.
Jump to why this Actor, input examples, use cases, pricing, API setup, troubleshooting, FAQ, or the sample output.
The narrow scope is deliberate. Many Reddit scrapers combine posts, comments, communities, and profiles in one dataset. That breadth helps when you need everything. It adds cleanup when your downstream contract is one row equals one post.
Reddit Posts Scraper gives you:
| Your job | Best fit | Reason |
|---|---|---|
| Search, filter, compare, or classify Reddit posts | This Reddit Posts Scraper | Every dataset item follows the same post-level structure |
| Collect posts plus the comments underneath them | Reddit Posts & Comments Scraper | It is built for thread-level work and comment records |
| Collect posts, comments, user profiles, and community profiles in one run | A broad multi-object Reddit Actor | Broader scope is useful when several record types matter more than a clean post table |
| Run sentiment, topic, or intent analysis | This Actor plus your own model or classifier | The Actor returns source text and metadata; it does not invent an analysis layer |
Choose another Actor when comments, profiles, community metadata, or built-in analysis are the main product. Choose this one when post records are the product.
Start with a keyword search and five results:
{
"searchQueries": ["open source"],
"sort": "relevance",
"time": "month",
"maxItems": 5,
"includeNSFW": false
}Keep the first run small. Once the rows match your use case, add more searches, subreddit sources, filters, or a recurring schedule.
Use searchQueries to find public posts that match one or
more terms:
{
"searchQueries": ["customer onboarding", "user activation"],
"sort": "top",
"time": "month",
"minScore": 10,
"maxItems": 100
}Add searchInSubreddit when the same terms should be
restricted to one community:
{
"searchQueries": ["pricing", "migration"],
"searchInSubreddit": "saas",
"sort": "new",
"maxItems": 100,
"includeNSFW": false
}Use subreddits for named communities, or
startUrls for Reddit subreddit and search pages:
{
"subreddits": ["programming", "opensource"],
"sort": "top",
"time": "week",
"postsPerSource": 100,
"maxItems": 200
}Individual-post URLs are not part of the current input contract. The Actor does not post, vote, moderate communities, access private subreddits, or sign in to Reddit accounts.
sort accepts hot, new,
top, rising, controversial, or
relevance. time accepts hour,
day, week, month,
year, or all. The time window applies to
top, controversial, and search results, not
every source and sort combination.
| Input | What it controls |
|---|---|
minScore, maxScore |
Minimum and maximum post score |
minComments, maxComments |
Minimum and maximum comment count |
flairFilter |
Exact, case-sensitive flair text |
domainFilter |
Outbound URLs containing a domain |
authorFilter |
Posts from one Reddit username |
includeNSFW |
Include or exclude NSFW posts |
includeSpoilers |
Include or exclude spoiler-marked posts |
includeStickied |
Include or exclude pinned posts |
maxItems |
Total dataset ceiling |
postsPerSource |
Maximum posts collected from each source |
maxPages |
Maximum pages processed for each source |
includeNSFW, includeSpoilers, and
includeStickied default to true.
postsPerSource defaults to 100 and has a maximum of 1,000.
maxPages defaults to 10 and has a maximum of 100.
Each dataset item is one post. The fields support content research, community comparison, link analysis, and downstream classification without mixing comment or profile records into the same table.
| Field group | Included data |
|---|---|
| Post | id, title, selfText,
url, permalink |
| Author and community | author, authorId, subreddit,
subredditId |
| Engagement | score, upvoteRatio,
numComments, awards |
| Classification | linkFlairText, domain,
contentCategories |
| Content flags | over18, spoiler, stickied,
locked, archived, isSelf,
isVideo, isGallery |
| Time | createdUtc, createdAt,
scrapedAt |
The abridged sample record at the end comes from the same five-result keyword search shown in the quick start. Scores, comment counts, and voting ratios are snapshots. They can change after collection, and deleted or moderated posts may disappear between runs.
These workflows name the source, filters, fields, and next step.
Start with a small maxItems, inspect the rows, then save
the input when it returns the posts you expected.
Search for your company name, product names, common misspellings, and
phrases such as BrandName alternative or
switching from BrandName. Use sort: "new" with
a short time window for recent mentions, then add
searchInSubreddit when one community matters more than
Reddit-wide coverage.
Review title, selfText,
subreddit, score, numComments,
and permalink. A daily Apify schedule can create a new
dataset for your support or research workflow. If you need an alert,
compare the new dataset with prior post id values in your
own automation and notify the team there. The Actor does not include an
alert inbox.
{
"searchQueries": ["ParseForge", "ParseForge alternative"],
"sort": "new",
"time": "week",
"maxItems": 100,
"includeNSFW": false
}Product teams can search the language people use when a workflow
breaks: wish there was, looking for a tool,
how do I, feature request, or a product name
paired with problem. Restrict the search to a relevant
subreddit when broad results are noisy. Use minComments to
surface posts that drew a conversation, but keep a smaller unfiltered
sample so low-engagement complaints are not erased.
Read title and selfText for the problem
statement, then keep subreddit, permalink, and
createdAt beside any theme you assign. This produces a
source-backed research set for roadmap interviews or support analysis.
It does not prove how common a problem is across all Reddit users.
Collect several communities with the same sort,
time, postsPerSource, and content filters.
Group the result by subreddit, then compare the topics and
words in title and selfText. Use
score, upvoteRatio, and
numComments as engagement context, not as interchangeable
measures of demand.
This works well for category research. A security product team might compare how r/sysadmin, r/cybersecurity, and r/msp discuss backups, phishing, and endpoint tools. A game studio could compare launch reactions across genre-specific communities. Fixed inputs make the next run comparable to the first.
Search a topic, sort by top, choose month
or year, and add modest minScore or
minComments thresholds. The resulting titles show which
questions earned attention. selfText adds the situation and
vocabulary behind the headline; permalink keeps the source
available for manual reading.
Use the dataset to build an editorial brief, FAQ backlog, webinar outline, or customer interview guide. Do not copy posts into publishable content. Summarize patterns, check the original context, and cite or seek permission when you use a person's words.
Use domainFilter when you care about one publisher,
competitor, app marketplace, news site, or owned domain. Inspect
domain, url, title,
subreddit, score, and numComments
to see where the link appeared and what response the post received.
Without a domain filter, group all returned link posts by
domain to find frequently shared sources in a niche. This
can support publisher discovery, partnership research, earned-media
review, or a list of resources worth reading. The Actor records the link
and post metadata; it does not measure referral traffic or backlinks to
your site.
Search the exact product, feature, event, or campaign name alongside
a few likely phrases such as review, pricing,
launch, or alternative. Use
sort: "new" during the launch window, then run a second
top search after the first week to see which posts kept
attracting engagement.
Keep the exact input with each dataset. Compare
createdAt, subreddit, title,
selfText, score, and numComments
across the runs. This gives a communications or product team a review
queue with source links. It does not capture every mention, private
community, deleted post, or comment under a post.
Once an input produces useful rows, save it as an Apify Task and
attach a daily, weekly, or monthly schedule. Store id,
permalink, createdAt, and
scrapedAt with each record. Deduplicate downstream on
id or permalink before appending a scheduled
dataset to your warehouse or spreadsheet.
The timestamps answer different questions: createdAt is
when the post was published; scrapedAt is when the Actor
collected the record. Retain both. Engagement values can move between
snapshots, so decide whether your pipeline keeps the latest value or a
time series of every collection.
Export title, selfText, and selected
metadata to your own classifier, notebook, database function, or AI
agent. Keep id and permalink in the model
output so a reviewer can return to the source. subreddit,
linkFlairText, and domain can provide useful
context, while over18 and other flags can control what
enters the next system.
The Actor does not assign sentiment, intent, topics, or lead scores. That boundary is useful when you want to choose the model, prompt, taxonomy, and review policy yourself rather than accept an opaque label in the scraper output.
Growth and sales researchers can look for public phrases such as
alternative to, recommend a,
looking for, or switching from together with a
category or product name. Add searchInSubreddit when the
audience is concentrated in one professional or hobby community. Use
title, selfText, subreddit, and
permalink to understand the need before treating a post as
relevant.
Keep a human in the loop. A post is context, not permission for automated outreach, and a username is not a complete customer profile. Do not use this workflow for sensitive eligibility, employment, credit, insurance, housing, or other high-impact decisions.
Use a fixed query, time window, result cap, and source list to create
a reproducible sample of public posts. Preserve permalink,
author, subreddit, createdAt, and
scrapedAt, then document the collection settings beside the
dataset. Repeat the same input when the research design calls for
another snapshot.
This can support source discovery, qualitative coding, public-discourse research, and event timelines. It is not a complete archive of Reddit. Researchers should account for deleted content, changing engagement counts, source availability, platform rules, privacy, and the limits of keyword-based sampling.
This Actor uses pay-per-event pricing. Each run includes an Actor-start event, and each dataset row is billed as a result event. There is no separate monthly Actor rental.
Apify displays the live rate above this README and on the Pricing
tab. Check it before a large run because event rates can change. Use
maxItems to cap result volume, and use Apify's
maximum-charge control when you need a hard spending limit.
Call the Actor from any service that can send an HTTP request. Keep the Apify token in an environment variable:
curl -X POST \
"https://api.apify.com/v2/acts/parseforge~reddit-posts-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["open source"],
"sort": "relevance",
"time": "month",
"maxItems": 5,
"includeNSFW": false
}'Use asynchronous runs and webhooks for larger jobs. For recurring
collection, save a tested input as an Apify Task and attach a schedule.
The input schema also supports MCP delivery; test the scrape first, then
connect a destination with maxItems: 1 so a bad connector
configuration cannot create many external writes.
Test one broad keyword with sort: "relevance",
time: "month", and maxItems: 5. Remove score,
comment, flair, domain, and author filters, then add them back one at a
time.
maxItemsmaxItems is a ceiling, not a guarantee. A narrow time
window, exact flair, strict filter, or quiet source can produce fewer
matches. Increase postsPerSource or maxPages
only after confirming that the source exposes more posts.
Retry the smallest keyword-search example once. If it fails again, open an issue with the run ID, input with secrets removed, expected result, and relevant error log.
Run the Actor without the connector first. Then test one result and confirm that the connector can write to the destination.
It does not require a Reddit account or Reddit API key. You need an Apify account to run the Actor on Apify.
It collects public Reddit post data for research and automation outside the official Reddit API. It does not replace account-level, moderation, posting, or private-community features.
No. numComments is the post's comment count, not a
comment dataset. Use Reddit
Posts & Comments Scraper when you need comment trees or profile
records.
Yes. Put the terms in searchQueries and the subreddit
name in searchInSubreddit.
No. The Actor works with public sources available without signing in. Deleted, removed, private, or restricted content may be unavailable.
Yes. Save a tested input as an Apify Task and use an Apify schedule for recurring collection. The Actor produces scheduled datasets; it does not provide its own real-time alert inbox.
Open the Actor's Issues tab or email parseforge@protonmail.com. Include the run ID, relevant input with secrets removed, expected result, and the error or unexpected output.
| Actor | Use it when you need |
|---|---|
| Reddit Posts & Comments Scraper | Reddit posts, comment trees, media fields, or public profile inputs |
| X.com Post Scraper | Public X posts, media, authors, and engagement data |
| Instagram Posts Scraper | Instagram captions, post links, media, likes, and comment counts |
| YouTube Scraper | YouTube videos, channels, search results, and transcripts |
Public availability does not remove obligations under the Reddit User Agreement, Reddit's Privacy Policy, copyright rules, privacy law, or community rules. Collect only what your use case needs and avoid using post or username data to make sensitive decisions about individuals.
ParseForge is not affiliated with or endorsed by Reddit, Inc.
This abridged record came from the five-result keyword-search input in the quick start. Values are a point-in-time snapshot.
{
"id": "1uzw5um",
"title": "What is a piece of completely free, open-source software that puts multi-billion dollar corporate programs to absolute shame?",
"author": "SupremeKalki",
"subreddit": "AskReddit",
"score": 4017,
"upvoteRatio": 0.97,
"numComments": 1122,
"domain": "self.AskReddit",
"permalink": "https://www.reddit.com/r/AskReddit/comments/1uzw5um/...",
"createdAt": "2026-07-18T13:38:23.000Z",
"scrapedAt": "2026-08-07T19:02:55.350Z"
}