Reddit Posts Scraper - Keyword Search and Subreddits
Pricing
from $0.50 / 1,000 reddit posts
Reddit Posts Scraper - Keyword Search and Subreddits
Search Reddit by keyword or export posts from multiple subreddits: titles, authors, text, dates and links to JSON, CSV or Excel. No cookies or login. New, hot, top and relevance sorts, pagination and dedup. $0.50 per 1,000 posts.
Pricing
from $0.50 / 1,000 reddit posts
Rating
0.0
(0)
Developer
Andres Garcia-Baquero Leon
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
23 days ago
Last modified
Categories
Security
Limited permissionsShare
Reddit Posts Scraper - Keyword Search and Subreddit Feeds
Search Reddit by keyword or export public posts from multiple communities into JSON, CSV, Excel or API. Collect titles, authors, publication dates, self-post text and external links without cookies, login or a Reddit API key.
Price: $0.50 per 1,000 delivered posts, plus the standard $0.00005 start event at the default memory allocation. A post is a dataset row, not a request. Failed HTTP requests and duplicate posts are not sold as results.
Is this the right Reddit scraper?
This Actor is for lightweight collection of public subreddit feeds. It is not a full Reddit API replacement.
| Included | Not included |
|---|---|
| New, hot and top public feeds | Comment search |
| Keyword search across all Reddit or inside chosen subreddits | Search operators beyond Reddit's own |
| Multiple communities in one run | Comments or reply trees |
| Cursor pagination and deduplication | Votes, scores or comment counts |
| Self-post text, author and source links | Private, quarantined or restricted communities |
| Per-community coverage report | Guaranteed complete history or all posts ever published |
RSS can shorten titles or omit content. The Actor preserves what the feed exposes rather than inventing missing data. For exhaustive historical research, engagement ranking or comment analysis, choose another product.
Quick start
- Click Try for free and enter community names such as
Pythonorprogramming. - Choose
new,hotortopand your maximum posts per community. - Set a maximum run budget in Apify Console and start the Actor.
- Export the Posts dataset. Inspect Coverage and errors before treating the run as complete.
Empty input {} uses the public Python community and requests 25 posts. Invalid explicit names fail; they are never replaced with demo data.
{"subreddits": ["Python", "programming"],"maxResultsPerSubreddit": 50,"sort": "new"}
Keyword search across Reddit
Find posts that mention your brand, competitor or product category. Each row keeps the first searchQuery that delivered it. Deduplication is global within a run: overlapping queries do not each receive their own copy of an already delivered post.
{"searchQueries": ["chatgpt alternative", "notion alternative"],"maxResultsPerSubreddit": 50,"sort": "new","timeRange": "month"}
Add "subreddits": ["SaaS", "startups"] to search only inside those communities. Search sorts: new, hot, top, relevance, comments.
Top posts in the last week
{"subreddits": ["technology"],"sort": "top","timeRange": "week","maxResultsPerSubreddit": 100}
Input reference
| Field | Default | Behavior |
|---|---|---|
subreddits | ["Python"] | 1-20 names, optionally prefixed with r/; no arbitrary URLs |
maxResultsPerSubreddit | 25 | Upper limit 1-1000; public history may be shorter |
sort | new | Feeds: new, hot, top; search also supports relevance, comments |
timeRange | week | hour, day, week, month, year, all; top feeds and keyword searches |
searchQueries | [] | Optional keyword searches; can be scoped to the supplied communities |
proxyConfiguration | Residential Apify Proxy | Routes through the configured proxy from the first attempt; configuration failures can fall back to direct access |
Output example
Selected fields from a real public feed response collected on September 11, 2026 (Europe/Madrid). This example demonstrates shape, not guaranteed future availability:
{"id": "t3_1wcjor7","postId": "1wcjor7","title": "I scored 720 YouTube videos against their own channel's median to find which topics actually have de","subreddit": "Python","author": "Top-Ease-9371","publishedAt": "2026-09-10T13:46:12+00:00","url": "https://www.reddit.com/r/Python/comments/1wcjor7/i_scored_720_youtube_videos_against_their_own/","source": "reddit_rss"}
The title above is shortened by the source feed. We do not claim it is the complete webpage title.
| Field | Type | Meaning |
|---|---|---|
id, postId | string | Reddit fullname and short ID; useful for deduplication |
title, url | string | Feed title and Reddit permalink |
subreddit, requestedSubreddit | string | Source community and requested community |
author, authorUrl | string/null | Public author; absence is preserved |
publishedAt, updatedAt | string/null | Source timestamps |
text | string | Self-post body without feed submission boilerplate; empty for link-only posts |
contentHtml | string | Original HTML embedded in the RSS entry; sanitize before rendering |
externalUrls | array | Non-Reddit HTTP/HTTPS links in the feed entry |
source, sourceUrl | string | Source type and exact feed URL |
scrapedAt | string | Extraction time in UTC |
Coverage and partial runs
The OUTPUT record contains delivered counts, requests, and one status per community/query, including duplicatePosts (already delivered IDs skipped on fetched pages). complete means the requested limit of additional unique posts was met or the available feed ended normally. It does not mean all historical Reddit data was collected.
Only IDs in the successfully delivered, chargeable prefix enter the global deduplication set. Posts discarded by a per-query limit remain eligible for later queries. A page consisting entirely of previously delivered posts can advance to a new cursor; a looping cursor stops with partial coverage. Jobs are processed sequentially; there is no cross-run identity reservation or exactly-once delivery guarantee after a process failure.
Possible stop reasons: requested_limit, feed_exhausted, empty_feed, budget, source_error, repeated_page, repeated_cursor, page_cap.
If one community fails after another delivered posts, the run may succeed with complete: false. Delivered posts remain available and are charged normally. If all sources fail before any delivery, the run fails instead of presenting a blocked scrape as a successful empty export. Budget exhaustion stops later communities too.
Performance and pricing
Reddit enforces rate limits. The first attempt of each request is paced at least 6 seconds after the previous attempt; retries are paced at least 10 seconds, with at most six attempts per page. Each page requests up to 25 posts. Bulk runs intentionally take minutes rather than hammer the source.
| Delivered posts | Post charges |
|---|---|
| 25 | $0.0125 |
| 100 | $0.05 |
| 1,000 | $0.50 |
The standard start event adds $0.00005 at 256-512 MB. The live Pricing tab is authoritative. Residential Apify Proxy is selected by default. Platform/proxy costs are separate from the result-event count; a maximum event charge is not a guarantee of total platform usage. Selecting a custom proxy provider may introduce provider charges outside this Actor's event price.
Workflow integrations
Use Apify schedules and dataset exports with n8n, Make, Zapier, Google Sheets, Slack, or your own API client. These are output integration options, not preconfigured integrations bundled with this Actor.
For recurring collection, deduplicate against id in your destination: deduplication inside this Actor applies only within each run. Repeated runs can return and charge the same posts again.
FAQ
Do I need login or cookies? No. Only public Atom/RSS feeds are used.
Can I search for a keyword? Yes. Use searchQueries, optionally scoped with subreddits. Source search behavior and available feed history are not an exhaustive-match guarantee.
Can I get comments or upvotes? No. The feed does not expose those fields reliably; they are not invented or charged as extra data.
Why fewer posts than requested? Public feed history may end, the source may repeat a page, a community may restrict access, or your spending limit may stop the run. Inspect OUTPUT.
Why is it slower than a browser feed? Pacing reduces HTTP 429 rate-limit failures. Running many copies simultaneously can still trigger source-wide limits.
Does public access authorize commercial reuse? No. Reddit's User Agreement, effective July 1, 2026 (last revised May 26, 2026), restricts commercial exploitation without a written agreement and prohibits scraping without prior written consent, subject to applicable law and permitted exceptions. No applicable written permission or exception has been established for this Actor. The Data API Terms also require a separate agreement for commercial API use; whether those API-specific terms govern this RSS path has not been established. Technical access and this Store listing do not establish reuse rights. Resolve applicable permissions before commercial use or scaling; content rights and privacy obligations remain separate. This is a documented contractual risk, not a legal determination about your particular use.
Does scheduling prevent duplicates? No. Keep IDs in your downstream database for cross-run deduplication.
Troubleshooting
| Symptom | Check |
|---|---|
| HTTP 403 / 429 | Reduce simultaneous runs, allow proxy fallback, and retry later; access is not guaranteed |
| Empty or restricted community | Check the public subreddit in a browser; private/quarantined communities are unsupported |
| Partial results | Read OUTPUT.complete and each community's stopReason |
| Repeated page | The source ignored the cursor or reached its accessible history; no duplicates are charged |
| Empty text | Link-only posts may have no self-post body; use externalUrls and the permalink |
If this Actor fits your workflow, an honest Store review helps other users decide. Bug reports and missing-field feedback are welcome; there is no incentive tied to review score.