Reddit Keyword Search & Mentions Scraper avatar

Reddit Keyword Search & Mentions Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Reddit Keyword Search & Mentions Scraper

Reddit Keyword Search & Mentions Scraper

Search all of Reddit by keyword and extract every matching post. Get title, full selftext, author, subreddit, score, upvote ratio, comment count, flair and permalink. Track brand, product and topic mentions. Export to JSON, CSV or Excel.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

4

Monthly active users

6 days ago

Last modified

Share

Reddit Keyword Search & Mentions Scraper

Reddit Keyword Search & Mentions Scraper

Here is one real result, with every field the actor returns:

{
"thumbnail": "https://external-preview.redd.it/OrZ7103Cd5oE63jTDiFluE-UdCrLwHjpMiCgWK7YrIM.jpeg?width=140&height=73&auto=webp&s=852e4c2c91fca7ad7ab8179627a9c42eea2db8c5",
"title": "Pope Leo \"Artificial intelligences do not undergo experiences, do not possess a body, do not feel joy or pain, do not mature through relationships, and do not know from within what love, work, friendship or responsibility mean. Nor do they have a moral conscience, since they do not judge goodand..\"",
"url": "https://www.ncronline.org/vatican/vatican-news/pope-leo-calls-disarm-ai-major-document-warns-technologic-threats-humanity",
"id": "1tr0bv8",
"selftext": null,
"subreddit": "technology",
"author": "Caledor152",
"authorFullname": "t2_notffc4i",
"score": 34095,
"upvoteRatio": 0.96,
"numComments": 1836,
"numCrossposts": 12,
"totalAwards": 0,
"linkFlairText": null,
"permalink": "https://www.reddit.com/r/technology/comments/1tr0bv8/pope_leo_artificial_intelligences_do_not_undergo/",
"domain": "ncronline.org",
"isSelf": false,
"isVideo": false,
"isNsfw": false,
"isSpoiler": false,
"isOriginalContent": false,
"isPinned": false,
"isLocked": false,
"isArchived": false,
"edited": "2026-05-29T19:12:07+00:00",
"galleryImageUrls": null,
"createdAt": "2026-05-29T12:28:08.000Z",
"matchedQuery": "artificial intelligence",
"observedAt": "2026-08-10T14:25:01.287Z",
"error": null
}

The most complete Reddit search scraper available. It searches all of Reddit (or a set of subreddits) for any keyword and returns every field Reddit exposes for each matching post, from full self text, upvote ratio and award counts to gallery images, flair and NSFW, spoiler, locked and pinned flags, plus a matchedQuery field so you can track which term surfaced each mention.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor runs each of your search queries against Reddit, optionally restricted to a set of subreddits, applies the sort and time window you pass, and writes one normalized record per matching post to the run's dataset. Use it to track brand, product, competitor and topic mentions across Reddit. When Fetch Full Post Text is enabled it opens each matched post to capture its full selftext, upvote ratio and gallery images. Timestamps are normalized to ISO 8601, missing source values are returned as null, and each record carries the matchedQuery that surfaced it so you can attribute mentions when searching several terms at once.

Quickstart

Open the actor, paste this into the input, and press Run. It returns the 10 most relevant posts across Reddit mentioning "artificial intelligence".

{
"maxPosts": 10,
"searchQueries": ["artificial intelligence"],
"sort": "relevance",
"timeFilter": "all",
"withDetails": true
}

Add more terms to searchQueries to track several brands or topics in one run. Set subreddits to restrict the search to specific communities. Set withDetails to false for a faster, listing-only run.

Input reference

Every field is optional. With an empty input the actor searches the default query across all of Reddit.

FieldTypeRequiredDefaultDescription
maxPostsintegerno10Maximum number of posts to collect across all queries.
searchQueriesstring[]no["artificial intelligence"]Keywords or phrases to search across Reddit. Each query is searched separately, for example a brand name, a product, a competitor.
searchQuerystringno(empty)A single search term, as an alternative to searchQueries.
subredditsstring[]no(all)Limit the search to these subreddits (names without the r/ prefix). Empty searches all of Reddit.
sortenumnorelevanceResult ordering: relevance, hot, top, new, comments.
timeFilterenumnoallTime window for results: hour, day, week, month, year, all.
withDetailsbooleannotrueWhen enabled, opens each matched post to capture full self text, upvote ratio and gallery images. Disable for a faster, listing-only run.

Output reference

One dataset item per matching post. Types: string, integer, number, boolean, string[], or null when the source value is absent.

