Reddit Viral Scraper avatar

Reddit Viral Scraper

Pricing

from $7.20 / 1,000 posts

Go to Apify Store
Reddit Viral Scraper

Reddit Viral Scraper

Reddit keyword search scraper that finds viral posts across communities and exports 40 post fields with engagement metrics, media, and crosspost spread. Five sort modes, time windows, optional bounded comments; Reddit search caps near 250 results per query. From $3.75 per 1,000 posts.

Pricing

from $7.20 / 1,000 posts

Rating

5.0

(2)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

4

Bookmarked

51

Total users

10

Monthly active users

2 days ago

Last modified

Share

Reddit Viral Scraper is a Reddit keyword search scraper that turns one keyword into structured post records from across all communities, with engagement metrics, media links, state flags, crosspost spread, and an optional bounded comment sample.

  • Five controls: one keyword, five sort modes, six time windows, a post cap, and an optional per-post comment cap.
  • 44 documented fields per post, including the duplicates array that shows how far an item spread across communities.
  • Comments are opt-in and separately capped, so a keyword sweep can stay cheap and a deep-dive can stay bounded.

Run a one-post test · View API

The smallest useful FREE-tier test is one post with comments disabled: one start plus one result totals $0.01500. Set a maximum total charge, because a search can return nothing and live prices can change.

What does Reddit Viral Scraper do?

It starts from a topic rather than a place. Give it a keyword and it queries Reddit's own search surface across communities, then writes each matching post as one dataset row with the post's text, its author and community context, the engagement values Reddit reports, media references, moderation and state flags, and the list of duplicate posts that reveal how widely the item was crossposted.

"Viral" here describes what you are looking for, not a prediction the Actor makes. It returns search-ranked posts and the raw engagement fields; any velocity calculation, virality threshold, or anomaly rule belongs downstream, where you control the definition. Reddit's search listing also stops near 250 results for any query no matter what limit is requested, so treat that as the ceiling for a single keyword and split broad topics into narrower ones.

How do I use Reddit Viral Scraper?

  1. Enter one keyword — a phrase works as well as a single word.
  2. Pick sort_by and time_filter to frame the question: recency, ranking, or discussion volume within a window.
  3. Set max_posts, and set max_comments to 0 unless you need threads.
  4. Start the run and read the dataset, or export JSON, CSV, or Excel.

The smallest useful input:

{
"keyword": "artificial intelligence",
"sort_by": "relevance",
"time_filter": "all",
"max_posts": 1,
"max_comments": 0
}

Input

InputTypeRequiredEffect
keywordstringYesThe search phrase sent to Reddit's cross-community search. One string per run.
sort_bystringYesrelevance, hot, top, new, or comments. comments orders by discussion volume.
time_filterstringYesall, hour, day, week, month, or year. Restricts results to posts published in that window.
max_postsintegerYes1–250 posts. Reddit's search listing stops near 250 results for any query, so 250 is the practical ceiling.
max_commentsintegerYes0–2000 comments per post. 0 skips comments entirely.

Each cap is a maximum request, not a guarantee. Search availability, ranking, the chosen window, and source conditions can all return fewer records.

Output

One row per post, with 40 top-level fields in these groups:

GroupFields
Postid, post_url, title, body, created_at, edited_at, flair_text
Authorauthor, author_flair
Community contextsubreddit, subreddit_type, subreddit_subscribers
Engagementscore, upvote_ratio, comment_count, crossposts
Mediamedia_type, media_url, domain, thumbnail, images, video_url, video_duration, is_self, is_video, is_gallery, is_original
State flagsdistinguished, removed_by, indexable, over_18, spoiler, locked, stickied, pinned, archived
Spread and discussionduplicates, comments
Provenanceprocessor, processed_at

An abbreviated row for the artificial intelligence example:

{
"title": "What changed in AI tooling this year",
"subreddit": "MachineLearning",
"subreddit_subscribers": 2900000,
"score": 1840,
"upvote_ratio": 0.94,
"comment_count": 213,
"crossposts": 4,
"over_18": false,
"duplicates": ["https://www.reddit.com/r/artificial/comments/..."],
"comments": [],
"processed_at": "2026-08-02T10:15:33Z"
}

Vote values are source-reported and Reddit may fuzz them, so do not treat score as audited arithmetic. Unavailable values stay null or empty.

Use cases

  • Brand and product monitoring — track a product name across every community rather than a single subreddit.
  • Trend and topic research — sort by comments inside a day or week window to surface what is actually being discussed.
  • Spread analysis — use duplicates and crossposts to see which communities re-shared an item.
  • Content sourcing — collect high-score posts on a theme for newsletters or research digests.
  • Sentiment pipelines — enable comments on a small post set and feed the threads to downstream classification.

