Reddit Post Monitor Lite avatar

Reddit Post Monitor Lite

Pricing

from $0.60 / 1,000 post saveds

Go to Apify Store
Reddit Post Monitor Lite

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

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

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-SUMMARY JSON record with per-source outcomes, retries, filters, deduplication, and saved totals

Who is it for?

AudienceCommon workflow
Social listening and support teamsMonitor brand mentions, complaints, questions, and incidents
Founders and growth teamsFind recommendation requests, alternatives, pain points, and buying intent
Researchers and analystsTrack subreddit discussions, trends, engagement, and public reactions
Automation buildersSchedule new-post feeds for Slack, webhooks, databases, or dashboards
AI and agent developersSupply 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.

SettingJSON keyDescription
SubredditssubredditsNames without r/, such as apify or webscraping.
Reddit search queriessearchQueriesPhrases, products, brands, competitors, or questions to search across Reddit.
Reddit URLsredditUrlsPublic subreddit, listing, search, or individual post URLs.
Maximum posts per runmaxPostsHard cap on paid saved rows across all sources; allocated round-robin.
Maximum posts per sourcemaxPostsPerSourceCollection cap for each subreddit, query, or URL before filtering.
Maximum pages per sourcemaxPagesPerSourceListing-page request cap for each source.
Sort ordersortnew, hot, top, rising, comments, or relevance; unsupported source/sort combinations use new.
Reddit time windowtimeFilterhour, day, week, month, year, or all for supported sorts.
Required keywordsincludeKeywordsKeep posts containing at least one keyword in title or visible body.
Excluded keywordsexcludeKeywordsSkip posts containing any excluded keyword.
Maximum agemaxAgeHoursKeep posts no older than this many hours.
Posted fromdateFromInclusive minimum publication date or ISO date-time.
Posted todateToInclusive maximum publication date or ISO date-time.
Minimum scoreminScoreMinimum Reddit score; limited fallback rows without score are skipped.
Maximum scoremaxScoreMaximum Reddit score; limited fallback rows without score are skipped.
Minimum commentsminCommentsMinimum comment count; limited fallback rows without it are skipped.
Exact flairflairFilterCase-insensitive exact post-flair match.
Outbound domaindomainFilterKeep link posts whose domain contains the supplied text.
Reddit authorauthorFilterExact username; u/ is optional.
Include NSFWincludeNsfwKeep posts Reddit identifies as NSFW. Default: false.
Include spoilersincludeSpoilersKeep spoiler-marked posts. Default: true.
Include stickiedincludeStickiedKeep moderator-pinned posts. Default: true.
Deduplicate across runsdeduplicateAcrossRunsSkip matching IDs already stored under the same state key.
Establish baseline firstonlyNewFirst run stores current matches without output; later runs return only new matches.
Monitoring state keystateKeySeparates history for different schedules sharing a key-value store.
Persistent state storestateStoreNameNamed key-value store that preserves monitoring history across separate runs.
Fail on no resultsfailOnNoResultsFail when no rows are saved, except during an initial onlyNew baseline.
Proxy configurationproxyConfigurationStandard Apify Proxy settings. Automatic Apify Proxy is the default.
Request retriesmaxRetriesRetries after the first request for blocks, rate limits, server errors, or connection failures.
Legacy proxy switchuseApifyProxyBackward-compatible setting used only when proxyConfiguration is absent.
Legacy proxy groupsproxyGroupsBackward-compatible group list used only when proxyConfiguration is absent.

Output fields

GroupFields
IdentityrecordId, postId, name, subreddit, subredditId
ContentpostTitle, selftext, contentHtml, postType, flair, author, authorId, authorFlair
Links and mediaurl, permalink, linkUrl, outboundUrlHost, domain, thumbnail, mediaUrls, isVideo, isGallery, galleryCount
Engagementscore, upvoteRatio, numComments, awards, scorePerHour, commentsPerHour, engagementTotal
DatescreatedAt, editedAt, fetchedAt
Status flagsover18, isSelf, spoiler, stickied, locked, archived, isOriginalContent, isCrosspost, numCrossposts, removedByCategory
MonitoringmatchedKeywords, sourceType, source
Data qualityfetchTransport, 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.

EventWhen it is chargedPrice
startOnce when the run starts$0.005 per run
itemAfter 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

  1. Run the Actor once with a small input and inspect the dataset plus RUN-SUMMARY.
  2. Reuse the same task and default key-value store for every scheduled run.
  3. Enable deduplicateAcrossRuns. Add onlyNew if the first run should establish a silent baseline.
  4. Keep the same stateStoreName and stateKey on every scheduled run. Give unrelated monitors different stateKey values.
  5. 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 ApifyClient
client = 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 metadataCompleteness and missingFields.
  • 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.
  • comments and relevance sorting apply to search sources; subreddit sources use new for those values. hot and rising search inputs also use new.

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.

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.