FieldTypeDescription
idstringReddit post id.
titlestringPost title.
selftextstringFull body text of a self (text) post, or null. Populated when withDetails is on.
urlstringOutbound or content URL of the post, or null for self posts without a link.
subredditstringSubreddit the post is in (without prefix).
authorstringUsername of the post author.
authorFullnamestringReddit author id (t2_...).
scoreintegerNet vote score.
upvoteRationumberFraction of votes that are upvotes. Populated when withDetails is on.
numCommentsintegerComment count on the post.
numCrosspostsintegerNumber of crossposts.
totalAwardsintegerTotal awards received.
linkFlairTextstringLink flair text, or null.
permalinkstringFull reddit.com permalink of the post.
domainstringDomain of the linked content, for example self.AskReddit for self posts.
thumbnailstringThumbnail image URL, or null.
isSelfbooleantrue for text (self) posts.
isVideobooleantrue for native video posts.
isNsfwbooleantrue when the post is flagged NSFW.
isSpoilerbooleantrue when marked spoiler.
isOriginalContentbooleantrue when marked OC.
isPinnedbooleantrue when pinned in its subreddit.
isLockedbooleantrue when the post is locked.
isArchivedbooleantrue when the post is archived.
editedstringISO 8601 edit timestamp, or false/null when never edited.
galleryImageUrlsstring[]Image URLs for gallery posts, or null. Populated when withDetails is on.
matchedQuerystringThe search term that surfaced this post.
createdAtstringISO 8601 creation timestamp.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed query, a single item with a populated error field is written instead.

Example output record

Real self-post record from the same run (input {"searchQueries": ["artificial intelligence"]}):

{
"thumbnail": null,
"title": "What scares you most about artificial intelligence now and in the future?",
"url": null,
"id": "1ub2f4v",
"selftext": "That how fast it is advancing. Look at ai generated images from 5 years ago and look at them now. Imagine what it would be in like 50 years.",
"subreddit": "AskReddit",
"author": "MESHO-53465",
"authorFullname": "t2_27927ck2ez",
"score": 2,
"upvoteRatio": 0.6,
"numComments": 98,
"numCrossposts": 0,
"totalAwards": 0,
"linkFlairText": null,
"permalink": "https://www.reddit.com/r/AskReddit/comments/1ub2f4v/what_scares_you_most_about_artificial/",
"domain": "self.AskReddit",
"isSelf": true,
"isVideo": false,
"isNsfw": false,
"isSpoiler": false,
"isOriginalContent": false,
"isPinned": false,
"isLocked": false,
"isArchived": false,
"edited": "2026-06-20T17:48:33+00:00",
"galleryImageUrls": null,
"createdAt": "2026-06-20T17:33:19.000Z",
"matchedQuery": "artificial intelligence",
"observedAt": "2026-08-10T14:25:04.841Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~reddit-search-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["your brand"],"sort":"new","timeFilter":"week","maxPosts":50}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~reddit-search-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["product a","competitor b"],"subreddits":["technology"],"sort":"top","timeFilter":"month","maxPosts":200}'

Apify CLI:

apify call scrapers_lat/reddit-search-scraper \
--input '{"searchQueries":["artificial intelligence"],"sort":"relevance","withDetails":true}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per matching post returned (result event). When withDetails is on and a post page is successfully enriched, an add-on details event is also charged. See the pricing tab for current prices.
  • No charge on failure. If a query errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 posts per run. Upgrade for higher maxPosts.
  • Turn off enrichment to save. Set withDetails to false for listing-only results with no details charge.

FAQ and troubleshooting

A run returned 0 records. Why? The query matched nothing, the subreddits restriction was too narrow, or the timeFilter window excluded everything. Loosen the query or widen the time range. Zero-result runs are not charged.

How do I track several brands at once? Add each term to searchQueries. Every record carries the matchedQuery that surfaced it, so you can attribute mentions per term.

How do I search only within specific subreddits? Set subreddits to the community names (without r/). Leave it empty to search all of Reddit.

Why is selftext null on some posts? Only self (text) posts carry selftext, and it is captured when withDetails is enabled. Link posts store their target in url instead.

What is the difference between this and the Reddit Posts & Comments Scraper? This actor is search-first and mention-tracking oriented (one record per matching post, with matchedQuery). The Reddit Posts & Comments Scraper reads full subreddit feeds and can also return comment trees.

Is this an official Reddit tool? No. This actor is independent and has no affiliation with Reddit. It reads only data that is publicly available on Reddit. Use it in accordance with Reddit's terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Reddit. Accesses only publicly available Reddit data. Use in accordance with Reddit's terms.