← Catalog · Historical Reddit by date range · Reddit RAG pack guide · Actor
How to get Reddit posts, comments and search results as structured data
27 Oct 2026 · benthepythondev
If you need Reddit content in a spreadsheet, a database or a script, the Reddit Scraper on Apify returns it as clean rows. You give it a subreddit, a post URL, a username or a search query. It returns the available posts and comments with scores, images and nested comment threads. You don't need a Reddit login or your own API key.
What you get
Each post comes back as one row with these fields:
- Identity and links:
id,title,url,permalink,domain - Where it was posted:
subreddit,subreddit_id,author - Engagement:
score,upvote_ratio,num_comments,total_awards_received - Post type and state:
is_self(a text post),is_video,post_hint,over_18,spoiler,stickied,locked,link_flair_text - Media:
thumbnailand animagesarray - Time:
created_utc - Text: the original
selftext,selftext_markdownandselftext_html, plus acontentfield in the format you choose (markdown,htmlortext), withcontent_formattelling you which one it is - Size:
word_countandtoken_count
Comments work the same way, using body, body_markdown and body_html. Each post and each top-level comment is its own row. Nested replies stay inside their parent comment's replies field.
A real example output
This is a trimmed excerpt from a real run against r/AskReddit (long text fields shortened):
{
"id": "1w6eajz",
"title": "AskReddit is looking for new moderators!",
"url": "https://www.reddit.com/r/AskReddit/comments/1w6eajz/askreddit_is_looking_for_new_moderators/",
"selftext": "As you can probably imagine, r/AskReddit is very busy with nearly 60 million members...",
"author": "AskRedditModerators",
"subreddit": "AskReddit",
"subreddit_id": "t5_2qh1i",
"score": 214,
"upvote_ratio": 0.93,
"num_comments": 0,
"is_self": true,
"is_video": false,
"domain": "self.AskReddit",
"thumbnail": null,
"images": [],
"created_utc": "2026-09-03T17:39:04",
"link_flair_text": "Modpost",
"over_18": false,
"stickied": true,
"locked": true,
"word_count": 172,
"token_count": 252,
"content_format": "markdown"
}
The next row in the same run was the post "What is the scariest story you know is 100% true?" with id 1wzbc6m.
What people use it for
Replacing a Reddit RSS feed. The README notes that Reddit announced it will stop supporting RSS feeds on November 13, 2026. A scheduled run with onlyNew: true and a watchName returns only the posts that are new since the last run, readable as RSS. You can paste your old feed link (for example https://www.reddit.com/r/selfhosted/.rss) into the subreddit field and the Actor reads the subreddit name out of it. Search feeds map to mode: search with searchQuery, and user feeds map to mode: user with username.
Pulling top posts from a subreddit. Choose a sort and time filter, such as the top posts of the week in r/Python, and export them to JSON, CSV or Excel.
Collecting a user's history or search results. Switch the mode to user or search to get a person's posts or every match for a query.
Feeding text into other tools. The content field gives you one consistent representation per post and comment, and word_count and token_count help you estimate size before passing text on. Runs can also connect to Make, Zapier or n8n.
How to run it on Apify
Open the Reddit Scraper on Apify. A small first run is a good way to see the output before committing to anything bigger:
{
"mode": "subreddit",
"subreddit": "Python",
"sort": "top",
"timeFilter": "week",
"maxPosts": 3,
"includeComments": false,
"outputFormat": "text",
"includeImages": false
}
There's also a tested Python-posts example you can open directly. You can run the Actor by hand, put it on a schedule or call it through the Apify API.
Pricing is $0.003 per dataset row, plus a $0.00005 run-start event per GB of allocated memory (minimum one). The README's example: a 10-post run at 1 GB costs $0.03005 before account discounts. Turning on comments adds a row (and a charge) for every top-level comment, so start with includeComments: false if you only need a list of posts.
Open the actor See the Python example
How to call it as an API on RapidAPI
If you'd rather call it like a normal REST API with a RapidAPI key, it's listed at Reddit Scraper on RapidAPI.
Honest limits
- Coverage varies. The README says source access and complete-thread availability vary. On a large thread you may not get every comment, so run with a small post and comment limit first and check how much of the thread you got before you schedule anything bigger.
- Link-only posts can have empty content. Their title and destination URL are still in their own fields.
- The
htmloutput is not sanitized. It's the source markup, so don't drop it straight into a web page. includeImages: falseonly clears media fields. It emptiesimagesand setsthumbnailto null, but it doesn't rewrite the post URL or remove links from the text.- The
textformat may still contain Markdown. If a post has no source HTML, the original text is kept as it is. - Comments cost more rows. Every top-level comment is billed as a row, so large threads add up. Nested replies don't add rows, because they stay inside their parent comment.
Need a subreddit's posts from years ago or inside a fixed date window? See how to get historical Reddit posts and comments by subreddit and date range.
Affiliate if you still need an Apify account: apify.com/?fpr=qolupv. I may earn a commission; the price you pay does not change.