02Social intelligence

AgentX on Apify ยท social media ยท ai

Reddit Viral Scraper

Reddit Viral Scraper is an AgentX Actor on Apify that returns 52 fields per row from 5 required inputs. On the Free plan 1,000 rows cost $5.01, falling to $3.76 on the Gold plan and above. It runs at 1024 MB with a 12 h timeout and finished 96.5% of its 86 public runs in the last 30 days.

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.

At a glance

Store brandAgentX โ€” apify.com/agentx
Pricing modelpay per event
Price per result row$0.005 on the Free plan
1,000 rows (Free plan)$5.01
1,000 rows (Gold plan)$3.76
Default / max memory1024 MB / 2048 MB
Run timeout12 h
Public runs, last 30 days86 ยท 96.5% succeeded
Users7 in 30 days ยท 55 all time
First publishedNovember 1, 2025
Last build1.0.19 on August 19, 2026

What you have to give it

5 of the 5 input fields are required; the rest have defaults and can be left out.

FieldTypeRequiredAccepted valuesWhat it does
keyword string yes artificial intelligence Search keyword to find Reddit posts across all subreddits
sort_by string yes relevance, hot, top โ€ฆ Sort results by relevance, hot, top, new, or comment count
time_filter string yes all, hour, day โ€ฆ Filter results to posts published within a set time period
max_posts integer (posts) yes 1 Posts to return, minimum 1 and no upper limit. A broad measured search stopped at 230 unique posts after three pages even when 300 or 1,000 were requested.
max_comments integer (comments) yes 0 Comments per post, minimum 0 and no upper limit. A comment tree returns about 450 in one read and names the rest, which this actor then resolves in bounded rounds. Set 0 to skip comments entirely.

A run that works

The values below are the Actor's own prefills, so this input is valid as written:

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

What comes back

Every dataset row carries the 52 fields below. The examples are the ones declared in the Actor's own output schema.

