Reddit Search Scraper - $0.891/1k, Keyless by Default avatar

Reddit Search Scraper - $0.891/1k, Keyless by Default

Pricing

from $0.89 / 1,000 post returneds

Go to Apify Store
Reddit Search Scraper - $0.891/1k, Keyless by Default

Reddit Search Scraper - $0.891/1k, Keyless by Default

Keyword search across Reddit, or inside one subreddit. Keyless by default: up to 100 posts and their comments, nothing to sign up for. Reddit's public feed carries no vote data, so scores and comment counts come back empty - a free Reddit app fills those in. $0.891 per 1,000 posts.

Pricing

from $0.89 / 1,000 post returneds

Rating

5.0

(2)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

2

Monthly active users

2 days ago

Last modified

Share

Reddit Posts Search Scraper

Registering a free Reddit script app is the difference between a post and a post with its score on it. That is the one decision worth making before you run this, so it is the first thing in the README.

Either path searches by keyword, across the whole site or inside one subreddit, sorted by relevance, top, new, hot or most comments, over any time window, and returns the posts as flat rows.

Keyless by default, and what that costs you

Out of the box the actor reads Reddit's RSS endpoints. Nothing to sign up for, no key, no OAuth app, and it's a different piece of Reddit's infrastructure from the anonymous JSON API, so runs finish instead of getting rate-limited into an empty dataset.

The trade is real and you should know it up front. On the keyless path:

  • You get up to 100 posts per search. That's the RSS feed's own ceiling — ask for more and 100 is what arrives.
  • score, numComments, upvoteRatio and flair come back null. Reddit's feed carries no vote data at all, so there is nothing to read. Nothing is estimated in their place.

Everything else is populated: title, author, subreddit, url, permalink, selftext, createdAt, isSelf, domain and thumbnail. For a link post url is the article it points at and domain is that host; for a text post url is the Reddit thread and domain is self.<subreddit>. thumbnail is there when Reddit generated a preview, which is most link posts and no text posts.

over18 is null on this path, not false. The feed has no NSFW marker, and a false would be the actor claiming something it never checked.

Comments work without a key. Turn on includeComments and each post's discussion is read from Reddit's comment feed. Comment feeds carry no scores either, so each comment arrives with author, body, permalink and createdAt, and a score of null.

The honest limit, because you'll hit it on a big search: Reddit will hand a given address about one comment feed a minute, so comments are capped by how many addresses are available, not by anything this actor can hurry along. It rotates datacenter addresses for you and retries the refusals. What that works out to, measured:

Search sizePosts that got commentsRun time
5 posts5 of 5~5 seconds
100 posts86 of 100~3 minutes

So small searches come back complete and fast; a 100-post search takes a few minutes and a handful of posts still miss out. Those rows carry a commentsError rather than a silently empty list, so you can tell "no comments" apart from "couldn't look" and re-run just those if you need them.

If you need every post's comments, run smaller searches.

Drop in a free Reddit script app (redditClientId + redditClientSecret, two minutes at reddit.com/prefs/apps, the credentials stay yours) and it switches to the authenticated API: vote data filled in, comment scores, and pagination past 100.

Every row carries a source field, rss or oauth, so you always know which path produced it.

A real keyless row, text post, includeComments on:

{
"ok": true,
"id": "1ru7f1b",
"title": "Do mechanical keyboards really make a big difference for everyday gaming?",
"author": "KRGKart_Support",
"subreddit": "buildapc",
"url": "https://www.reddit.com/r/buildapc/comments/1ru7f1b/do_mechanical_keyboards_really_make_a_big/",
"permalink": "https://www.reddit.com/r/buildapc/comments/1ru7f1b/do_mechanical_keyboards_really_make_a_big/",
"selftext": "This is something that comes up quite often when people are putting together or upgrading a gaming setup…",
"score": null,
"upvoteRatio": null,
"numComments": null,
"createdAt": "2026-03-15T07:04:36.000Z",
"flair": null,
"over18": null,
"isSelf": true,
"thumbnail": null,
"domain": "self.buildapc",
"source": "rss",
"comments": [
{
"author": "BusinessBear53",
"body": "Not a massive difference but it's a nice subtle change…",
"permalink": "https://www.reddit.com/r/buildapc/comments/1ru7f1b/do_mechanical_keyboards_really_make_a_big/oajbntp/",
"createdAt": "2026-03-15T07:30:30.000Z",
"score": null
}
]
}

A link post fills in domain and thumbnail, and url points off Reddit:

{
"id": "1w1ql7z",
"title": "New Plaud One Headphones Are Part Wireless Earbuds, Part AI Recorder",
"url": "https://www.pcmag.com/news/new-plaud-one-headphones-are-part-wireless-earbuds-part-ai-recorder",
"domain": "pcmag.com",
"thumbnail": "https://external-preview.redd.it/P5YbAxiGqjVdsDlXoo1iRdqTKuuEvQsbNDG3f_6aNqM.jpeg?width=640&crop=smart&auto=webp&s=df0db2b640f02cfc8801ef2c01856992200c7a03",
"isSelf": false
}

Input

FieldNotes
queryKeywords. Reddit's own operators work — title:, author:, quoted phrases.
subredditOptional. Restrict to one subreddit. MechanicalKeyboards or r/MechanicalKeyboards both work.
sortrelevance, hot, top, new, comments.
timehour through all. Applies to relevance, top and most-comments.
maxItemsCeiling on posts. The keyless feed tops out at 100; past that needs Reddit app credentials.
includeCommentsComments per post. Works without credentials. Costs one extra request per post.
commentLimitComments per post, up to 100. Keep it low if you're pulling a lot of posts.
redditClientId / redditClientSecretOptional free script app.
{
"query": "mechanical keyboard",
"subreddit": "buildapc",
"sort": "top",
"time": "month",
"maxItems": 100
}

Cost

$0.000891 per post, which is $0.891 per 1,000, plus a $0.001 fee each time a run starts. Flat on every plan.

You're only billed for posts actually delivered. Samples, diagnostics, duplicates, blocked look-ups and no-result runs never trigger the per-post fee, so a search that matches nothing costs you the $0.001 start fee and nothing more. Comments fetched with includeComments ride along inside their parent post and aren't billed separately.

Proxy

Off by default, and a plain search doesn't need one — that's a single request and Reddit is fine with it.

Comments are the exception. Reddit rate-limits comment feeds hard per IP, so when includeComments is on without app credentials the actor turns on rotating datacenter addresses for those requests by itself. You don't have to configure anything, and datacenter addresses aren't billed per gigabyte.

Beyond that, turn on Apify Proxy if you hit IP rate limits or you're running the authenticated path hard. Metered groups (RESIDENTIAL, GOOGLE_SERP) aren't offered here; ask for one and it's quietly swapped for datacenter so a run can't bill per gigabyte. Your own proxy URLs are used exactly as given.

One thing to expect in the output

Reddit's RSS search sometimes returns the subreddit itself as a result, not just posts. You'll see a row with an id like t5_2ugo7 carrying the subreddit's sidebar text as selftext. That's Reddit's behaviour, not a parsing bug. Post ids never carry that prefix, so dropping every row whose id starts with t5_ leaves you with posts and nothing else.