This tutorial shows how to scrape Reddit comments from specific post URLs into a local CSV. You will import the Reddit Post Comments Scraper template, replace the sample thread JSON URLs, set the export path, validate one post, and troubleshoot the common failure modes before running a larger batch.
Before you run
Prerequisites and Reddit data guardrails
You need UScraper as a local desktop app, a finite list of Reddit post URLs you are allowed to process, a folder for the CSV, and enough time to test one thread before scaling. This guide is for defined post-comment exports, not subreddit discovery or unlimited historical collection.
Start with Reddit's official API reference, Data API Wiki, and Data API Terms when deciding whether your use case should use approved API access, a no-code local workflow, or no automation at all. Public visibility is not the same as permission to republish, sell, enrich profiles, or train models on user-generated comments.
Build a collection plan before you build a scraper: source URLs, purpose, retention period, fields needed, who can access the CSV, and what you will do if Reddit returns a block, login wall, or policy notice.
Choose a path
Best Reddit scraper tools for post comments
There are three practical routes for Reddit post comments: a local no-code workflow, a developer API wrapper, or a hosted actor. The right choice depends on whether you value fast CSV output, programmatic control, or managed infrastructure.
Use the Reddit Post Comments Scraper template when your goal is a spreadsheet-ready export from known thread URLs. It runs in the local desktop app, keeps the workflow visual, and writes a CSV path you control.
Workflow
How the Reddit post comments scraper works
The workflow is intentionally readable: Navigate -> Wait for Page Load -> Sleep -> Inject JavaScript -> Element Exists -> Wait for Element -> Structured Export -> Loop Continue. The Navigate block loops through multiple Reddit thread JSON URLs. Injected JavaScript parses the response, walks top-level comments and nested replies, creates hidden rows in the page, and lets Structured Export read those rows as if they were normal DOM cards.
Import the current Reddit Post Comments Scraper template rather than rebuilding the graph manually. The template page is the download path for the JSON workflow, while this article explains how to operate and validate it.
| Block | Purpose | What to check |
|---|---|---|
| Navigate | Opens each Reddit thread JSON URL | Replace sample URLs with approved post inputs. |
| Wait and Sleep | Gives the response time to render | Keep conservative waits for larger threads. |
| Inject JavaScript | Parses Reddit JSON into exportable rows | Empty rows usually mean blocked or malformed JSON. |
| Element Exists | Confirms generated comment rows exist | False branch should continue the loop without exporting. |
| Structured Export | Appends rows into CSV | Confirm headers, file name, save folder, and append mode. |
| Loop Continue | Advances the multi-URL batch | Remove duplicate URLs before a longer run. |
{
"project": {
"name": "Reddit Post Comments Scraper"
},
"blocks": [
{ "title": "Navigate", "config": { "urls": ["https://api.reddit.com/r/example/comments/post_id/title?raw_json=1&limit=500"] } },
{ "title": "Inject JavaScript", "config": { "waitForCompletion": true, "timeout": 15 } },
{
"title": "Structured Export",
"config": {
"fileName": "reddit-post-comments-scraper.csv",
"rowSelector": "#uscraper-reddit-output .uscraper-comment-row",
"includeHeaders": true,
"fileMode": "append"
}
}
]
}
Runbook
How to scrape Reddit comments to CSV
Import the template
Open the Reddit comments scraper template, download the JSON workflow, and import it into UScraper.
Prepare Reddit post inputs
Convert each approved post into a thread JSON URL, then keep the first run to one or two posts. A small batch makes policy issues, blank responses, and row-shape problems obvious.
Set the export path
In Structured Export, confirm reddit-post-comments-scraper.csv, headers enabled, append mode, and a project-specific folder. Use a new file for each study or client.
Run one post first
Watch the browser response, then check that generated .uscraper-comment-row elements exist before export. Do not treat fallback preview rows as live Reddit data.
Validate before scaling
Open the CSV, compare several comment links and timestamps against the source thread, then expand the URL list only if the first export is accurate.
Output
CSV fields exported by the Reddit comments scraper
The JSON workflow is the authoritative definition of the export. In plain English, the template writes one row per top-level comment and repeats post context beside the comment data. Reply fields can be blank when no nested reply exists.
| Column group | Fields | Why it matters |
|---|---|---|
| Post context | subreddit, post_title, post_upvote, post_author, post_text, number_of_comments, post_image | Lets you filter rows by thread, topic, author, score, or image-backed posts. |
| Main comment | comment_link, main_comment_author, main_comment_post_time, main_comment_upvote, main_comment_text, main_comment_image | Preserves the primary discussion unit and a link back to source context. |
| First reply | reply_user, reply_text, reply_upvote, reply_time, reply_image | Useful for quick back-and-forth analysis without unpacking every branch manually. |
| Deepest nested comment | last_level_commment_author, last_level_comment_text, last_level_upvote, last_level_comment_time | Captures the deepest detected branch for threads where the argument evolves below the first reply. |
reddit-post-comments-scraper.csvColumn
subreddit
Community name returned by the post or comment object.
Column
post_title
Title of the parent Reddit post.
Column
comment_link
Permalink for the main comment.
Column
main_comment_author
Top-level comment author.
Column
main_comment_text
Top-level comment body text.
Column
reply_text
First nested reply text, when present.
Column
last_level_comment_text
Deepest detected nested comment text.
Column
main_comment_post_time
Comment timestamp converted from returned data.
Validation
Common issues and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| CSV contains only sample dogpictures rows | The bundled fallback ran for the preview URL | Replace the sample URL and label fallback rows clearly in QA notes. |
| No rows exported | Reddit did not return accessible JSON or the response shape changed | Open the URL manually, inspect the response, and pause if blocked. |
| Reply columns are empty | The comment had no reply, or nested data was not returned | This is normal for many top-level comments. Validate against the source link. |
| Duplicate rows | Append mode reran the same URL list | Start a fresh CSV or dedupe by comment_link and main_comment_text. |
| Counts do not match Reddit's visible total | Reddit totals include deleted, filtered, collapsed, or inaccessible comments | Report exported rows as captured comments, not guaranteed full thread totals. |
For adjacent workflows, browse the UScraper templates library, pair this with Reddit Search Scraper for discovery, or read more scraper tutorials in the UScraper blog.
Frequently asked questions
Public Reddit comments can still be governed by Reddit terms, Data API rules, subreddit expectations, copyright, privacy law, and your reuse case. Use approved access, keep batches measured, avoid private or restricted content, and get legal review before publishing, selling, or training models on exported data.

