Reddit Keyword Search & Mentions Scraper
Pricing
from $6.15 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
4
Monthly active users
6 days ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxPosts | integer | no | 10 | Maximum number of posts to collect across all queries. |
searchQueries | string[] | no | ["artificial intelligence"] | Keywords or phrases to search across Reddit. Each query is searched separately, for example a brand name, a product, a competitor. |
searchQuery | string | no | (empty) | A single search term, as an alternative to searchQueries. |
subreddits | string[] | no | (all) | Limit the search to these subreddits (names without the r/ prefix). Empty searches all of Reddit. |
sort | enum | no | relevance | Result ordering: relevance, hot, top, new, comments. |
timeFilter | enum | no | all | Time window for results: hour, day, week, month, year, all. |
withDetails | boolean | no | true | When 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.
| Field | Type | Description |
|---|---|---|
id | string | Reddit post id. |
title | string | Post title. |
selftext | string | Full body text of a self (text) post, or null. Populated when withDetails is on. |
url | string | Outbound or content URL of the post, or null for self posts without a link. |
subreddit | string | Subreddit the post is in (without prefix). |
author | string | Username of the post author. |
authorFullname | string | Reddit author id (t2_...). |
score | integer | Net vote score. |
upvoteRatio | number | Fraction of votes that are upvotes. Populated when withDetails is on. |
numComments | integer | Comment count on the post. |
numCrossposts | integer | Number of crossposts. |
totalAwards | integer | Total awards received. |
linkFlairText | string | Link flair text, or null. |
permalink | string | Full reddit.com permalink of the post. |
domain | string | Domain of the linked content, for example self.AskReddit for self posts. |
thumbnail | string | Thumbnail image URL, or null. |
isSelf | boolean | true for text (self) posts. |
isVideo | boolean | true for native video posts. |
isNsfw | boolean | true when the post is flagged NSFW. |
isSpoiler | boolean | true when marked spoiler. |
isOriginalContent | boolean | true when marked OC. |
isPinned | boolean | true when pinned in its subreddit. |
isLocked | boolean | true when the post is locked. |
isArchived | boolean | true when the post is archived. |
edited | string | ISO 8601 edit timestamp, or false/null when never edited. |
galleryImageUrls | string[] | Image URLs for gallery posts, or null. Populated when withDetails is on. |
matchedQuery | string | The search term that surfaced this post. |
createdAt | string | ISO 8601 creation timestamp. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). WhenwithDetailsis on and a post page is successfully enriched, an add-ondetailsevent 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
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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
withDetailstofalsefor listing-only results with nodetailscharge.
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.
Related scrapers
- Reddit Posts & Comments Scraper: full subreddit feeds and comment trees.
- Reddit Trending Scraper: trending and popular posts across Reddit.
- Reddit User Scraper: a user's posts, comments and profile.
- Hacker News Scraper: Hacker News stories, comments and points.
- Google News Scraper: news articles by keyword and topic.
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.