FieldTypeExampleMeaning
subreddit string | null interestingasfuck Community the post was published in, without the r/ prefix.
subreddit_id string | null 2qh33 Stable Reddit identifier for the community, without the t5_ kind prefix.
subreddit_type string | null public Community visibility: public, restricted, private or user.
subreddit_subscribers integer | null 14200000 Member count of the community at the time of the request.
id string | null 1v5rfpj Reddit's identifier for the post.
author string | null spez Username of the poster, without the u/ prefix. Null when the account was deleted.
author_id string | null 14wpd9 Stable Reddit account identifier, without the t2_ kind prefix. Null for deleted accounts.
author_flair string | null Professor | Medicine The author's flair in this community, which is how the community labels who is speaking. Null when the author has no flair there.
created string | null 2026-07-28T09:14:02+00:00 ISO 8601 posting time (UTC). Null when the source does not return it, never substituted with the run time.
edited string | null โ€” ISO 8601 time of the last edit, null when never edited.
url string | null https://www.reddit.com/r/Animemes/comments/1v5rfpj/example/ Permanent address of the post on reddit.com.
flair_text string | null Psychology Community flair applied to the post.
title string | null Coca cola commercials before Artificial Intelligence Post title.
body string | null Here is what I found... Self-post text. Null for link, image and video posts.
score integer | null 14602 Net upvotes. Reddit no longer exposes raw up and down counts separately.
score_hidden boolean | null false Whether Reddit is temporarily hiding the post score.
upvote_ratio number | null 0.98 Share of votes that were upvotes, between 0 and 1.
comment_count integer | null 89 Number of comments on the post, independent of how many were collected.
crossposts integer | null 17 How many times the post was crossposted.
crosspost_id string | null 1vemtx0 Identifier of the original post when this result is a crosspost.
crosspost_url string | null https://www.reddit.com/r/learnpython/comments/1vemtx0/example/ Permanent Reddit URL of the original post when this result is a crosspost.
archived boolean | null false Whether the post is archived and can no longer be voted on.
locked boolean | null false Whether commenting is closed.
stickied boolean | null false Whether the post is pinned in its community.
over_18 boolean | null false Whether the post is marked as adult content.
spoiler boolean | null false Whether the post is marked as a spoiler.
original boolean | null false Whether the poster marked it as original content.
removed_by string | null โ€” Who removed the post, when it was removed.
gilded integer | null 2 Number of legacy Reddit gildings recorded for the post.
categories array | null photography Source-provided content categories when Reddit classifies the post.
media_type string | null image Reddit's own hint for the attached media: image, link, hosted:video, rich:video or self.
domain string | null i.redd.it Host of the linked target. Null for text posts, where Reddit writes a self.<community> marker instead of a domain.
thumbnail string | null https://preview.redd.it/example.jpeg Thumbnail image. Null when Reddit sends a placeholder word instead of a URL.
images array | null https://preview.redd.it/example.jpeg Full-resolution preview image URLs.
gallery array | null [object Object] Ordered gallery images with optional captions and outbound links.
media_url string | null https://i.redd.it/example.jpeg Target the post links to. Null for text posts; a crosspost target is resolved to a full URL.
video_url string | null https://v.redd.it/n0qdgt3tetah1/CMAF_720.mp4?source=fallback Direct MP4 for a Reddit-hosted video. Media URL points at the video's landing page, which is not playable on its own. Null for posts that are not Reddit-hosted video.
video_duration integer | null 35 Length of a Reddit-hosted video in seconds. Null for posts that are not Reddit-hosted video.
video_width integer | null 1280 Width of a Reddit-hosted video in pixels.
video_height integer | null 720 Height of a Reddit-hosted video in pixels.
video_bitrate integer | null 2400 Bitrate of a Reddit-hosted video in kilobits per second.
has_audio boolean | null true Whether the Reddit-hosted video contains an audio track.
is_gif boolean | null false Whether Reddit exposes the hosted video as a looping GIF-style clip.
poll object | null {"options":[{"id":"1","text":"Yes","vote_count":128}],"total_votes":350,"ends_at Poll options, disclosed vote counts, total votes, and closing time.
is_self boolean | null false Whether the post is text rather than a link.
is_video boolean | null false Whether the post carries Reddit-hosted video.
is_gallery boolean | null โ€” Whether the post is a multi-image gallery.
distinguished string | null โ€” Set when a moderator or admin posted in that capacity.
duplicates array | null https://www.reddit.com/r/pics/comments/example/ URLs of other posts sharing the same link, which is how a viral item spreads across communities.
comments array | null [object Object] Up to max_comments comments with stable IDs, body, author identity, timestamps, score, hierarchy, moderation flags, and collapse state. Null when comments could not be read; an empty list means none were returned.
processor string | null https://apify.com/username/actor_name Attribution URL emitted by the shared Actor runtime for this processed record.
processed_at string | null 2025-01-15T10:30:00.000Z UTC timestamp when this record was processed.

What it costs

Charged eventPriceWhen
Actor Start $0.01 Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).
Result $0.005 โ€“ $0.00375 Single result in the default dataset.
Comment $0.001 โ€“ $0.00075 Single Reddit comment retained in a post result.

Per 1,000 rows, by Apify plan

PlanPer row1,000 rows10,000 rows
Free $0.005 $5.01 $50.01
Bronze $0.0045 $4.51 $45.01
Silver $0.004 $4.01 $40.01
Gold $0.00375 $3.76 $37.51
Platinum $0.00375 $3.76 $37.51
Diamond $0.00375 $3.76 $37.51

Every total includes the $0.01 start fee once. Apify charges that fee per gigabyte of memory, so a 1024 MB run pays it a single time.

When not to use it

  • The dataset carries 52 fields and nothing else; if your analysis needs a field that is not in the table above, no input setting will add it.
  • It reads what is public at run time. There is no archive behind it, so a question about last quarter has to be answered from data you already collected.

Closest Actors in the catalog

Same categories, ordered by how many people run them. Compare the field tables before choosing.

ActorBrandFields1k rows (Free)Users / 30 d
Instagram Trending Scraper AgentX 62 $3.91 63
YouTube Creator Email Scraper โ†— AgentX 34 $8.51 1
Instagram Video Transcript TrueFetch 22 $400.00 55
Telegram Member Scraper AgentX 23 $0.81 49
Telegram Info Scraper AgentX 41 $5.21 32
Telegram Chat Scraper AgentX 55 $0.55 31

Field guides that use this data

Prove it on a narrow run

Open the live contract.

Pricing, availability and schema can change between snapshots. The Apify Actor page is the current source of truth.

Open Reddit Viral Scraper โ†—

Catalog snapshot 2026-09-04; Actor contract, pricing and run statistics read 2026-09-04.