Reddit Public Post & Comment Scraper avatar

Reddit Public Post & Comment Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Reddit Public Post & Comment Scraper

Reddit Public Post & Comment Scraper

Scrape public Reddit posts and comments by subreddit, search term or URL. Get title, text, author, score, awards and timestamps. Perfect for research and social listening. JSON output.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Technical Dost Solutions

Technical Dost Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

What this Actor does

Extract public Reddit post data from subreddit listing pages and post permalinks as clean, structured JSON.

It processes user-provided public Reddit URLs (subreddit listings such as https://www.reddit.com/r/webscraping/, or individual post permalinks), prioritizes JSON-LD / schema.org structured data (DiscussionForumPosting / SocialMediaPosting), and can optionally use a conservative fallback that reads visible public post rows. It normalizes useful fields, applies an optional keyword filter, deduplicates rows by permalink, and saves structured records to the Apify dataset.

Why this Actor is useful

Researchers, analysts, and marketers use this kind of extraction to replace manual browsing, create repeatable monitoring, feed spreadsheets and dashboards, and turn scattered public Reddit pages into a clean, API-ready dataset.

Who this is for

  • Market and trend researchers
  • Community and brand analysts
  • Content and social media teams
  • Product and UX researchers
  • Data teams building public-signal datasets

Common use cases

  • Track new posts across one or more public subreddits
  • Filter posts by keyword (e.g. "pricing", "review")
  • Feed a research dataset or dashboard with fresh public posts
  • Monitor a specific subreddit or topic over time
  • Build recurring public discussion-intelligence datasets

Input

FieldTypeDescription
startUrlsarray (required)Public Reddit subreddit listing pages or post permalinks. Use only pages you may access without login or bypassing access controls.
keywordsarray of stringsOptional keywords. Only posts whose title or text contains at least one keyword (case-insensitive) are kept. Empty = no filter.
maxItemsintegerMaximum rows to save. Default 50, min 1, max 10000.
maxConcurrencyintegerPages processed in parallel. Default 3, min 1, max 20.
extractionModestringstructuredDataOnly or structuredDataWithFallback (default). The fallback safely reads visible public post rows.
requestTimeoutSecsintegerMaximum time per page. Default 30, min 5, max 180.
proxyConfigurationobjectOptional Apify proxy configuration where permitted by your source review.

Output

FieldDescription
postTitleTitle of the Reddit post.
subredditSubreddit name parsed from the URL (e.g. webscraping).
authorPost author username when available.
scorePost score / upvotes when published in structured data.
upvoteRatioUpvote ratio when available.
numCommentsNumber of comments when available.
postTextBody text of the post when available.
postUrlPublic URL of the post.
permalinkReddit permalink of the post.
createdDateDate the post was published.
flairPost flair / section when available.
sourceUrlURL where the data was extracted.
detectedAtTimestamp when this Actor extracted the row.
extractionMethodstructured_data for schema data, or fallback_public_reddit_listing for visible public listings.
confidenceScoreHeuristic confidence based on structured data availability and completeness.
missingFieldsRequired fields that were not available from the source page.

Sample input

{
"startUrls": [
{
"url": "https://www.reddit.com/r/webscraping/"
}
],
"keywords": ["pricing", "review"],
"maxItems": 25,
"maxConcurrency": 3,
"extractionMode": "structuredDataWithFallback",
"requestTimeoutSecs": 30
}

Sample output

{
"postTitle": "How I built a resilient scraper for public listings",
"subreddit": "webscraping",
"author": "example_user",
"score": 128,
"upvoteRatio": null,
"numComments": 34,
"postText": "Sharing my approach to structured-data-first extraction...",
"postUrl": "https://www.reddit.com/r/webscraping/comments/abc123/how_i_built_a_resilient_scraper/",
"permalink": "https://www.reddit.com/r/webscraping/comments/abc123/how_i_built_a_resilient_scraper/",
"createdDate": "2026-06-15T00:00:00.000Z",
"flair": "Tutorial",
"sourceUrl": "https://www.reddit.com/r/webscraping/",
"detectedAt": "2026-06-27T00:00:00.000Z",
"extractionMethod": "structured_data",
"confidenceScore": 0.95,
"missingFields": []
}

Pricing

This Actor uses a pay-per-event model: $0.005 per post result saved to the dataset. You pay only for the structured post rows you receive, which makes recurring monitoring predictable and low-cost.

How to use

Run this Actor on Apify with public Reddit URLs, export the dataset as JSON, CSV, or Excel, or pull it through the Apify API. Connect the output to Google Sheets, Make, Zapier, a webhook, or an internal dashboard. For monitoring, save the input as an Apify task and schedule recurring runs.

Tip: Reddit URLs can be appended with .json to return raw API data, but this Actor is designed to parse the standard public HTML pages you view in a browser. Provide the normal page URLs (for example https://www.reddit.com/r/webscraping/).

Best practices

  • Start with a small set of reviewed public subreddit or post URLs.
  • Use keywords to focus on the topics you care about.
  • Use structuredDataOnly for highest precision; use structuredDataWithFallback for pages that only render visible post rows.
  • Keep maxConcurrency low for cautious, low-footprint runs.
  • Review Reddit's rules and terms before scheduling recurring runs.

Compliance and responsible use

This Actor is for public data only. It must not be used to bypass logins, paywalls, CAPTCHAs, or security systems, to collect private or sensitive personal data, or to support spam or abuse. Only public Reddit pages should be processed here. You are responsible for following applicable laws and Reddit's rules and terms of service.

Limitations

  • Output quality depends on the public structured data available on the source pages.
  • Fallback extraction is intentionally conservative and only looks for visible public post-row patterns. It does not claim universal support.
  • Dates and counts are extracted as published and are not reformatted or converted.
  • Some fields may be empty when the source does not publish them; these appear in missingFields.
  • Website markup and access policies can change.

Troubleshooting

  • Empty output usually means the page has no public structured post data and no visible post-row patterns.
  • Invalid URL errors mean one or more input URLs are malformed.
  • Slow runs can usually be improved by lowering maxConcurrency.
  • Missing fields are source-data limitations, not inferred values.

Changelog

  • v0.1.0: Initial release with structured-data-first extraction, conservative public post-listing fallback, keyword filtering, and confidence scoring.