How to Scrape Reddit: Posts, Comments, and User Profiles Without an API Key

Collect posts and full comment threads from any public subreddit, search query, or user profile. No Reddit account, no API key, no OAuth setup. Sort by hot, new, top, or rising. Configure comment depth and volume. About $0.75 per 1,000 posts or comments.

Apify dataset view showing Reddit posts with title, author, subreddit, and comment text columns populated across multiple rows
One item per post or comment. Posts and comments share the same dataset, separated by a type field.
Difficulty: Beginner
Time: 5 minutes
Cost: $0.75 per 1,000 items (free tier covers ~6,600 items/month)
Tools: Apify
Try the Reddit Scraper free Browse all NanoScrape actors

In this tutorial

  1. What data you get
  2. Prerequisites
  3. Step 1: Open the actor and sign up
  4. Step 2: Configure subreddits and options
  5. Step 3: Run the actor
  6. Step 4: Export your results
  7. Automate recurring runs with n8n
  8. Common use cases
  9. What it costs
  10. FAQ

What data you get

Each run returns a flat list of items. Posts and comments are separate items in the same dataset, distinguished by a type field. When comments are enabled, the actor outputs each post followed by its comments before moving to the next post.

Post fields

{
  "id": "abc123",
  "type": "post",
  "subreddit": "programming",
  "title": "Show HN: I built a Go-based Reddit scraper",
  "author": "john_doe",
  "text": "Full text of a self post...",
  "url": "https://github.com/example/repo",
  "score": 0,
  "num_comments": null,
  "is_stickied": false,
  "created_utc": "2026-04-25T10:00:00Z",
  "reddit_url": "https://www.reddit.com/r/programming/comments/...",
  "scraped_at": "2026-04-25T10:30:00Z"
}

Comment fields

{
  "id": "xyz789",
  "type": "comment",
  "subreddit": "programming",
  "author": "helpful_user",
  "text": "Great project! Have you considered...",
  "score": 0,
  "parent_id": null,
  "post_id": "abc123",
  "post_title": "Show HN: I built a Go-based Reddit scraper",
  "is_stickied": false,
  "created_utc": "2026-04-25T11:15:00Z",
  "reddit_url": "https://www.reddit.com/r/programming/comments/.../xyz789/",
  "scraped_at": "2026-04-25T11:30:00Z"
}
Note on score and num_comments: Reddit removed access to its JSON endpoints in June 2026. The actor uses Reddit's public Atom feeds (/.rss), which is the only public surface that still works without a registered API app. Atom feeds do not expose vote counts or comment counts, so score is always 0 and num_comments is always null. All other fields (title, author, body text, URLs, timestamps) are identical to what you see on the site.
Source: the example output above is taken directly from the actor README field reference, not a live demo run. The data structure is stable; actual field values depend on which subreddits you scrape.

Prerequisites

STEP 1

Open the actor and sign up

  1. Go to the NanoScrape Reddit Scraper on Apify.
  2. Click Try for free. Sign up with Google or email. It takes about a minute.
  3. Once signed in, the actor opens in Apify Console with the Input tab active.
Apify actor page for the NanoScrape Reddit Scraper showing the title, description, and a Try for free button
The Reddit Scraper actor page on Apify. Click Try for free to open the input editor.
Already have an Apify account? Just open the actor link and it drops you straight into the input editor.
STEP 2

Configure subreddits and options

In the Input tab, click JSON editor at the top right of the panel. Paste a configuration object. The simplest run just needs subreddits:

{
  "subreddits": ["programming", "python", "golang"],
  "sort": "hot",
  "maxResults": 200
}

The full list of input fields:

Apify Console Input tab in JSON editor mode showing subreddits array, sort set to top, includeComments true, and maxResults set to 100
Paste your configuration in the JSON editor. The actor accepts subreddits, a search query, or usernames.
Benchmark before enabling comments: for 100 hot posts in an active subreddit, enabling comments at the default settings can return 5,000 to 10,000 additional items. Run once without comments first to see the post volume, then enable comments if the count looks manageable.
STEP 3

Run the actor

Click Start at the top right. The actor starts immediately. In the live log you will see each subreddit being processed and a running count of items collected. A run collecting 200 posts without comments typically completes in 15 to 30 seconds. With comments at depth 3 and 100 posts, expect one to three minutes.

Apify Console run log view showing the Reddit Scraper processing multiple subreddits with progress messages and item counts
The live run log. Each subreddit is processed in turn, with a running item count.

When the run finishes, the status changes to Succeeded. Click Results to preview the dataset. Filter the table by the type column to see only posts or only comments.

Apify dataset preview showing Reddit results with type, subreddit, title, author, and text columns across multiple rows including both posts and comments
Results preview. Posts and comments are interleaved. Use the type column to filter.
STEP 4

Export your results

From the Results tab, click Export to download the dataset as JSON, CSV, or Excel. For live destinations, use the Integrations panel:

