Reddit Post Monitor Lite
Pricing
from $0.60 / 1,000 post saveds
Reddit Post Monitor Lite
Monitor new public Reddit posts by subreddit, keyword, or URL. Filter by date and engagement, deduplicate scheduled runs, and export post, media, and source-quality data.
Pricing
from $0.60 / 1,000 post saveds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
25 days ago
Last modified
Categories
Share
Monitor new public Reddit posts by subreddit, keyword, date, engagement, or URL, then export structured post and media data to JSON, CSV, Excel, API, automations, or AI agents.
The Actor is built for scheduled social listening. It can remember post IDs across runs, establish an initial baseline, and return only later matches. Each run also produces a diagnostic summary showing which sources worked, which fallback transport was used, why records were skipped, and whether any fields were unavailable.
What does this Actor collect?
- Post identity, title, body, author, subreddit, flair, and timestamps
- Score, upvote ratio, comment count, awards, and age-adjusted engagement rates
- Post, outbound, thumbnail, image, gallery, GIF, and video URLs when Reddit provides them
- NSFW, spoiler, stickied, locked, archived, crosspost, and removal flags
- Input source, matched keywords, fetch transport, metadata completeness, and missing-field details
- A
RUN-SUMMARYJSON record with per-source outcomes, retries, filters, deduplication, and saved totals
Who is it for?
| Audience | Common workflow |
|---|---|
| Social listening and support teams | Monitor brand mentions, complaints, questions, and incidents |
| Founders and growth teams | Find recommendation requests, alternatives, pain points, and buying intent |
| Researchers and analysts | Track subreddit discussions, trends, engagement, and public reactions |
| Automation builders | Schedule new-post feeds for Slack, webhooks, databases, or dashboards |
| AI and agent developers | Supply structured Reddit context through API or the official Apify MCP server |
Input examples
Monitor new keyword matches across scheduled runs
{"subreddits": ["SaaS", "startups", "webscraping"],"includeKeywords": ["Apify", "scraping tool", "alternative"],"sort": "new","maxAgeHours": 48,"maxPosts": 50,"deduplicateAcrossRuns": true,"onlyNew": true,"stateKey": "brand-monitor","stateStoreName": "reddit-post-monitor-lite-state","proxyConfiguration": { "useApifyProxy": true }}
The first onlyNew run establishes a baseline without saving existing matches. Later runs using the same persistent stateStoreName and stateKey return only new matching posts.
Export recent high-engagement posts
{"subreddits": ["technology", "MachineLearning", "programming"],"sort": "top","timeFilter": "week","minScore": 100,"minComments": 20,"includeNsfw": false,"maxPosts": 100,"maxPostsPerSource": 100,"maxPagesPerSource": 5}
Watch Reddit search results
{"searchQueries": ["best web scraping API", "Apify alternative"],"excludeKeywords": ["giveaway", "coupon"],"sort": "new","dateFrom": "2026-07-01","maxPosts": 50,"failOnNoResults": true}
Output example
Each paid dataset item represents one saved Reddit post.
{"recordId": "t3_abc123","postId": "abc123","name": "t3_abc123","subreddit": "apify","postTitle": "Example Reddit post title","author": "example_user","url": "https://www.reddit.com/r/apify/comments/abc123/example/","permalink": "https://www.reddit.com/r/apify/comments/abc123/example/","createdAt": "2026-07-07T00:00:00.000Z","score": 42,"upvoteRatio": 0.95,"numComments": 7,"over18": false,"isSelf": true,"selftext": "Post body text when available","linkUrl": null,"flair": "Discussion","postType": "text","mediaUrls": [],"scorePerHour": 1.23,"commentsPerHour": 0.2,"engagementTotal": 49,"matchedKeywords": ["apify"],"isCrosspost": false,"numCrossposts": 0,"fetchTransport": "reddit-json","metadataCompleteness": "full","missingFields": [],"sourceType": "subreddit","source": "apify","fetchedAt": "2026-07-07T00:01:00.000Z"}
When richer Reddit metadata is unavailable, a record may still contain its title, body, author, link, and date. These records use metadataCompleteness: "partial" and list unavailable values in missingFields. Do not treat a zero as a measured score when missingFields includes score.
Input settings
Provide at least one valid subreddits, searchQueries, or redditUrls value.
| Setting | JSON key | Description |
|---|---|---|
| Subreddits | subreddits | Names without r/, such as apify or webscraping. |
| Reddit search queries | searchQueries | Phrases, products, brands, competitors, or questions to search across Reddit. |
| Reddit URLs | redditUrls | Public subreddit, listing, search, or individual post URLs. |
| Maximum posts per run | maxPosts | Hard cap on paid saved rows across all sources; allocated round-robin. |
| Maximum posts per source | maxPostsPerSource | Collection cap for each subreddit, query, or URL before filtering. |
| Maximum pages per source | maxPagesPerSource | Listing-page request cap for each source. |
| Sort order | sort | new, hot, top, rising, comments, or relevance; unsupported source/sort combinations use new. |
| Reddit time window | timeFilter | hour, day, week, month, year, or all for supported sorts. |
| Required keywords | includeKeywords | Keep posts containing at least one keyword in title or visible body. |
| Excluded keywords | excludeKeywords | Skip posts containing any excluded keyword. |
| Maximum age | maxAgeHours | Keep posts no older than this many hours. |
| Posted from | dateFrom | Inclusive minimum publication date or ISO date-time. |
| Posted to | dateTo | Inclusive maximum publication date or ISO date-time. |
| Minimum score | minScore | Minimum Reddit score; limited fallback rows without score are skipped. |
| Maximum score | maxScore | Maximum Reddit score; limited fallback rows without score are skipped. |
| Minimum comments | minComments | Minimum comment count; limited fallback rows without it are skipped. |
| Exact flair | flairFilter | Case-insensitive exact post-flair match. |
| Outbound domain | domainFilter | Keep link posts whose domain contains the supplied text. |
| Reddit author | authorFilter | Exact username; u/ is optional. |
| Include NSFW | includeNsfw | Keep posts Reddit identifies as NSFW. Default: false. |
| Include spoilers | includeSpoilers | Keep spoiler-marked posts. Default: true. |
| Include stickied | includeStickied | Keep moderator-pinned posts. Default: true. |
| Deduplicate across runs | deduplicateAcrossRuns | Skip matching IDs already stored under the same state key. |
| Establish baseline first | onlyNew | First run stores current matches without output; later runs return only new matches. |
| Monitoring state key | stateKey | Separates history for different schedules sharing a key-value store. |
| Persistent state store | stateStoreName | Named key-value store that preserves monitoring history across separate runs. |
| Fail on no results | failOnNoResults | Fail when no rows are saved, except during an initial onlyNew baseline. |
| Proxy configuration | proxyConfiguration | Standard Apify Proxy settings. Automatic Apify Proxy is the default. |
| Request retries | maxRetries | Retries after the first request for blocks, rate limits, server errors, or connection failures. |
| Legacy proxy switch | useApifyProxy | Backward-compatible setting used only when proxyConfiguration is absent. |
| Legacy proxy groups | proxyGroups | Backward-compatible group list used only when proxyConfiguration is absent. |
Output fields
| Group | Fields |
|---|---|
| Identity | recordId, postId, name, subreddit, subredditId |
| Content | postTitle, selftext, contentHtml, postType, flair, author, authorId, authorFlair |
| Links and media | url, permalink, linkUrl, outboundUrlHost, domain, thumbnail, mediaUrls, isVideo, isGallery, galleryCount |
| Engagement | score, upvoteRatio, numComments, awards, scorePerHour, commentsPerHour, engagementTotal |
| Dates | createdAt, editedAt, fetchedAt |
| Status flags | over18, isSelf, spoiler, stickied, locked, archived, isOriginalContent, isCrosspost, numCrossposts, removedByCategory |
| Monitoring | matchedKeywords, sourceType, source |
| Data quality | fetchTransport, metadataCompleteness, missingFields |
The default key-value store also contains:
RUN-SUMMARY— final status, source outcomes, transports, retries, filters, skip reasons, state totals, and saved counts.SEEN_IDS_<stateKey>— optional bounded post-ID history in the named persistent state store.
Pricing
This Actor uses pay-per-event pricing: one small start fee, then $0.001 for each Reddit post successfully saved to the dataset.
| Event | When it is charged | Price |
|---|---|---|
start | Once when the run starts | $0.005 per run |
item | After a Reddit post is saved | $0.001 per post ($1.00 per 1,000) |
Filters, duplicates, failed sources, run-summary records, and monitoring-state records are not charged as posts. The Actor enforces maxPosts before saving and charges item once for each successfully saved dataset row. Apify platform usage for compute, storage, proxies, or data transfer may be billed separately; check the run's Pricing tab for the final amount.
Schedule a Reddit monitor
- Run the Actor once with a small input and inspect the dataset plus
RUN-SUMMARY. - Reuse the same task and default key-value store for every scheduled run.
- Enable
deduplicateAcrossRuns. AddonlyNewif the first run should establish a silent baseline. - Keep the same
stateStoreNameandstateKeyon every scheduled run. Give unrelated monitors differentstateKeyvalues. - Add an Apify schedule and connect the resulting dataset to a webhook, Slack, email, database, or another Actor.
Changing stateStoreName or stateKey starts a separate history. Disabling cross-run deduplication restores snapshot behavior for existing integrations.
API usage
cURL
curl "https://api.apify.com/v2/acts/fetch_cat/reddit-post-monitor-lite/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"subreddits":["apify"],"includeKeywords":["actor"],"maxPosts":25,"proxyConfiguration":{"useApifyProxy":true}}'
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/reddit-post-monitor-lite').call({searchQueries: ['best web scraping API'],maxAgeHours: 72,maxPosts: 25,deduplicateAcrossRuns: true,stateKey: 'api-monitor',stateStoreName: 'reddit-post-monitor-lite-state'});console.log(run.defaultDatasetId, run.defaultKeyValueStoreId);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('fetch_cat/reddit-post-monitor-lite').call(run_input={'subreddits': ['apify', 'webscraping'],'sort': 'new','maxPosts': 25,'deduplicateAcrossRuns': True,'stateKey': 'python-monitor','stateStoreName': 'reddit-post-monitor-lite-state',})print(run['defaultDatasetId'], run['defaultKeyValueStoreId'])
Download the default dataset as JSON, CSV, Excel, XML, RSS, or through the Apify API after the run finishes.
MCP and AI agents
This Actor works through the official Apify MCP server. A focused endpoint exposes only this Actor:
https://mcp.apify.com?tools=fetch_cat/reddit-post-monitor-lite
Add it to Claude Code:
$claude mcp add apify-reddit-post-monitor --transport http "https://mcp.apify.com?tools=fetch_cat/reddit-post-monitor-lite"
MCP JSON configuration:
{"mcpServers": {"apify-reddit-post-monitor": {"url": "https://mcp.apify.com?tools=fetch_cat/reddit-post-monitor-lite"}}}
Example prompts:
- "Monitor r/apify and r/webscraping for posts mentioning broken actors during the past 48 hours."
- "Find new Reddit recommendation requests for web scraping tools and return the post URL, author, score, and matched keywords."
- "Run my Reddit monitor, inspect RUN-SUMMARY, and tell me whether any source failed or returned partial metadata."
Reliability and practical limits
- Reddit can block or rate-limit public data requests. The Actor retries temporary failures with fresh connections, tries a public RSS representation when available, and uses a compatibility Actor only as the final fallback.
- Sources are isolated. One failed subreddit or query does not discard successful output from other sources. The run fails when every source fails.
- RSS and compatibility records can omit score, comment count, ratio, flair, domain, media, or safety flags. Check
metadataCompletenessandmissingFields. - Filters that depend on unavailable score or comment metadata skip the affected fallback records instead of pretending a zero value satisfies the filter.
- Reddit listing/search interfaces normally expose at most about 1,000 accessible records. This Lite Actor is intended for recent monitoring, not complete historical archives.
- Overlapping sources are deduplicated within each run. Cross-run deduplication is opt-in to preserve existing snapshot integrations.
- Private, quarantined, banned, deleted, login-gated, and inaccessible communities or posts may return no public data.
commentsandrelevancesorting apply to search sources; subreddit sources usenewfor those values.hotandrisingsearch inputs also usenew.
FAQ
Can this replace the Reddit API for public post monitoring? It provides an unauthenticated public-data workflow for supported subreddit listings, Reddit searches, and post URLs. It is not an official Reddit API and does not expose private or account-specific data.
Can I return only posts created since the previous run? Yes. Enable deduplicateAcrossRuns. Use onlyNew when the first run should establish a baseline without output.
Why is score zero on a fallback record? Some public RSS records do not include engagement metrics. If missingFields contains score, zero is a compatibility placeholder rather than a measured score.
Why did the run save no data? Inspect RUN-SUMMARY. It distinguishes empty sources, failed sources, filtered records, duplicates, initial baselines, and unavailable metadata required by filters. Enable failOnNoResults when empty output should fail an automation.
Can I export Reddit posts to CSV or Excel? Yes. Use the default dataset export controls or Apify dataset API to download JSON, CSV, Excel, XML, or RSS.
Does it require Reddit login, cookies, or an API key? No. It works with publicly available Reddit pages and feeds.
Can I monitor multiple subreddits fairly? Yes. The Actor collects each source independently and allocates the global maxPosts output round-robin.
Related Actors
- Reddit Scraper — broader Reddit post and comment collection workflows.
- Reddit Post Comments Scraper — extract comments from specific Reddit posts.
- Hacker News Search Scraper — monitor related technology discussions.
- X Profile Tweets Scraper — collect public X profile posts.
- Website Change Monitor — detect changes on public web pages.
Support
If a run fails, returns no posts unexpectedly, or produces wrong output, open an issue from the Actor page. Include the Apify run ID or run URL, input JSON, expected output, actual output, and one reproducible public URL such as a Reddit post or listing. RUN-SUMMARY is safe and useful diagnostic context, but do not post Apify tokens, cookies, proxy credentials, or private data.
Privacy and data handling
This Actor requests only public Reddit data needed for the input you provide. Inputs, monitoring state, run summaries, and output remain in your Apify storage. Requests may pass through Apify platform services and Apify Proxy during a run.
FetchCat does not send inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage unless you explicitly share run details for transient support debugging. You are responsible for using the Actor lawfully, respecting applicable terms and privacy rules, and reviewing public-content output before storing or sharing it.