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 brand | AgentX โ apify.com/agentx |
|---|---|
| Pricing model | pay 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 memory | 1024 MB / 2048 MB |
| Run timeout | 12 h |
| Public runs, last 30 days | 86 ยท 96.5% succeeded |
| Users | 7 in 30 days ยท 55 all time |
| First published | November 1, 2025 |
| Last build | 1.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.
| Field | Type | Required | Accepted values | What 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.
| Field | Type | Example | Meaning |
|---|---|---|---|
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 event | Price | When |
|---|---|---|
| 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
| Plan | Per row | 1,000 rows | 10,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.
| Actor | Brand | Fields | 1k 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
- A Reddit Research Workflow for Communities, Posts, and Viral Signals โ How to structure public Reddit research around subreddits, posts, profiles, dates, source links, sampling limits, and reproducible topic analysis.
- Reddit Research APIs Compared: Community, Posts, People, or Search โ Reddit exposes four distinct research surfaces โ community profile, post feeds, people, and keyword search. Which one answers which question, with field counts.
- How to Build a Creator Outreach List from Public Data โ A repeatable pipeline for influencer and creator outreach: discovering creators by niche, enriching profiles across YouTube, Instagram, and TikTok, and extracting published business contacts responsibly.
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.
Catalog snapshot 2026-09-04; Actor contract, pricing and run statistics read 2026-09-04.