Reddit Search Scraper avatar

Reddit Search Scraper

Pricing

from $2.99 / 1,000 search results

Go to Apify Store
Reddit Search Scraper

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

w3crawler

Maintained by Community

Actor 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?

FieldTypeDescription
postId, postFullnamestringBare post ID plus its t3_<postId> fullname.
postTitle, selfTextstringPublic title and optional post body.
permalink, contentUrlstringCanonical Reddit and linked-content URLs.
author, subredditstringPublic author and community metadata.
score, upvoteRatio, numCommentsnumberPublic engagement values.
previewImages, videoData, mediaEmbedobjectPublic media metadata when present.
commentsarrayOptional bounded public comments.
searchQuery, position, sourceListingUrlmixedQuery, rank, and source provenance.
scrapedAtstringISO 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

  1. Open the Actor input tab.
  2. Enter a non-empty searchQuery.
  3. Optionally provide one subreddit name without r/.
  4. Choose a sort and a small maxItems value.
  5. Disable deepScraping for the fastest listing-only run, or enable it for richer post details.
  6. Run the Actor and inspect the default dataset plus the OUTPUT run summary.

Input

FieldTypeDefaultRequiredDescription
searchQuerystring—yesQuery from 1 to 200 characters.
subredditstringemptynoOne public subreddit name.
sortBystringrelevancenorelevance, new, hot, top, or comments.
topTimestringallnoTime window for top sorting.
maxItemsinteger50noExact upper result bound from 1 to 1000.
deepScrapingbooleantruenoFetch public post-detail JSON.
includeCommentsbooleanfalsenoAdd up to 20 public comments per enriched post.
headlessbooleantruenoRun Chromium without a visible window.
proxyConfigurationobjectApify ProxynoOptional 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.