Reddit Scraper avatar

Reddit Scraper

Under maintenance

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Reddit Scraper

Reddit Scraper

Under maintenance

Scrape Reddit posts and comments from any subreddit or search query. Score, upvote ratio, author, flair, awards and full comment threads, with filters for score, date and keywords.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Juan ignacio Veltri

Juan ignacio Veltri

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Share

Reddit Scraper — posts and comment threads from any subreddit or search

Scrape posts from any subreddit or search query, with score, upvote ratio, flair, awards, author and — optionally — the full comment thread, nested replies included.

Reddit answers JSON on any of its URLs, so this Actor reads its data feed rather than its HTML. Nothing here depends on markup, which means a Reddit redesign does not break your integration.


Quick start

Everything hot in a subreddit:

{ "subreddits": ["programming"], "sort": "hot" }

The best of the week across several communities, only substantial posts:

{
"subreddits": ["argentina", "devops", "r/webdev"],
"sort": "top",
"time": "week",
"minScore": 50,
"minComments": 10
}

Search all of Reddit, or inside one community:

{
"searchQueries": ["web scraping", "r/programming: rust vs go"],
"sort": "top",
"time": "month"
}

Write r/subreddit: your keywords to restrict a query to one community.

Posts and their discussions

{
"subreddits": ["askprogramming"],
"maxCommentsPerPost": 50,
"minComments": 5
}

Comments arrive nested inside each post, with depth (0 is a reply to the post, 1 a reply to a comment) and isOriginalPoster so you can follow a thread.

Each post with comments costs one extra request, so maxCommentsPerPost: 0 — the default — keeps a run cheap. Filters are applied before those requests: a strict minScore makes the run cheaper, not more expensive.


Monitoring a subreddit

Turn includeSeen off and schedule it. Each run then returns only posts it has not returned before:

{ "subreddits": ["startups"], "sort": "new", "includeSeen": false }

Use a Schedule so the runs share storage — that is what lets the Actor remember what it already sent you.


Input

FieldTypeDefaultDescription
subredditsarray["programming"]Name, r/name, or full URL
searchQueriesarrayKeywords. r/sub: terms restricts to one community
sortselecthothot, new, top, rising, controversial
timeselectweekWindow for Top, Controversial and searches
maxPostsPerSourceinteger0Cap per subreddit or query. 0 = no cap
maxCommentsPerPostinteger0Comments per post. 0 = do not fetch them
minScore / minCommentsintegerDrop posts below these
keywordsarrayOnly posts mentioning any of these
postedWithinDaysintegerOnly posts newer than N days
onlyTextPostsbooleanfalseDrop link posts
excludeNsfwbooleanfalseDrop posts marked over 18
excludePinnedbooleantrueDrop moderator-pinned posts, usually subreddit rules
maxItemsinteger500Total cap. 0 = no cap
includeSeenbooleantrueOff = only posts not seen in previous runs

Output

{
"id": "reddit:1tlh5aj",
"url": "https://www.reddit.com/r/programming/comments/1tlh5aj/...",
"platform": "reddit",
"community": "programming",
"title": "Announcement: We've Updated The Rules",
"text": "After temporarily banning LLM-related content over April...",
"author": "ChemicalRascal",
"authorUrl": "https://www.reddit.com/user/ChemicalRascal",
"score": 950,
"upvoteRatio": 0.94,
"commentsCount": 181,
"publishedAt": "2026-05-23T09:54:37.000Z",
"flair": null,
"isNsfw": false,
"isPinned": true,
"linkUrl": null,
"linkDomain": null,
"awardsCount": 0,
"comments": []
}

A few deliberate choices:

  • linkUrl is null on text posts. Reddit fills its url field with the post's own permalink when there is nothing linked, and copying that would fill the column with noise. linkUrl is only set when the post actually points somewhere else.
  • thumbnail is null unless there is a real image. Reddit puts the strings self, default or nsfw there otherwise.
  • author is null for deleted accounts, not the literal [deleted].

Notes and limits

  • Reddit caps every listing at roughly 1000 posts. To go further back, change sort or time rather than paginating — the Actor stops when Reddit stops returning a cursor.
  • Private and banned subreddits are reported, not retried. Reddit answers with a reason instead of a listing, and the run logs which subreddit and why, then continues with the rest.
  • Posts with no date are dropped by postedWithinDays, because claiming they are recent would misreport the filter you asked for.

Pricing

Pay per result. You are charged for posts that actually land in your dataset — filtered out and duplicate rows cost nothing.