Choose a community-first Actor instead when you already know where to look: searching a keyword to reach one subreddit's feed is slower, less complete, and more expensive than reading that feed directly.

API and integrations

The Actor ID is agentx/reddit-viral-scraper. Start a run and read the dataset with any HTTP client:

curl -X POST "https://api.apify.com/v2/acts/agentx~reddit-viral-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword":"artificial intelligence","sort_by":"relevance","time_filter":"all","max_posts":1,"max_comments":0}'

The same input works from the Apify Console, the JavaScript and Python clients, Scheduler, and webhooks. For agent clients, connect to Apify MCP, fetch the Actor's details to load the current input schema, then call agentx/reddit-viral-scraper with a bounded charge and runtime. For larger sweeps, start the run asynchronously, poll its status, and read the dataset after it succeeds.

Pricing

This release uses event-based pricing. Actor Start is charged according to memory with a minimum of one start event. Result is charged for each dataset post, and Comment is charged for comment items retained inside those posts. Verify the live pricing page before production use.

Event and billing unitFREEBRONZESILVERGOLDPLATINUMDIAMOND
Actor Start, per charged start event$0.01000$0.01000$0.01000$0.01000$0.01000$0.01000
Result, per dataset post$0.00500$0.00450$0.00400$0.00375$0.00375$0.00375
Comment, per retained comment$0.00100$0.00090$0.00080$0.00075$0.00075$0.00075

Smallest useful FREE-tier calculation: one minimum start at $0.01000 plus one returned post at $0.00500 equals $0.01500 with comments disabled. A one-post, one-comment result would total $0.01600 at the same tier. Because comments are billed per item, keep max_comments low until you know a query's thread sizes.

Alternatives

Reddit's own search page is free and good for reading; it does not give you 40 normalized fields per post, deduplicated crosspost lists, or a schedulable export. Broad multi-purpose Reddit scrapers cover more surfaces but usually charge one flat per-item price whether you take a post or a comment, which gets expensive on comment-heavy threads — the split events here let a keyword sweep stay cheap. The honest counter-case: if your question starts with a community rather than a topic, Subreddit Posts Scraper reads that feed directly and returns more of it, since search caps out near 250 results.

Limits and troubleshooting

  • Fewer posts than max_posts — the cap is a maximum; search availability, ranking, and the time window can all return fewer.
  • Nothing returned — broaden time_filter, try a simpler keyword, or switch sort_by from relevance to new.
  • Large keyword sets — Reddit's search listing stops near 250 results per query; split a broad topic into narrower phrases.
  • Adult content in results — a keyword search can return material marked adult; inspect over_18 and apply a content policy before display.
  • Comment array smaller than requested — deleted, collapsed, or unavailable comments and tree depth all reduce it.
  • Charge limit reached — compare the start, result, and comment event counts against your limit before raising it.

Report a reproducible problem on the issues page with the run ID, the exact five-field input, and the expected versus observed dataset count.

Frequently asked questions

How do I search Reddit posts by keyword?

Enter one keyword, pick a sort mode and time window, and run: the Actor asks Reddit's own search surface to search Reddit posts by keyword and writes each matching post as one dataset row.

How do I find viral Reddit posts?

To find viral Reddit posts, sort by comments or top inside a recent time window such as day or week, then rank the returned rows by score, comment count, and crosspost spread downstream.

Can I search multiple keywords in one run?

No. The schema accepts one keyword string per run, which keeps each query's cost and results independently comparable. Run separate jobs for separate terms.

Does "viral" mean the Actor predicts future popularity?

No. It returns search-ranked posts and engagement fields. Any threshold, velocity calculation, or prediction must be defined and validated downstream.

What does the comments sort do?

It asks Reddit's search surface to order matching posts by discussion volume. The returned comments array is controlled separately by max_comments.

How does this differ from Subreddit Posts Scraper?

Subreddit Posts Scraper starts with a community and reads its listing. This Actor starts with a keyword and searches across all communities.

Do I need a Reddit account or API key?

No. Provide the five inputs and start the run.

Enrich your data with AgentX

  • All Jobs Scraper — pair topic monitoring with hiring signals from 39 job platforms.
  • All Shopping Scraper — add product and pricing context to a product-keyword sweep.
  • All Video Scraper — resolve the video links surfaced by your keyword into metadata and files.

Support

Use public data responsibly: follow Reddit's terms, Apify's policies, and applicable law, minimize retained personal information, and require human review before consequential decisions. Do not use the output for harassment, deanonymization, or unsolicited targeting. Reddit Viral Scraper is an independent tool and is not affiliated with, endorsed by, or sponsored by Reddit, Inc.

Run a one-post test · View API