Reddit Scraper
Pricing
from $3.99 / 1,000 scraped items
Pricing
from $3.99 / 1,000 scraped items
Rating
0.0
(0)
Developer
Maxime
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search Reddit posts and comments with raw export-ready rows
I built Reddit Scraper for people who want live Reddit search results without bolting on their own browser automation first.
This actor searches Reddit posts and comments, keeps the raw IDs, timestamps, subreddit names, vote counts, and permalinks, then sends one normalized row per result to the dataset. It does not score, summarize, filter, or save anything to your database for you.
Fastest way to try it
The Input tab ships with query: "openai" prefilled. Keep both Include posts? and Include comments? on, lower Post result cap plus Comment result cap to 10 each for a small first run, then inspect the first rows in the Output tab.
Why people use it
- Search Reddit posts and comments in one run instead of stitching two scrapers together.
- Keep raw fields that downstream systems actually need, including post IDs, comment IDs, subreddit names, vote counts, and timestamps.
- Use one simple
queryfor normal runs, or separate advanced post and comment queries when you need exact control. - Export clean permalinks for both posts and comments.
- Feed brand monitoring, competitor research, QA review, enrichment, or your own AI pipeline without carrying extra app logic inside the actor.
How to use in 3 simple steps
- Open the Input tab and enter your base
query. - Keep both result types on for the normal mode, or switch one off when you only want posts or only want comments.
- Tune freshness and caps with
maxDaysOld,maxPostResults, andmaxCommentResults, then read the raw dataset rows in the Output tab or API.
Inputs, defaults, and behavior
queryis required. The Console form prefills it withopenaiso the default starter run has a live search term ready.postsQueryandcommentsQueryare optional advanced overrides. If you leave them empty, both searches reusequery.shouldIncludePostsdefaults totrue.shouldIncludeCommentsdefaults totrue.maxDaysOlddefaults to30.maxPostResultsdefaults to25. Set it to0to keep all fresh post results inside the requested window.maxCommentResultsdefaults to25. Set it to0to keep all fresh comment results inside the requested window.proxyConfigurationdefaults to Apify residential proxies with no country pin, which keeps Reddit search off the fragile datacenter path unless you override it. When Reddit blocks one session, the actor retries with a small fresh-session budget before giving up on that search pass.- The actor keeps posts and comments as raw rows. It does not dedupe against your history, does not apply AI relevancy checks, and does not write to your own storage.
- If one search type fails after retries, the other successful search type can still return rows in the same run.
Input example
{"query": "OpenAI","postsQuery": "(site:openai.com OR title:\"OpenAI\" OR selftext:\"OpenAI\")","commentsQuery": "(\"openai.com\" OR \"OpenAI\")","shouldIncludePosts": true,"shouldIncludeComments": true,"maxDaysOld": 7,"maxPostResults": 25,"maxCommentResults": 25}
What data can Reddit Scraper extract?
See the full Output tab for the complete schema.
Every row keeps the Reddit data close to the source, so you can decide later how much filtering, scoring, or storage logic you want on top.
| Field | What you get | Why it matters |
|---|---|---|
type | post or comment | Split or combine result types downstream |
searchQuery | The exact query used for that pass | Verify advanced post/comment overrides |
url | Post or comment permalink | Review the original Reddit source quickly |
postId / commentId | Stable Reddit identifiers | Deduplicate or join results later |
postDateTime / commentDateTime | Raw Reddit timestamps | Sort, filter, and store without guessing |
subredditName | Source subreddit | Add routing, alerting, or reporting context |
nbVotes / nbComments | Numeric engagement fields | Prioritize higher-signal rows in your own system |
Output example
[{"type": "comment","query": "OpenAI","searchQuery": "(\"openai.com\" OR \"OpenAI\")","url": "https://www.reddit.com/r/saas/comments/post-2/_/comment-9","postId": "post-2","postTitle": "Thoughts on OpenAI pricing","postDateTime": "2026-03-19T10:00:00.000Z","subredditName": "saas","nbVotes": 35,"nbComments": null,"commentId": "comment-9","commenterUsername": "alice","commentDateTime": "2026-03-21T09:30:00.000Z","commentText": "I switched because the API got better."},{"type": "post","query": "OpenAI","searchQuery": "(site:openai.com OR title:\"OpenAI\" OR selftext:\"OpenAI\")","url": "https://www.reddit.com/r/machinelearning/comments/post-1","postId": "post-1","postTitle": "OpenAI launches something","postDateTime": "2026-03-20T12:00:00.000Z","subredditName": "machinelearning","nbVotes": 120,"nbComments": 48,"commentId": null,"commenterUsername": null,"commentDateTime": null,"commentText": null}]
How much does Reddit search cost?
This actor uses price-per-result billing, so the main cost driver is how many Reddit rows you keep. A good first run is 10 post rows plus 10 comment rows, which is about $0.20 at the current repo-configured rate. At that same repo-configured rate, 100 total rows is about $1.00. The live Pricing tab is the source of truth for the exact current rate.
| Billed item | When it triggers | Repo-configured price |
|---|---|---|
| Reddit result row | When one Reddit row is pushed to the dataset | $0.01 |
Why run Reddit Scraper on Apify?
- Run it from the Console when you want a quick Reddit export without writing Playwright code.
- Call it from the Apify API when Reddit search is one step inside a larger pipeline.
- Keep datasets, run logs, and retries in one place.
- Swap from the simple public mode into advanced post and comment query overrides when your workflow gets stricter.
FAQ
Can I reproduce different post and comment searches?
Yes. Leave query as the base label, then set postsQuery and commentsQuery to the exact Reddit search expressions you want for each pass.
Does this actor run AI filtering or save to my database?
No. It only returns raw scraped Reddit rows in the dataset.
Why are post rows missing comment fields?
That is intentional. Post rows keep commentId, commenterUsername, commentDateTime, and commentText as null, while comment rows fill them.
What happens if Reddit blocks one search type?
The actor retries blocked sessions with fresh proxy sessions first. If one search type still fails after that retry budget is exhausted, the actor logs that failure and still returns rows from the other enabled search type when that pass succeeds.
Can I get all available fresh results instead of the default caps?
Yes. Set maxPostResults and or maxCommentResults to 0.
Where do I report a broken selector, missing field, or Reddit markup change?
Open the Issues page with the input you used and the output you expected. I use that queue for fixes and feature requests.
Explore the rest of the collection
- Product Hunt Scraper - daily Product Hunt leaderboard scraping with cache and live-crawl options, maker links, and optional email enrichment
- TinySeed Scraper - TinySeed portfolio scraping with company descriptions and optional website emails
- Tiny Startups Scraper - Tiny Startups homepage scraping with promoted-card filtering and email enrichment
- Uneed Scraper - Uneed daily ladder scraping with promoted-listing control, maker links, and optional website emails
- Website Emails Scraper - shallow-crawl any list of URLs and emit one row per unique email found
Missing a feature or data?
File an issue and I'll add it in less than 24h 🫡