Reddit Search Scraper
Pricing
from $2.99 / 1,000 search results
Reddit Search Scraper
Search Reddit by keyword and scrape matching posts with full metadata, images, videos, awards, and optional comments. Optionally restrict search to a single subreddit.
Pricing
from $2.99 / 1,000 search results
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does Reddit Search Scraper do?
Reddit Search Scraper searches public Reddit posts by keyword and returns normalized post records with ranking context, community metadata, media, awards, and optional comments. It is a bounded Reddit search API alternative that uses public JSON responses first and never logs in, solves CAPTCHAs, or requests private content.
Why use Reddit Search Scraper?
- Monitor public discussions, trends, brands, products, or research topics.
- Restrict a query to one public subreddit and choose Reddit's relevance, new, hot, top, or comments sort.
- Collect listing data quickly or enable detail enrichment for public post bodies, media, awards, and comments.
- Export results through Apify datasets and connect them to scheduling, API access, monitoring, and integrations.
- Stop at the requested
maxItems, deduplicate by Reddit post ID, and fail closed on access barriers.
What data can Reddit Search Scraper extract?
| Field | Type | Description |
|---|---|---|
postId, postFullname | string | Bare post ID plus its t3_<postId> fullname. |
postTitle, selfText | string | Public title and optional post body. |
permalink, contentUrl | string | Canonical Reddit and linked-content URLs. |
author, subreddit | string | Public author and community metadata. |
score, upvoteRatio, numComments | number | Public engagement values. |
previewImages, videoData, mediaEmbed | object | Public media metadata when present. |
comments | array | Optional bounded public comments. |
searchQuery, position, sourceListingUrl | mixed | Query, rank, and source provenance. |
scrapedAt | string | ISO 8601 extraction timestamp. |
Unavailable optional values are omitted. The Actor does not emit empty strings, N/A, fabricated values, internal browser objects, duplicated raw response objects, or block pages as successful records.
How to scrape Reddit search results
- Open the Actor input tab.
- Enter a non-empty
searchQuery. - Optionally provide one subreddit name without
r/. - Choose a sort and a small
maxItemsvalue. - Disable
deepScrapingfor the fastest listing-only run, or enable it for richer post details. - Run the Actor and inspect the default dataset plus the
OUTPUTrun summary.
Input
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
searchQuery | string | — | yes | Query from 1 to 200 characters. |
subreddit | string | empty | no | One public subreddit name. |
sortBy | string | relevance | no | relevance, new, hot, top, or comments. |
topTime | string | all | no | Time window for top sorting. |
maxItems | integer | 50 | no | Exact upper result bound from 1 to 1000. |
deepScraping | boolean | true | no | Fetch public post-detail JSON. |
includeComments | boolean | false | no | Add up to 20 public comments per enriched post. |
headless | boolean | true | no | Run Chromium without a visible window. |
proxyConfiguration | object | Apify Proxy | no | Optional permitted proxy settings. |
Example bounded input:
{"searchQuery": "nodejs tutorial","sortBy": "relevance","maxItems": 5,"deepScraping": false,"includeComments": false,"proxyConfiguration": { "useApifyProxy": false }}
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"recordType": "search_result","position": 1,"postId": "example","postFullname": "t3_example","postTitle": "Example public post","permalink": "https://www.reddit.com/r/example/comments/example/post/","searchQuery": "nodejs tutorial","subreddit": "example","score": 42,"numComments": 7,"sourceListingUrl": "https://www.reddit.com/search/?q=nodejs%20tutorial&sort=relevance&t=all","scrapedAt": "2026-08-30T10:00:00.000Z"}
The OUTPUT key reports saved records, failed and blocked requests, normalized input, status, and dataAvailable. status is SUCCESS only when usable result rows were stored; BLOCKED, FAILED, and NO_RESULTS are diagnostic outcomes. A process that exits successfully with an empty dataset and blocked requests is still BLOCKED, not a successful search or a legitimate no-match result. If no usable results are available, the default dataset contains one four-field diagnostic record; access failures are never stored as successful post rows.
How much does it cost to scrape Reddit?
Cost depends mainly on the item limit, detail pages, comments, browser runtime, and proxy choice. Listing-only searches are cheapest. Begin with 5–20 records, keep comments disabled unless needed, and consult the Actor pricing shown in Apify before production use.
Local and cloud validation
Use apify run --purge inside the Actor directory for a clean local test, then run npm run contract and node validate-datasets.js. For cloud QA, deploy with apify push, call the exact mapped Actor with a bounded input and timeout, and retrieve its default dataset plus the OUTPUT key; a SUCCEEDED run alone is not proof of usable data.
FAQ, disclaimer, and support
Reddit can return HTTP 403, login redirects, CAPTCHAs, or network-security blocks depending on location and proxy. The Actor detects those boundaries and does not bypass them.
Only publicly available content is requested. Results can contain personal data users chose to publish and may be protected by the GDPR or other laws. Use the data only with a legitimate basis and consult legal counsel when uncertain. Use the Actor's Issues tab for reproducible problems and the API tab for programmatic access.