Apify Console Integrations panel with Google Sheets, Airtable, and Webhook options listed for the Reddit Scraper
Built-in integrations push results to Google Sheets, Airtable, webhooks, and other destinations automatically after each run.
Filtering posts vs comments in a spreadsheet: if you are exporting to Google Sheets, add a filter view on the type column. Set it to post to get a clean list of posts with no comment noise, or to comment to read the discussion threads.

Automate recurring runs with n8n

To run the Reddit Scraper on a schedule (for example, pulling new posts from a set of subreddits every morning), connect it to n8n using the verified Apify n8n node.

  1. Open n8n and create a new workflow.
  2. Add a Schedule Trigger node. Set the interval to once a day, once a week, or a cron expression.
  3. Add an Apify node. Set Operation to Run an Actor and get dataset. Set Actor ID to santamaria-automations/reddit-scraper.
  4. In the Input JSON field, paste your configuration. You can reference earlier nodes to pass subreddit names dynamically.
  5. Add a Google Sheets node (or any other destination) to write the results.
  6. Save and activate the workflow.
{
  "subreddits": ["SaaS", "startups", "Entrepreneur"],
  "sort": "new",
  "maxResults": 100,
  "includeComments": false
}

This workflow fires every morning, collects the 100 newest posts from three business subreddits, and appends the rows to a Google Sheet. At $0.075 per run (100 posts x $0.00075 + $0.005 startup), a daily run costs about $2.30 per month.

New to n8n? n8n Cloud has a free trial and includes the Apify node pre-installed. On self-hosted or n8n Desktop, install it once from Settings › Community Nodes with package name @apify/n8n-nodes-apify.

Common use cases

Market research and sentiment analysis

Collect posts and comments from subreddits where your target customers spend time. Run the text through a sentiment classifier or LLM to identify recurring pain points, feature requests, and competitor mentions. The text field on both posts and comments contains the full body text, ready for analysis.

Brand and competitor monitoring

Use searchQuery mode to search for your brand name or a competitor's product across all of Reddit. Schedule the run daily using n8n so you get a fresh feed of mentions every morning, without checking Reddit manually.

{
  "searchQuery": "nanoscrape OR apify scraper",
  "sort": "new",
  "maxResults": 50
}

Content research and topic discovery

Scrape the hot or top posts from subreddits in your niche. The titles and scores give you a direct signal of what the community finds valuable right now. Combine with comment threads to understand the conversation depth behind each topic.

Lead generation from niche subreddits

Subreddits like r/forhire, r/slavelabour, r/hiring, or niche professional communities often have posts from people actively looking for services. Scrape new posts daily, filter by keywords in the title, and route matches to a CRM or Slack notification.

Training data for LLMs and classifiers

Reddit is one of the richest sources of conversational text on the internet. For domain-specific fine-tuning or RLHF datasets, collect posts and comments from relevant subreddits. The post_id and parent_id fields on comment items let you reconstruct conversation pairs for supervised training.

What it costs

100 posts (no comments)             = $0.08  ($0.005 + $0.075)
100 posts + 500 comments            = $0.46  ($0.005 + $0.45)
1,000 posts + 5,000 comments        = $4.51  ($0.005 + $4.50)
Daily new-posts run, 100 posts/day  ~ $2.30/month

The Apify free tier includes $5 of usage credit each month. That covers about 6,600 Reddit items per month (posts or comments) at no charge. A typical market-research run of 200 posts with 10 comments each costs about $1.55.

FAQ

Do I need a Reddit account or API key?

No. The actor uses Reddit's public Atom feeds, which are accessible without authentication. No API key, no OAuth app, no Reddit account is required.

Why is the score field always 0?

Reddit removed access to its /.json endpoints in June 2026. The actor now uses Reddit's public Atom (/.rss) feeds, which are the only remaining way to scrape Reddit without a registered API app. Atom feeds do not expose vote counts, so score is always returned as 0. If you need scores, use Reddit's official OAuth API.

Can I scrape private subreddits?

No. The actor can only access subreddits and posts that are publicly visible without logging in.

How are comments structured?

Comments are separate items in the dataset with type: "comment". Each comment has a post_id and post_title that link it to the parent post. Because Atom feeds do not expose the parent-comment relationship, parent_id is always null and comments come back as a flat list rather than a tree.

Can I search across all of Reddit, not just specific subreddits?

Yes. Use the searchQuery field instead of subreddits. Set sort to relevance, top, new, or hot. The actor will run a Reddit-wide search and return matching posts.

Can I scrape a specific user's posts and comments?

Yes. Use the usernames field with a list of Reddit usernames (without the u/ prefix). The actor scrapes that user's public post and comment history. Note that Reddit applies stricter rate limiting on user profile pages, so some users may return fewer results.

Is scraping Reddit legal?

The actor only accesses data that is publicly visible on Reddit without logging in. The hiQ Labs v. LinkedIn ruling in the US established that scraping public data is not a violation of the Computer Fraud and Abuse Act. Reddit's terms of service restrict automated access, so you take on responsibility for your own use case. Consult a lawyer for specific compliance questions.

Related resources

Try the Reddit Scraper free Browse all NanoScrape actors